amenbo 0.1.4 → 0.2.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/README.en.md +188 -0
- package/README.md +13 -1
- package/dist/cache.d.ts +31 -1
- package/dist/cache.js +67 -7
- package/dist/cache.js.map +1 -1
- package/dist/cli.d.ts +3 -1
- package/dist/cli.js +59 -4
- package/dist/cli.js.map +1 -1
- package/dist/core.d.ts +6 -0
- package/dist/core.js +125 -38
- package/dist/core.js.map +1 -1
- package/dist/diff.d.ts +1 -1
- package/dist/diff.js +29 -9
- package/dist/diff.js.map +1 -1
- package/dist/errors.d.ts +11 -0
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -1
- package/dist/extract/dataSources.js +17 -4
- package/dist/extract/dataSources.js.map +1 -1
- package/dist/extract/outline.js +15 -1
- package/dist/extract/outline.js.map +1 -1
- package/dist/extract/pdf.js +2 -2
- package/dist/extract/pruning.d.ts +4 -2
- package/dist/extract/pruning.js +36 -7
- package/dist/extract/pruning.js.map +1 -1
- package/dist/extract/qualityScore.d.ts +3 -2
- package/dist/extract/qualityScore.js +8 -3
- package/dist/extract/qualityScore.js.map +1 -1
- package/dist/fetcher/browser.js +15 -1
- package/dist/fetcher/browser.js.map +1 -1
- package/dist/fetcher/http.d.ts +12 -1
- package/dist/fetcher/http.js +15 -4
- package/dist/fetcher/http.js.map +1 -1
- package/dist/fetcher/index.d.ts +6 -0
- package/dist/fetcher/index.js +18 -13
- package/dist/fetcher/index.js.map +1 -1
- package/dist/installBrowser.d.ts +11 -0
- package/dist/installBrowser.js +30 -0
- package/dist/installBrowser.js.map +1 -0
- package/dist/links.d.ts +12 -0
- package/dist/links.js +32 -17
- package/dist/links.js.map +1 -1
- package/dist/politeness.d.ts +23 -3
- package/dist/politeness.js +27 -6
- package/dist/politeness.js.map +1 -1
- package/dist/screenshot.d.ts +2 -0
- package/dist/screenshot.js +14 -4
- package/dist/screenshot.js.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.js +67 -26
- package/dist/server.js.map +1 -1
- package/package.json +3 -6
package/dist/server.js
CHANGED
|
@@ -17,27 +17,55 @@ import { fileURLToPath } from "node:url";
|
|
|
17
17
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
18
18
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
19
19
|
import { z } from "zod";
|
|
20
|
-
import { formatLinksResponse, handleFetchTool, handleScreenshotTool, politeness, resolvePackageVersion, } from "./core.js";
|
|
20
|
+
import { formatLinksResponse, handleFetchTool, handleScreenshotTool, politeness, registerCoreShutdownHandlers, resolvePackageVersion, } from "./core.js";
|
|
21
21
|
import { AmenboError } from "./errors.js";
|
|
22
22
|
import { discoverLinks } from "./links.js";
|
|
23
|
-
|
|
23
|
+
// テスト用export(既存スタイルに合わせた最小のテスト可能化。InMemoryTransport経由の
|
|
24
|
+
// MCP progress notifications統合テストでclient.connect()の相手として使う)。
|
|
25
|
+
export const server = new McpServer({ name: "amenbo", version: resolvePackageVersion() });
|
|
26
|
+
/**
|
|
27
|
+
* MCP progress notifications: リクエストにprogressToken(_meta.progressToken)が付いている
|
|
28
|
+
* クライアントに対してのみ、進捗メッセージをホストUIへ通知するコールバックを組み立てる。
|
|
29
|
+
* progressTokenが無い(=進捗通知に対応しない/希望しないクライアント)場合はundefinedを返し、
|
|
30
|
+
* core.ts側の各通知ポイントは呼び出し自体を行わない(条件分岐のみでオーバーヘッドは実質ゼロ)。
|
|
31
|
+
*
|
|
32
|
+
* sendNotificationはtotalを送らない(処理量が事前に不定なため)。失敗はツール本処理を
|
|
33
|
+
* 壊さないようベストエフォートで握りつぶし、原因のみstderrへ記録する。
|
|
34
|
+
*/
|
|
35
|
+
function buildProgressNotifier(extra) {
|
|
36
|
+
const progressToken = extra._meta?.progressToken;
|
|
37
|
+
if (progressToken === undefined)
|
|
38
|
+
return undefined;
|
|
39
|
+
let progress = 0;
|
|
40
|
+
return (message) => {
|
|
41
|
+
progress += 1;
|
|
42
|
+
void extra.sendNotification({ method: "notifications/progress", params: { progressToken, progress, message } }).catch((error) => {
|
|
43
|
+
console.error("進捗通知(notifications/progress)の送信に失敗しました:", error);
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
}
|
|
24
47
|
server.registerTool("fetch", {
|
|
25
48
|
title: "Fetch a web page as Markdown",
|
|
26
|
-
description: "
|
|
27
|
-
"mode: auto(
|
|
28
|
-
"
|
|
49
|
+
description: "Fetch a web page (Japanese-web-native) as low-impact, token-efficient Markdown. Built-in robots.txt compliance, rate limiting, and caching. " +
|
|
50
|
+
"mode: auto (default; quality score picks Markdown or screenshot) / markdown / outline (heading summary) / screenshot. " +
|
|
51
|
+
"Refetching a cached URL returns cache: unchanged, or diff (changed sections only), to save tokens. PDF URLs are handled automatically.",
|
|
29
52
|
inputSchema: {
|
|
30
|
-
url: z.string().url().describe("
|
|
31
|
-
mode: z.enum(["auto", "markdown", "outline", "screenshot"]).optional().describe("
|
|
32
|
-
selector: z.string().optional().describe("
|
|
33
|
-
section: z.string().optional().describe("outline
|
|
34
|
-
page: z.number().int().positive().optional().describe("
|
|
35
|
-
max_tokens: z.number().int().positive().optional().describe("
|
|
36
|
-
force_full: z.boolean().optional().describe("
|
|
53
|
+
url: z.string().url().describe("Target URL (http/https only; PDF supported)"),
|
|
54
|
+
mode: z.enum(["auto", "markdown", "outline", "screenshot"]).optional().describe("Default: auto"),
|
|
55
|
+
selector: z.string().optional().describe("CSS selector to narrow the content"),
|
|
56
|
+
section: z.string().optional().describe("Section ID obtained from outline mode; returns only that section's Markdown"),
|
|
57
|
+
page: z.number().int().positive().optional().describe("Page number (default 1)"),
|
|
58
|
+
max_tokens: z.number().int().positive().optional().describe("Approximate token budget per page (default 8000)"),
|
|
59
|
+
force_full: z.boolean().optional().describe("Default false. If true, disables diff responses (unchanged/diff) and boilerplate-block removal, always returning the full content"),
|
|
37
60
|
},
|
|
38
|
-
|
|
61
|
+
annotations: {
|
|
62
|
+
readOnlyHint: true,
|
|
63
|
+
openWorldHint: true,
|
|
64
|
+
},
|
|
65
|
+
}, async ({ url, mode, selector, section, page, max_tokens: maxTokens, force_full: forceFull }, extra) => {
|
|
39
66
|
try {
|
|
40
|
-
const
|
|
67
|
+
const onProgress = buildProgressNotifier(extra);
|
|
68
|
+
const content = await handleFetchTool({ url, mode, selector, section, page, max_tokens: maxTokens, force_full: forceFull, onProgress });
|
|
41
69
|
return { content };
|
|
42
70
|
}
|
|
43
71
|
catch (error) {
|
|
@@ -50,14 +78,19 @@ server.registerTool("fetch", {
|
|
|
50
78
|
});
|
|
51
79
|
server.registerTool("links", {
|
|
52
80
|
title: "List links from a page (sitemap/RSS-first)",
|
|
53
|
-
description: "sitemap.xml/RSS
|
|
81
|
+
description: "Low-impact link discovery: prefers sitemap.xml / RSS / Atom feeds when available, otherwise extracts in-page links.",
|
|
54
82
|
inputSchema: {
|
|
55
|
-
url: z.string().url().describe("
|
|
56
|
-
filter: z.string().optional().describe("URL
|
|
83
|
+
url: z.string().url().describe("Starting URL"),
|
|
84
|
+
filter: z.string().optional().describe("Substring match against URL/link text, or a glob using *"),
|
|
85
|
+
},
|
|
86
|
+
annotations: {
|
|
87
|
+
readOnlyHint: true,
|
|
88
|
+
openWorldHint: true,
|
|
57
89
|
},
|
|
58
|
-
}, async ({ url, filter }) => {
|
|
90
|
+
}, async ({ url, filter }, extra) => {
|
|
59
91
|
try {
|
|
60
|
-
const
|
|
92
|
+
const onProgress = buildProgressNotifier(extra);
|
|
93
|
+
const result = await discoverLinks(url, politeness, { ...(filter ? { filter } : {}), onProgress });
|
|
61
94
|
return { content: [{ type: "text", text: formatLinksResponse(url, result) }] };
|
|
62
95
|
}
|
|
63
96
|
catch (error) {
|
|
@@ -70,16 +103,21 @@ server.registerTool("links", {
|
|
|
70
103
|
});
|
|
71
104
|
server.registerTool("screenshot", {
|
|
72
105
|
title: "Capture a tiled screenshot of a web page",
|
|
73
|
-
description: "
|
|
106
|
+
description: "For explicit visual inspection. Renders the page with a headless browser and returns tiled PNG screenshots. Built-in robots.txt compliance, rate limiting, and caching.",
|
|
74
107
|
inputSchema: {
|
|
75
|
-
url: z.string().url().describe("
|
|
76
|
-
fullPage: z.boolean().optional().describe("
|
|
77
|
-
width: z.number().int().positive().optional().describe("
|
|
78
|
-
scale: z.number().min(0.5).max(1.0).optional().describe("
|
|
108
|
+
url: z.string().url().describe("Target URL (http/https only)"),
|
|
109
|
+
fullPage: z.boolean().optional().describe("Default true. If false, captures only the first viewport (1 tile)"),
|
|
110
|
+
width: z.number().int().positive().optional().describe("Tile width in px (default 1280)"),
|
|
111
|
+
scale: z.number().min(0.5).max(1.0).optional().describe("Resolution scale (0.5-1.0, default 1.0); lower reduces image tokens"),
|
|
112
|
+
},
|
|
113
|
+
annotations: {
|
|
114
|
+
readOnlyHint: true,
|
|
115
|
+
openWorldHint: true,
|
|
79
116
|
},
|
|
80
|
-
}, async ({ url, fullPage, width, scale }) => {
|
|
117
|
+
}, async ({ url, fullPage, width, scale }, extra) => {
|
|
81
118
|
try {
|
|
82
|
-
const
|
|
119
|
+
const onProgress = buildProgressNotifier(extra);
|
|
120
|
+
const content = await handleScreenshotTool({ url, fullPage, width, scale, onProgress });
|
|
83
121
|
return { content };
|
|
84
122
|
}
|
|
85
123
|
catch (error) {
|
|
@@ -92,6 +130,9 @@ server.registerTool("screenshot", {
|
|
|
92
130
|
});
|
|
93
131
|
/** MCP stdioサーバーを起動する。CLI(cli.ts)が引数なし/`serve`サブコマンド時に呼ぶ後方互換経路でもある。 */
|
|
94
132
|
export async function runServer() {
|
|
133
|
+
// レビュー指摘対応: exit/SIGINT/SIGTERMハンドラ(core.ts)はサーバー常駐プロセスでのみ
|
|
134
|
+
// 必要なため、importするだけで走るモジュールトップレベルではなくここで明示的に登録する。
|
|
135
|
+
registerCoreShutdownHandlers();
|
|
95
136
|
const transport = new StdioServerTransport();
|
|
96
137
|
await server.connect(transport);
|
|
97
138
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "amenbo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"mcpName": "io.github.Rererr/amenbo",
|
|
5
5
|
"description": "Skims the web without making waves — a Japanese-web-native MCP server for low-impact, token-efficient web collection",
|
|
6
6
|
"type": "module",
|
|
@@ -25,22 +25,20 @@
|
|
|
25
25
|
"dist"
|
|
26
26
|
],
|
|
27
27
|
"engines": {
|
|
28
|
-
"node": ">=
|
|
28
|
+
"node": ">=22.13.0"
|
|
29
29
|
},
|
|
30
30
|
"scripts": {
|
|
31
31
|
"build": "tsc",
|
|
32
32
|
"dev": "tsx src/server.ts",
|
|
33
33
|
"dev:cli": "tsx src/cli.ts",
|
|
34
34
|
"test": "vitest run",
|
|
35
|
-
"typecheck": "tsc --noEmit"
|
|
36
|
-
"postinstall": "playwright install chromium"
|
|
35
|
+
"typecheck": "tsc --noEmit"
|
|
37
36
|
},
|
|
38
37
|
"dependencies": {
|
|
39
38
|
"@joplin/turndown-plugin-gfm": "^1.0.67",
|
|
40
39
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
41
40
|
"@mozilla/readability": "^0.6.0",
|
|
42
41
|
"@napi-rs/canvas": "^1.0.2",
|
|
43
|
-
"better-sqlite3": "^12.11.1",
|
|
44
42
|
"encoding-japanese": "^2.2.0",
|
|
45
43
|
"linkedom": "^0.18.13",
|
|
46
44
|
"pdfjs-dist": "^6.1.200",
|
|
@@ -51,7 +49,6 @@
|
|
|
51
49
|
"zod": "^4.4.3"
|
|
52
50
|
},
|
|
53
51
|
"devDependencies": {
|
|
54
|
-
"@types/better-sqlite3": "^7.6.13",
|
|
55
52
|
"@types/encoding-japanese": "^2.2.1",
|
|
56
53
|
"@types/node": "^26.1.1",
|
|
57
54
|
"@types/turndown": "^5.0.6",
|