drophtml-mcp 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.js +12 -0
- package/package.json +1 -1
package/dist/app.js
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* DROPHTML_BASE_URL 대상 DropHTML 인스턴스 (기본 https://drophtml.app; 로컬 개발 시 http://127.0.0.1:8000 로 덮어씀)
|
|
14
14
|
* DROPHTML_ADMIN_TOKEN (선택) 운영자 삭제/모더레이션용 ADMIN_TOKEN
|
|
15
15
|
* DROPHTML_TIMEOUT (선택) 요청 타임아웃 초 (기본 30; 숫자가 아니거나 0 이하면 30으로 폴백)
|
|
16
|
+
* DROPHTML_USER_AGENT (선택) 요청 User-Agent 재정의 (기본은 Cloudflare 봇 보호 통과용 브라우저 호환 UA)
|
|
16
17
|
* DROPHTML_MCP_TRANSPORT stdio | streamable-http (기본 stdio)
|
|
17
18
|
* DROPHTML_MCP_HOST http transport 바인드 호스트 (기본 127.0.0.1)
|
|
18
19
|
* DROPHTML_MCP_PORT http transport 포트 (기본 8765)
|
|
@@ -36,6 +37,15 @@ const TIMEOUT_MS = TIMEOUT_SECONDS * 1000;
|
|
|
36
37
|
// 버전은 package.json 이 단일 소스다(dist/app.js 기준 ../package.json —
|
|
37
38
|
// npm 배포물에도 package.json 은 항상 포함되므로 어디서든 존재한다).
|
|
38
39
|
const PKG_VERSION = createRequire(import.meta.url)("../package.json").version;
|
|
40
|
+
// 운영 도메인(drophtml.app)은 Cloudflare 뒤에 있고, Bot Fight Mode 는 Node/undici 의
|
|
41
|
+
// 기본 UA(비브라우저)를 봇으로 보고 403 으로 차단한다 — 브라우저를 흉내낸 요청은 통과한다.
|
|
42
|
+
// 그래서 브라우저 호환 UA 를 기본으로 실어 정상 클라이언트로 통과시키되, 뒤에
|
|
43
|
+
// DropHTML-MCP/<버전> 토큰을 붙여 이 클라이언트임을 정직하게 밝힌다(제품 토큰 덧붙이기는
|
|
44
|
+
// 브라우저·확장도 하는 표준 관행이라 봇 판정에 걸리지 않는다). Cloudflare WAF 에서 자체
|
|
45
|
+
// UA 를 허용 목록에 넣었다면 DROPHTML_USER_AGENT 로 재정의하면 된다.
|
|
46
|
+
const USER_AGENT = process.env.DROPHTML_USER_AGENT ??
|
|
47
|
+
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 " +
|
|
48
|
+
`(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 DropHTML-MCP/${PKG_VERSION}`;
|
|
39
49
|
function errMsg(e) {
|
|
40
50
|
return e instanceof Error ? e.message : String(e);
|
|
41
51
|
}
|
|
@@ -53,6 +63,8 @@ async function doFetch(method, path, opts = {}) {
|
|
|
53
63
|
return await fetch(url, {
|
|
54
64
|
method,
|
|
55
65
|
headers: {
|
|
66
|
+
// Cloudflare 봇 보호 통과용 기본 UA. opts.headers 를 뒤에 펼쳐 per-call 재정의를 허용한다.
|
|
67
|
+
"user-agent": USER_AGENT,
|
|
56
68
|
...(hasBody ? { "content-type": "application/json" } : {}),
|
|
57
69
|
...(opts.headers ?? {}),
|
|
58
70
|
},
|
package/package.json
CHANGED