ndl-mcp
ndl-mcp
国立国会図書館が運営する国立国会図書館サーチ(NDL Search)を、SRU searchRetrieve インターフェース経由で検索するためのMCPサーバー。
cinii-mcp および jstage-mcp に続くシリーズ第3弾であり、それらとレスポンスエンベロープを共有しています。型付きクエリとスクリプト、マッチングモード、段階的な広さ、アイテムごとの matched_in、型付き診断、記録可能なレシート、帰属表示。
実行前に
認証情報は不要です。 NDL検索APIは公開されています。APIキーもアプリケーションIDもトークンも、設定ファイルに貼り付けるものは何もありません。何かが届くのを待ってから使おうとしているなら、それは決して来ないものを待っています。
それでも義務はあります。 APIのご利用について の第17条は、継続的にAPIを利用する利用者に対し、申請フォーム を通じて連絡先と利用内容を届け出るよう求めています — 「事前の利用申請の要否にかかわらず」、つまり事前の利用申請が必須かどうかに関わらずです。正式な利用申請が必須なのは収益を生む利用だけであり、届出は継続的にアクセスするすべての人に求められています。
アクセスは届出によって制限されていないため、世界中の何ものもあなたがそれを省略するのを止めません。そこで install.ps1 があなたを止めます。通知が記録されるまでサーバーの登録を拒否し、日付を NDL-API-NOTIFICATION.txt に書き込みます。
.\install.ps1 -NotificationFiled 2026-08-19フラグなしで実行すると、フォームのURLを表示し、開くことを提案して終了します。
Related MCP server: jp-lit-mcp
サーバーが行わないこと
以下の約束はNDLに提出されたものです。これは目標ではなく実装されており、インストーラーのスモークテストは最初の3つを検証します。
約束 | 実装 |
リクエストは直列に発行され、同時アクセスはしない |
|
最小1秒間隔 |
|
1回の検索あたりのレコード数に上限を設定し、一括取得はしない |
|
ハーベスティングインターフェースは使用しない | OAI-PMHは実装されていない |
すべてのレスポンスにクレジットを付与 | すべてのエンベロープに |
メタデータは表示のみで蓄積しない | キャッシュなし、ローカルストアなし |
これらのいずれかを変更することは、国立図書館に申告した内容を変更することです。まず追加の通知を提出してください。
プロバイダー
アプリケーションで申告した5つのセットのみが利用可能です。すべてNDLが作成しCC BYであり、利用申請は不要です。
dpid | 名称 |
| 国立国会図書館蔵書 |
| 国立国会図書館全国書誌情報 |
| 国立国会図書館雑誌記事索引 |
| 国立国会図書館雑誌記事索引オンライン資料編 |
| 国立国会図書館デジタルコレクション(オープンデータ) |
ndl-dl と ndl-dl-online — より広いデジタルコレクション — は プロバイダー一覧 で △ とされており、行われていない申請が必要です。これらを指定するリクエストは送信されず、プロセス内で DPID_NOT_PERMITTED 診断とともに拒否されます。
ツール
ツール | 検索対象セット |
| 蔵書 |
| 全国書誌情報 |
| 雑誌記事索引(両セット) |
| デジタルコレクション(オープンデータ) |
| 全5セット |
|
|
検索フィールド: title, creator, publisher, subject, anywhere, ndc, isbn, issn, from_year, to_year。これらは AND で結合されます。title、creator、publisher、subject は部分一致、ndc は前方一致、識別子は完全一致です。
ndl_get_record はフェッチであるため、そのエンベロープには searched_for が含まれません — 検索語が選択されていないからです。
注意すべき2つのこと
検索語内の大文字の AND、OR、NOT は、NDLがクエリ全体を拒否します。 「何も返さない」のではなく「拒否」です。この規則は仕様書に記載されているとおり大文字小文字を区別します。War AND Peace は検出され、War and Peace は通ります。サーバーは送信前にチェックし、図書館が構文解析エラーで応答するのではなく、問題のフィールドを指定した RESERVED_WORD_IN_QUERY 診断を返します。
NDLは数値を明示しないレート制限を実施しており、HTTP 429で応答します。 ヘルプページには「同時リクエスト数には制限を設けています」とだけ書かれ、数値の公表を拒否しています。2026年8月19日のテストでは、持続的な1秒あたり1リクエストを大幅に下回る時点で429が発生しました。つまり、図書館に申告した1秒の下限は最低限であり、保証ではありません。429が発生すると、Retry-After を尊重して1回だけバックオフし、その後サーバーは押し続けずに停止します。RATE_LIMITED を報告しますが、これは意図的に API_ERROR とは区別されています。なぜなら、この2つは読者にとって異なる意味を持つからです。レート制限された検索の結果は 不明 であり、空であるわけではなく、決して「該当なし」として記述してはなりません。
ローマ字表記の語は検索結果が少なくなります。 NDL Searchは日本語のレコードを日本語の文字で索引付けしています。日本語コーパスに対するラテン文字クエリはローマ字の罠であり、エンベロープはそれに対して SCRIPT_LATIN_QUERY を発生させます。searched_for の見出しは、アシスタントが実際に選んだ語がレスポンスの先頭に埋もれずに見えるようにするために存在します。それがこのフィールドの存在意義であり、開示が検索で使用された語を報告できる理由です。
レシート
mediation.emit() は各レスポンスエンベロープを、追記専用でハッシュチェーンされた台帳 MCP_RECEIPT_LOG に書き込みます。install.ps1 はこれを他のサーバーが使用するのと同じファイルに設定します。変数を未設定にすると、何も書き込まれず、何も失敗しません。
台帳が保持するものと保持しないものに注意してください。保持するのは、クエリ、正規化された語、送信されたパラメータ、タイムスタンプ、クエリとパラメータに対するSHA-256、そして返されたレコードの識別子です。書誌レコード自体は保持しません。クエリを記録することはデータベースを蓄積することではなく、レシートを保持しても蓄積しないという約束に違反しません。しかし、この区別は暗黙の前提にするのではなく明言する価値があります。なぜなら、外部から見ると両者は似ているからです。
SRUのみである理由
申請ではSRUとOpenSearchを宣言しています。このサーバーはSRUのみを実装しています。これは宣言した内容より少ないため安全です — 図書館に伝えた内容より少なく使うことは常に許されます。
その理由は証拠にあります。OpenSearchのレスポンス形式は第1.4版仕様書に文書化されていません。要素表もサンプルもなく、付録はSRUとOAI-PMHのみを扱っています。さらに悪いことに、仕様書は不正なパラメータがエラーではなく ゼロ件 のレスポンスを返すと述べています — 「引数(パラメータ)誤りの場合には検索結果ゼロ件となる」 — そのため、フィールド名のタイプミスは本当の該当なしと区別できません。歴史家に「何も見つからなかった」ことを信頼させることを目的としたツールにとって、これは失格です。SRUは型付き診断と文書化されたDC-NDLレコードスキーマを返します。後でOpenSearchを追加するのに新しい通知は不要です。必要なのは文書化されたレスポンス形式です。
出典
国立国会図書館サーチ 外部提供インタフェース仕様書 第1.4版 (2026-03-31)
APIのご利用について — 利用条件、クレジット要件、同時実行性、通知
API提供対象データプロバイダ一覧 — dpid値とライセンス条件
ライセンス
MIT。このサーバーを通じて取得したメタデータは、National Diet LibraryによるCC BY 4.0です。サーバーが出力するクレジット行は、そのライセンスが要求する帰属表示であり、結果から公開するあらゆるものに残すべきです。
テスト済みのものと未テストのもの
2026年8月19日に実APIに対して検証済み:
蔵書と雑誌記事索引にわたる日本語スクリプト検索 — 正しい総数、正しいレコード、正しい年と識別子。
DC-NDLのパース。manifestation-stubフィルタを含む。NDLはレコードごとに2つの
BibResource要素を返します。フィルタが入るまで両方を取得すると、空白のまま結果セットが2倍になりました。searched_forは組み立てられたCQLではなく選択された語を報告するため、そのスクリプト検出は意味を持ちます。正確なCQLはquery.paramsに含まれ、レシートのハッシュによって固定されます。DPID_NOT_PERMITTEDガード:ndl-dlを指定するリクエストはプロセス内で拒否されます。RESERVED_WORD_IN_QUERY:War AND Peaceは検出され、War and Peaceは通りました。レートリミッターは、意図せず検証されました — 上記のHTTP 429を参照。
実APIに対して未検証であり、実行ではなく読解による確認: 「Record does not exist」のパススルー、ndl_get_record、およびバックオフ経路。テストは429で継続をやめました。なぜなら、未公開のレート制限をプローブして特徴づけることは、まさに利用規約が警告する継続して大量のアクセスであり、このサーバーの目的はNational Diet Libraryがブロックせざるを得ない存在になることではないからです。通常の利用で、一度に1クエリずつこれらの経路を試してください。
Available Tools
6 toolsndl_get_recordARead-onlyIdempotent
Retrieve a single record by NDL bibliographic ID or 全国書誌番号 (JP number).
A fetch, not a search: the envelope omits searched_for because no term was
chosen. Exactly one identifier is required.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral detail beyond annotations by explaining that the envelope omits 'searched_for' because no search term is chosen, which gives the agent insight into the response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences convey the purpose and the key operational distinction. The description is front-loaded with the primary action, and every sentence adds relevant information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-record fetch tool, the description is complete: it covers the identifier requirement, the fetch-vs-search distinction, and a response envelope nuance. The output schema and annotations handle return format and safety, so nothing essential is missing for the agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage reported at 0%, the description partially compensates by naming both accepted identifier types: NDL bibliographic ID and 全国書誌番号. It also adds the critical constraint that exactly one identifier is required, which is not enforced by the schema (both params are individually optional). However, it does not elaborate on identifier format or which identifier should be preferred when both are known.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Retrieve a single record by NDL bibliographic ID or 全国書誌番号 (JP number).' It further distinguishes itself from the search sibling tools by explicitly stating 'A fetch, not a search,' so an agent can clearly tell it apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this tool is for fetching by a known identifier, not for searching. It also provides a key usage requirement, 'Exactly one identifier is required,' which helps the agent avoid invalid calls. It does not explicitly name alternative tools, but since all siblings are search tools, the contrast is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndl_search_allARead-onlyIdempotent
Search all five declared provider sets at once.
Use when the material type is unknown. For a bibliographic check, the narrower tools return a cleaner set.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior, so the description doesn't need to restate safety. It adds the useful behavioral context that one call hits all five provider sets at once. It doesn't disclose behaviors like result merging, duplication, or pagination, but with strong annotations and an output schema this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the core action is front-loaded, and the usage guidance follows immediately. Every sentence carries meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an aggregate search tool with read-only annotations, rich nested parameter descriptions, and an output schema, the description covers the key decision (when to use all vs. narrower). It would be slightly stronger if it named the five provider sets or the narrower sibling tool names, but the sibling list and schema supply that context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description says nothing about parameters. Reported schema description coverage is 0% at the top level, and the description does not compensate by explaining search fields or constraints. The nested schema does contain useful per-field descriptions (ndc, isbn, title, year, etc.), which prevents this from being a 1.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search all five declared provider sets at once.' This distinguishes it from the narrower sibling search tools by scope (all sets vs. one set), so an agent can tell it apart from ndl_search_books, ndl_search_articles, etc. without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit use condition — 'Use when the material type is unknown' — and an explicit alternative condition: 'For a bibliographic check, the narrower tools return a cleaner set.' The alternative names aren't listed verbatim, but the sibling list makes them identifiable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndl_search_articlesARead-onlyIdempotent
Search 国立国会図書館雑誌記事索引, including the online-materials set.
The index covers Japanese periodical articles, including many not in CiNii or J-STAGE. It indexes articles, not their full text.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly, idempotent, and non-destructive. The description adds useful behavioral context: it includes the online-materials set, covers articles often missing from CiNii/J-STAGE, and explicitly does not provide full text. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, purposeful sentences with no filler. The action and resource are front-loaded, followed by scope and a clear limitation. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with a rich schema and an output schema, the description adequately explains what is searched, the coverage scope, and the key limitation (no full text). It could be more explicit about sibling routing, but overall it is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description itself does not describe any parameters, but the nested SearchInput schema gives detailed descriptions for each field (e.g., partial match, date formats, bounds). The description adds no extra parameter meaning, and the structured schema already carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search 国立国会図書館雑誌記事索引', then clarifies that it covers Japanese periodical articles and indexes articles, not full text. This makes it easy to distinguish from sibling tools like ndl_search_books or ndl_search_national_bibliography.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context on when this tool is relevant: for Japanese periodical article records, including coverage beyond CiNii and J-STAGE. It does not explicitly name sibling tools or state when not to use them, but the scope is clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndl_search_booksARead-onlyIdempotent
Search 国立国会図書館蔵書 for books and monographs.
Fields are combined with AND; title, creator, publisher and subject match partially. Returns the unified response envelope. Records are displayed, not stored.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and idempotent, and the description adds meaningful behavioral detail: fields are combined with AND, title/creator/publisher/subject match partially, it returns the unified response envelope, and records are displayed but not stored. This clearly communicates side effects and result shaping, and it does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse sentences: the first states purpose, the second states matching behavior, the third states output and side-effect semantics. No filler words, no repetition of schema details, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description, together with a rich input schema and an output schema, gives an agent enough to invoke the tool correctly: scope, query combination semantics, return envelope, and non-storage behavior. It falls short only in not explicitly routing the agent away from sibling search tools or mentioning pagination parameters, though those are documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description names a few parameters (title, creator, publisher, subject) and notes they match partially, but the input schema already documents each field with equivalent or richer descriptions. The main addition beyond the schema is 'fields are combined with AND', which is useful but modest. Given the schema descriptions are strong, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Search'), a concrete resource ('国立国会図書館蔵書'), and a clear scope ('books and monographs'). This distinguishes it from sibling tools like ndl_search_articles or ndl_search_digital_open without needing to inspect their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for searching books and monographs rather than articles or digital collections, but it never explicitly names alternatives or says when to prefer this tool over sibling searches. It does provide practical query semantics (AND combination, partial matching), but not exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndl_search_digital_openBRead-onlyIdempotent
Search 国立国会図書館デジタルコレクション(オープンデータ).
The open-data set only. The wider Digital Collections (ndl-dl, ndl-dl-online) are marked ○ for 非営利 use and so need no usage application, but they were outside the set this server declares and their metadata carries no open licence — displayable, not redistributable. Adding them is a documentation change here, not an application to the library.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHintfalse, so the safety profile is covered. The description adds value by clarifying the data set scope and licensing: only open-data records are included, and the wider collections are 'displayable, not redistributable'. This is useful behavioral context about what the tool can return, though it does not describe response format or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line purpose statement in Japanese, then a concise English explanation of the key scope constraint and licensing nuance. It front-loads the main action and does not waste words, though the language mix is slightly awkward for an English-first agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and annotations cover read-only/idempotent behavior, the description’s main job is scoping and usage guidance. It handles scoping well and adds useful licence context, but it leaves out any explicit guidance on when to choose this over siblings like ndl_search_books or ndl_search_all, and it does not mention pagination or result count controls (though those are in the schema). Overall it is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description contains no parameter information. Context signals report 0% schema description coverage, so the description must compensate but does not. The nested schema fields have some descriptions, but the top-level 'params' parameter is undocumented in the description, leaving an agent to delve into the $ref to construct a query. The description's licence discussion gives no help with the many search fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Search 国立国会図書館デジタルコレクション(オープンデータ)', reinforced by the annotation title 'Search NDL Digital Collections (Open Data)'. It distinguishes from the wider Digital Collections by explicitly saying 'The open-data set only', so an agent can tell this tool is scoped to the open subset. It does not name sibling search tools, but the scoping qualifier differentiates enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context about when to use this tool: it searches only the open-data set, and the wider collections are explicitly excluded. It does not name alternative tools or say 'use X for the wider collections', but the scope limitation clearly implies this tool is for open data. The licence discussion adds context about the data set, but no explicit when-not-to-use or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndl_search_national_bibliographyARead-onlyIdempotent
Search 国立国会図書館全国書誌情報.
The national bibliography is the authority for Japanese imprint data — use it when a publication date, publisher or edition statement has to be right rather than merely plausible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempoentHint=true, openWorldHint=true, and destructiveHint=false, covering safety and side-effect profile. The description adds only the data-quality trait (authority of imprint data), which is contextual but not a behavioral disclosure such as result ordering, matching semantics, or limits. It adds some value beyond annotations but does not carry new behavioral information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero redundancy. The resource and action are front-loaded, and the second sentence earns its place by explaining why this tool exists and when it matters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, every parameter is documented in the schema, and annotations cover the operational profile, so the description need not explain return values or side effects. What it adds — the authority positioning and the when-to-use rule — completes the picture for correct selection. A brief note distinguishing it from ndl_search_books or ndl_search_all would make it complete, hence not a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — the tool description contributes nothing about the 12 parameters, though the schema itself documents each property well. The phrase "publication date, publisher or edition statement" faintly hints at which search fields matter, but that is indirect and does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — "Search 国立国会図書館全国書誌情報" — and then sharpens the scope by positioning this as the authoritative source for Japanese imprint data. The "authority" framing distinguishes it from sibling search tools without ambiguity: this is the tool to trust for dates, publishers, and edition statements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use guidance: choose this tool when a publication date, publisher, or edition statement must be authoritative rather than merely plausible. It stops short of naming alternative siblings or stating when NOT to use it, so a score of 5 would overstate its completeness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.1.0- First observed
ndl_get_record - First observed
ndl_search_all - First observed
ndl_search_articles - First observed
ndl_search_books - First observed
ndl_search_digital_open - First observed
ndl_search_national_bibliography
TDQS
Scored across 6 tools
Each search tool targets a distinct NDL dataset or scope, and get_record is clearly separate as an ID-based fetch. The main ambiguity is between ndl_search_books and ndl_search_national_bibliography, since both can return book-like records, though their descriptions clarify holdings vs. authority data.
All tool names follow a predictable ndl_<action>_<scope> pattern: get_record and search_* for the rest. This makes the set easy to navigate and avoids stylistic mixing.
Six tools is well-scoped for the server's purpose: one record retrieval tool and five search tools covering separate NDL data sources plus a combined search. No tool feels redundant or out of place.
The set covers the main NDL search surfaces and record retrieval by ID, which supports core bibliographic workflows. The main minor gap is that only the open Digital Collections subset is exposed, while wider digital collection content is not covered by a dedicated tool.
Maintenance
Related MCP Connectors
MCP server for searching Airweave collections with natural language queries.
Read-only MCP server for searching Japan government procurement bid information from the KKJ portal.
Hosted MCP server for finding authoritative primary data sources and official portals.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for searching Japanese Diet bills and committee Q\&A records via the NDL Kokkai API.463 npm1MIT
- AlicenseAqualityAmaintenanceAn MCP server for Japanese literature research that provides unified search across NDL, CiNii, J-STAGE, and other Japanese academic databases, with Skills to assist in search planning and result evaluation.301,097 npm7MIT
- AlicenseBqualityDmaintenanceMCP server for accessing Japanese government statistics portal 'e-Stat' API, enabling language models to search and retrieve statistical data.520MIT
- FlicenseBqualityDmaintenanceMCP server for searching Japanese government procurement notices via the Kanpou API. Enables LLMs to search by date, keyword, or detailed criteria.31-