@zonuexe/techbook-mcp 0.2.1 → 0.2.2

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.
@@ -29,7 +29,8 @@
29
29
  "Bash(wc -c tests/fixtures/impress-detail-*.html)",
30
30
  "Bash(git -C /Users/megurine/repo/js/techbook-mcp status)",
31
31
  "Bash(git -C /Users/megurine/repo/js/techbook-mcp diff)",
32
- "Bash(git:*)"
32
+ "Bash(git:*)",
33
+ "Bash(npm pkg:*)"
33
34
  ]
34
35
  }
35
36
  }
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.2] - 2026-04-12
11
+
12
+ ### Fixed
13
+
14
+ - `npm publish` 前に `dist/` が自動ビルドされるよう `prepublishOnly` スクリプトを追加
15
+
10
16
  ## [0.2.1] - 2026-04-12
11
17
 
12
18
  ### Fixed
@@ -29,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
29
35
 
30
36
  - テストを vitest から `node:test` + `node:assert` に移行(Node.js・Bun・Deno で共通実行可能に)
31
37
 
32
- [Unreleased]: https://github.com/zonuexe/techbook-mcp/compare/v0.2.1...HEAD
38
+ [Unreleased]: https://github.com/zonuexe/techbook-mcp/compare/v0.2.2...HEAD
39
+ [0.2.2]: https://github.com/zonuexe/techbook-mcp/compare/v0.2.1...v0.2.2
33
40
  [0.2.1]: https://github.com/zonuexe/techbook-mcp/compare/v0.2.0...v0.2.1
34
41
  [0.2.0]: https://github.com/zonuexe/techbook-mcp/releases/tag/v0.2.0
@@ -1 +1 @@
1
- {"version":3,"file":"tatsu-zine.d.ts","sourceRoot":"","sources":["../../../src/adapters/publishers/tatsu-zine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,2BAA2B,CAAC;AA4BjF,eAAO,MAAM,gBAAgB,EAAE,gBAoG9B,CAAC"}
1
+ {"version":3,"file":"tatsu-zine.d.ts","sourceRoot":"","sources":["../../../src/adapters/publishers/tatsu-zine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,2BAA2B,CAAC;AA2CjF,eAAO,MAAM,gBAAgB,EAAE,gBA8G9B,CAAC"}
@@ -10,6 +10,20 @@ function parseAuthors(text) {
10
10
  .map(part => part.replace(/\s*[((][^))]*[))]\s*$/, "").trim())
11
11
  .filter(Boolean);
12
12
  }
13
+ /**
14
+ * ページネーションリンクから最終ページ番号を取得する。
15
+ * <a class="btn-pagination" href="/books?page=11">最後へ</a>
16
+ */
17
+ function detectLastPage(doc) {
18
+ let max = 1;
19
+ for (const a of doc.select("a.btn-pagination")) {
20
+ const href = a.attr("href") ?? "";
21
+ const m = href.match(/[?&]page=(\d+)/);
22
+ if (m)
23
+ max = Math.max(max, parseInt(m[1], 10));
24
+ }
25
+ return max;
26
+ }
13
27
  /**
14
28
  * "3,300円 (3,000円+税)" → 3300
15
29
  * 最初の数値が税込価格。
@@ -25,44 +39,53 @@ export const tatsuZineAdapter = {
25
39
  name: "達人出版会",
26
40
  baseUrl: BASE_URL,
27
41
  async search(query, deps) {
28
- const word = [query.title, query.author].filter(Boolean).join(" ");
29
- if (!word)
42
+ // 検索APIがないため書籍一覧からローカルフィルタリングする
43
+ // 著者のみの検索は非対応
44
+ if (!query.title)
30
45
  return [];
31
- // 検索フォーム: <form method="get" action="/books/"><input name="search">
32
- const url = `${BASE_URL}/books/?search=${encodeURIComponent(word)}`;
33
- const html = await fetchText(url, deps);
34
- const doc = deps.parser.parse(html);
35
- // 書籍アイテムのHTML構造:
36
- // <a href="/books/{slug}"><img src="/images/books/{id}/cover_s.jpg" alt="Title"></a>
37
- // <h3><a href="/books/{slug}">Title</a></h3>
38
- // <p>Author(著), ...</p>
39
- //
40
- // タイトルリンクと著者段落を位置で対応付ける
41
- const titleLinks = doc.select("h3 a[href]").filter(a => {
42
- const href = a.attr("href") ?? "";
43
- return href.startsWith("/books/") && !href.startsWith("/books/pub/");
44
- });
45
- const authorParagraphs = doc.select("h3 + p");
46
+ const titleKeyword = query.title.toLowerCase();
47
+ const authorKeyword = query.author?.toLowerCase();
48
+ const limit = query.limit ?? 10;
49
+ // 書籍一覧ページ: <article class="book"> が各書籍アイテム、ページネーションあり
50
+ const firstHtml = await fetchText(`${BASE_URL}/books/`, deps);
51
+ const firstDoc = deps.parser.parse(firstHtml);
52
+ const lastPage = detectLastPage(firstDoc);
46
53
  const results = [];
47
- for (let i = 0; i < titleLinks.length; i++) {
48
- const titleLink = titleLinks[i];
49
- const title = titleLink.text().trim();
50
- const href = titleLink.attr("href");
51
- if (!title || !href)
52
- continue;
53
- const bookUrl = resolveUrl(BASE_URL, href);
54
- const authorText = authorParagraphs[i]?.text().trim() ?? "";
55
- const authors = authorText ? parseAuthors(authorText) : [];
56
- results.push({
57
- title,
58
- authors,
59
- publisher: "達人出版会",
60
- url: bookUrl,
61
- // 達人出版会は全書籍で購入者情報を各ページに印字 (ソーシャルDRM)
62
- ebookStores: [{ name: "達人出版会", url: bookUrl, drm: "social" }],
63
- });
54
+ const docs = [[firstHtml, firstDoc]];
55
+ // ページ2以降を先行して取得しておく(キャッシュ経由)
56
+ for (let page = 2; page <= lastPage; page++) {
57
+ const html = await fetchText(`${BASE_URL}/books?page=${page}`, deps);
58
+ docs.push([html, deps.parser.parse(html)]);
59
+ }
60
+ outer: for (const [, doc] of docs) {
61
+ for (const article of doc.select("article.book")) {
62
+ const titleEl = article.find("h3[itemprop='name'] a")[0];
63
+ if (!titleEl)
64
+ continue;
65
+ const title = titleEl.text().trim();
66
+ if (!title.toLowerCase().includes(titleKeyword))
67
+ continue;
68
+ const authorText = article.find("p[itemprop='author']")[0]?.text().trim() ?? "";
69
+ if (authorKeyword && !authorText.toLowerCase().includes(authorKeyword))
70
+ continue;
71
+ const href = titleEl.attr("href");
72
+ if (!href)
73
+ continue;
74
+ const bookUrl = resolveUrl(BASE_URL, href);
75
+ const authors = authorText ? parseAuthors(authorText) : [];
76
+ results.push({
77
+ title,
78
+ authors,
79
+ publisher: "達人出版会",
80
+ url: bookUrl,
81
+ // 達人出版会は全書籍で購入者情報を各ページに印字 (ソーシャルDRM)
82
+ ebookStores: [{ name: "達人出版会", url: bookUrl, drm: "social" }],
83
+ });
84
+ if (results.length >= limit)
85
+ break outer;
86
+ }
64
87
  }
65
- return results.slice(0, query.limit ?? 10);
88
+ return results;
66
89
  },
67
90
  async getDetail(url, deps) {
68
91
  const html = await fetchText(url, deps);
@@ -1 +1 @@
1
- {"version":3,"file":"tatsu-zine.js","sourceRoot":"","sources":["../../../src/adapters/publishers/tatsu-zine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tatsu-zine.js","sourceRoot":"","sources":["../../../src/adapters/publishers/tatsu-zine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zonuexe/techbook-mcp",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "MCP server for searching Japanese technical book bibliographic information",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "type": "module",
@@ -8,11 +8,12 @@
8
8
  ".": "./dist/main.js"
9
9
  },
10
10
  "bin": {
11
- "techbook-mcp": "./dist/main.js"
11
+ "techbook-mcp": "dist/main.js"
12
12
  },
13
13
  "scripts": {
14
14
  "build": "tsc",
15
15
  "lint": "oxlint --config .oxlintrc.json src/",
16
+ "prepublishOnly": "npm run build",
16
17
  "test": "node --import tsx/esm --test 'tests/**/*.test.ts'",
17
18
  "test:watch": "node --import tsx/esm --test --watch 'tests/**/*.test.ts'"
18
19
  },