zonuexe/techbook-mcp
v0.7.0AGPL-3.0-or-later
MCP server for searching Japanese technical book bibliographic information
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.7.0 - 2026-08-09
Added
- 全ツールに
readOnlyHint/openWorldHintアノテーションを付与し、クライアントがツールの性質(読み取り専用・外部サイトへのアクセスの有無)を判別できるようにした - 各ツールに
outputSchemaを定義し、tools/callの応答に構造化データ(structuredContent)を含めるようにした。従来通りのJSON文字列表現(content)も維持する - Agent Plugins 仕様(agent-plugins.org)準拠の
plugin.json/mcp.jsonを追加し、対応クライアントから本サーバーをプラグインとして検出・起動できるようにした
Changed
- MCP SDK を v1 (
@modelcontextprotocol/sdk) から v2 (@modelcontextprotocol/server) に移行した
Fixed
- 引数不備・未知のツール名のエラーを、実装依存の内部エラー(
-32603)ではなく JSON-RPC 仕様通りの Invalid params(-32602)で返すようにした
Security
- TypeScript を 7 系にアップデートし、推移的依存(cheerio 経由の undici)の既知の脆弱性を解消した(
npm audit0 件)
0.6.0 - 2026-07-06
Added
- IPA(情報処理推進機構)(
ipa) アダプターを追加。アーカイブ刊行物(SEC BOOKS・情報セキュリティ白書・ソフトウェア開発データ白書・各種ガイド)を書名でローカルフィルタし、書誌情報を取得する。無償配布 PDF のためebookStoresは DRM フリー、旧刊の ISBN-10 は ISBN-13 に変換、税抜表記の定価は税込整数に換算する
0.5.1 - 2026-06-29
Added
- C&R研究所 (
c-r) アダプターを追加。公式サイト c-r.com を正典として書名・著者・ISBN・価格を取得する。価格は税抜表記(2,720円+税)を税込整数に換算し、電子書籍の購入動線は本の森.JP(マイナビ出版 manatee 基盤)をebookStoresに充てる
0.5.0 - 2026-06-21
Added
BookRecordにsubtitle(副題)・alternativeTitle(並列タイトル・別言語タイトル) を追加。openBD の ISBD 表記書名(本タイトル = 並列タイトル : 副題)を構造化し、" : "を副題、" = "を並列タイトルとして分離するresolve_book/resolve_booksのvalidationにisbnMatches(要求 ISBN と返却 ISBN の一致)を追加し、bookがある限り取得元(source)に依存せず常に付与するようにした。評価できない項目はnullで明示する(呼び出し側が統一的にパースできる)- openBD の発行日が月精度(
YYYYMM)の場合もpublishedAtをYYYY-MM-01形式で返すようにした
Changed
validation.editionDiffersは ISBN が一致しているとき常にfalseを返すようにした(ISBN で版が確定するため。書名表記の差はtitleExactで表す)resolve_book/resolve_booksの検索経路で返すbookから、トップレベルと重複していたmatchScoreを除去した(matchScoreはトップレベルのみ)- スクレイピング由来の改行・連続空白が書名に混入していたのを、出力時に単一スペースへ畳むようにした
Fixed
resolve_book/resolve_booksで、ISBN を指定したのに解決できず書名検索へフォールバックした際、要求と異なる版(別 ISBN)をconfidence: highのまま黙って返していた問題を修正。要求 ISBN と一致しない場合はconfidenceを下げ、validation.isbnMatches: falseとreasonで警告する- openBD 由来の著者が、生年つきの図書館見出し形式(
姓, 名, 1983-)のまま返ることがあった問題を修正(姓 名に整形し生年を除去)
Security
- 推移的依存(cheerio 経由の undici、
@modelcontextprotocol/sdk経由の hono)の既知の脆弱性を解消(npm audit0 件)
0.4.0 - 2026-06-03
Added
- 役割つきの著者情報
BookRecord.contributors({ name, role }[]、role はauthor/translator/supervisor/editor)を追加。openBD の ONIXContributorから取得し、PersonName("姓, 名"形式)を整形(西洋名は "First Last"、和名は "姓 名")する。authors(フラット配列・後方互換)も ONIX 由来のクリーンな名前で埋める resolve_bookのvalidationを拡張:titleExact/sameWork(同一作品らしさ 0..1、版表記を畳んで照合)/editionDiffers(同一作品だが版表記が異なる)を追加。同一作品の版違いと「誤ISBN(別作品)」を呼び出し側が区別できる(isbnTitleAgreeは後方互換のため維持)
Changed
- openBD 由来の著者を
summary.author(生年・出版社が混入しがち)ではなく ONIXContributorから取得するようにし、["Boswell","Dustin Foucher",…]のような分割・混入を解消 - 出版社ページに既にある Amazon 購入動線(
ebookStoresの Amazon リンク)からasinを自動導出するようにし、より多くの書籍で ASIN を返す(追加の HTTP リクエストなし。Kindle の ASIN を紙の ASIN=ISBN-10 より優先) - 技術評論社(gihyo)の
get_book_detailが電子版ページ(/dp/ebook/)でも公式の/book/ページを辿って ASIN・電子書籍ストアを取得するようにした(電子版ページには Amazon 動線が無いため) - マナティ(manatee)の
get_book_detailが、Amazon 動線が無い電子直販ページから公式のマイナビブックスEC(/ec/products/)ページを辿って ASIN を取得するようにした
Fixed
- 技術評論社(gihyo)の
get_book_detailで、電子版 ISBN(/dp/ebook/)を渡すと API が紙版 ISBN をキーに返すためにエントリ取得に失敗していた問題を修正(キー不一致時は先頭エントリを採用)
0.3.3 - 2026-06-03
Added
resolve_bookツールを追加。手がかり(ISBN・書名・著者)から正規の1冊を確信度つきで同定する。ISBN があれば openBD→出版社→カーリルで解決し、title も渡すと解決結果と照合して版違い・誤ISBN を検出する(validation.isbnTitleAgree)。返り値にstatus(matched/ambiguous/not_found)・confidence(high/medium/low)・sourceを含み、自動採用の可否を判断しやすくするresolve_booksツールを追加(resolve_bookの一括版)。ローカル蔵書への一括メタデータ付与向けに、入力順に揃った結果配列を返す
Fixed
- 一部の実行環境・プロキシ環境で HTTP レスポンスの
Content-Encoding: gzipが自動解凍されず、gzip の生バイトをJSON.parse/HTML パースしてエラーや空結果になる問題を修正(get_book_by_isbnが「is not valid JSON」で失敗、JSON API 系アダプタがエラー、HTML ローカルフィルタ型が無言で 0 件になる等)。gzip マジックバイトを検出した場合は手動で解凍するフォールバックを追加 buildがコンパイル前にdist/をクリーンするようにし、ソース削除後の古い生成物が npm パッケージに混入しないようにした
0.3.2 - 2026-06-03
Fixed
- SEshop(翔泳社)の
search_books結果に著者・ISBN・紹介文が含まれていなかった問題を修正(検索結果の各書籍について詳細ページから著者・ISBN・紹介文を補完する。ISBN が付くことで openBD による補完も有効になる)
0.3.1 - 2026-06-02
Fixed
- MCP サーバーがクライアントに申告する
versionが実際のパッケージバージョンと一致せず0.1.0に固定されていた問題を修正(HTTPUser-Agentも同様に固定されていた。src/version.tsの単一定数を参照するよう一元化)
0.3.0 - 2026-06-02
Added
- CQ出版社 (
cq-publishing) アダプターを追加(電子書籍直販サイト Tech Village) - Pragmatic Bookshelf (
pragprog) アダプターを追加(海外・DRM-free) - Leanpub (
leanpub) アダプターを追加(海外・セルフ出版・DRM-free) - 海外出版社の価格に対応する
BookRecord.currency(ISO 4217、省略時は JPY)を追加 - 書籍の言語を表す
BookRecord.language(ISO 639-1、省略時はja)を追加 search_booksが各候補にクエリとの一致度matchScoreを付与し、ベストマッチ順にソートするよう改善search_booksのtitleが ISBN 形式かつauthor未指定のときget_book_by_isbn経路へ振り分け(ISBN ショートカット)get_book_by_isbnが openBD 未収録の旧刊でも、ISBN ベースの安定 URL を持つ出版社(O'Reilly の/books/{isbn}/)の詳細ページを直接取得して書誌を回収(電子書籍専売・販売終了タイトルの部分救済。価格は取得不可)
Changed
search_booksは「該当なし」を空配列で返すようになり、検索サイトが該当なし時に返す無関係な新着フォールバックを除外(誤メタデータの混入を防止)- 書名の一致をトークン分割×包含割合で評価し、純日本語の部分一致(助詞を跨ぐ部分語)を拾えるよう改善
- 検索結果の著者を search / detail / isbn の全経路で重複排除(表記ゆれも同一視)
- 出版社の検索 API が著者を返さない場合でも、ISBN があれば openBD から
authorsを補完 - 横断検索を並列度6・1社あたり12秒タイムアウトで高速化/静音化し、小規模サイトはカタログを長期キャッシュ(大規模出版社を優先)
Fixed
- EUC-JP レスポンスをデコードし、ラトルズ・ボーンデジタルの検索結果が常に 0 件になる問題を修正(非 UTF-8 レスポンス全般に対応)
Security
- 依存を最新メジャーへ更新し、SDK 経由の推移的脆弱性 5 件を解消
0.2.4 - 2026-04-19
Added
- 日科技連出版社 (
juse-p) アダプターを追加 - Google Books アダプター (
google-books) を追加(APIキー未設定時は無効化) techbook-mcp setupコマンドを追加: Google Books API キーを対話入力し OS 固有の設定ディレクトリに保存- Linux:
$XDG_CONFIG_HOME/techbook-mcp/credentials.json - macOS:
~/Library/Application Support/techbook-mcp/credentials.json - Windows:
%APPDATA%\techbook-mcp\credentials.json
- Linux:
- ISBN出版者記号から出版社アダプターを特定するマッピング (
PUBLISHER_ISBN_CODES) を追加(13出版社) get_book_by_isbnが openBD の storelink に加え、ISBN出版者記号からも対応アダプターを特定して出版社サイトから直接取得を試みるよう改善
0.2.3 - 2026-04-13
Added
get_book_by_isbnツールを追加(ISBNから書誌情報を取得)- openBD にない書籍のフォールバックとしてカーリル API を追加
Fixed
getDetail()の著者取得を自己紹介文ではなくitemprop="author"から取得するよう修正binエントリの./プレフィックスを修正
0.2.2 - 2026-04-12
Fixed
npm publish前にdist/が自動ビルドされるようprepublishOnlyスクリプトを追加
0.2.1 - 2026-04-12
Fixed
- 達人出版会アダプターの検索が常に無関係な書籍を返す問題を修正(
?search=パラメータがサーバーで無視されていたため、全書籍一覧からローカルフィルタリングする方式に変更)
0.2.0 - 2026-04-12
Added
- インプレスブックス (
impress-books) アダプターを追加 - 各出版社サイトの
robots.txtをチェックし、クロール可否を判定する機能を追加(結果は6時間キャッシュ) - GitHub Actions に Bun・Deno のテストジョブを追加
Fixed
npxでバイナリ起動する際に shebang がなくエラーになる問題を修正
Changed
- テストを vitest から
node:test+node:assertに移行(Node.js・Bun・Deno で共通実行可能に)