mcpField
M
mcp-libraryofcongress

mcp-libraryofcongress

ローカル
github.com検索0今日更新

mcp-libraryofcongress について

mcp-libraryofcongressは、米国議会図書館のカタログやデジタルコレクションをチャットクライアントから検索するMCPサーバーです。スキャン新聞の本文検索や資料レコードの取得に対応し、APIキーやアカウントは不要です。

主な機能

  1. 01スキャン新聞本文の検索
  2. 02項目別カタログ検索
  3. 03権利情報と所蔵場所の取得
  4. 04デジタルコレクションの一覧

活用シーン

  1. 01地域や年代を指定した新聞記事の調査
  2. 02写真・地図・書籍の主題検索
  3. 03資料の権利と原本の所蔵場所の確認
  4. 04テーマに関連するデジタルコレクションの探索

MCP 対応

MCPサーバーとして、新聞検索、カタログ検索、資料レコード取得、コレクション一覧のツールをクライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
npmmcp-libraryofcongress3.1.0
mcpbmcp-libraryofcongress-3.1.0.mcpb3.1.0

ツール

4

掲載時のツール一覧 · 今日に更新

パラメーター型必須説明
pageintegerいいえ一致結果のページ番号です。1 から始まります。
limitintegerいいえ返す一致件数。
querystringはい検索する語句または引用符で囲んだ語句です。例:'"cure for influenza"'。インデックスはページ上のテキストを読み取り、1 文字も保持するため、1 文字のクエリにも対応します。
year_tointegerいいえ最終年です。指定した年を含みます。
locationstringいいえ新聞の出版州です。図書館の表記に従って指定します:'new york'、'district of columbia'。このツールが返す一致結果の 'state' が持つ値です。
year_fromintegerいいえ開始年です。指定した年を含みます。
publicationstringいいえ町名と発行年を含む新聞名です:'new-york tribune (new york [n.y.]) 1866-1924'。ここでの一致結果の 'publication'、または media_type が 'newspapers' の search_items のタイトルから表記を取得してください。
max_excerpt_charsintegerいいえ1 つの該当箇所に割り当てる文字数。'max_excerpts_per_match' と合わせて確認してください。回答のサイズは、これら 2 つの値の積に一致数を掛けたものです。
max_excerpts_per_matchintegerいいえ一致ごとに保持する段落数です。一致語句がページ内に複数回現れると複数の段落が得られますが、後の段落に最初の段落にない情報が含まれることはほとんどありません。

詳細

mcp-libraryofcongress

npm CI license MCP Registry Glama M8ven LobeHub Cursor にインストール VS Code にインストール

アメリカ議会図書館は米国の国立図書館で、所蔵資料の多くをオンラインで公開しています。書籍、写真、地図、録音、原稿、そして18世紀までさかのぼるアメリカの新聞の紙面などがあります。新聞の紙面はスキャンされ、光学文字認識処理が施されているため、紙面に印刷された言葉を検索できます。また、キュレーターが資料をデジタルコレクションにまとめ、それぞれを独立したコレクションとして記述・公開しています。

このサーバーは、チャットクライアントを同図書館に接続します。新聞に印刷された言葉を検索したり、タイトル、作成者、主題、場所、言語で目録を検索したり、権利に関する記述と原資料の所蔵場所を含む記録を1件読んだり、デジタルコレクションの一覧を取得したりできます。APIキーもアカウントも必要ありません。

フランス語版


インストール

ワンクリックでインストール

Cursor にインストール VS Code にインストール

Claude Code

claude mcp add libraryofcongress -- npx -y mcp-libraryofcongress

Claude Desktop、Cursor、および標準設定形式を使うすべてのクライアント

{
  "mcpServers": {
    "libraryofcongress": {
      "command": "npx",
      "args": ["-y", "mcp-libraryofcongress"]
    }
  }
}

Node 24以降が必要です。環境変数を設定する必要はありません。

Docker を使う場合
{
  "mcpServers": {
    "libraryofcongress": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-libraryofcongress:3.0.2"]
    }
  }
}

-i はプロトコルが通る標準入力を開いたままにするために指定し、TTYはストリームを書き換えるため、-t は指定しません。コンテナに必要なのは、www.loc.gov と chroniclingamerica.loc.gov への HTTPS 外向き通信のみです。ボリューム、ポート、認証情報は不要です。

npm を使わずにバンドルを利用する

最新リリースから mcp-libraryofcongress-3.0.2.mcpb をダウンロードして開いてください。MCP バンドルに対応するクライアントであれば、npm も設定ファイルの編集も不要で、自動的にインストールされます。バンドルには依存関係が含まれているため、インストール時に何かをダウンロードする必要はありません。

質問できること

  • 「オクラホマ州の新聞は、1907年の州昇格投票について何を書いていましたか?」
  • 「1920年以前のシカゴの長屋の写真を探してください。」
  • 「その記録を読み、原本の所蔵者を教えてください。」
  • 「南北戦争に関するデジタルコレクションにはどのようなものがありますか?」
  • 「その写真を再利用できますか?」

通常の手順では、検索から記録へ進みます。各行には identifier があり、get_item でその記録を読み取ります。

ツール

ツール機能
search_newspapersスキャンされた新聞ページに印刷された語句を検索します。
search_itemsタイトル、作成者、主題、場所、言語でカタログを検索します。
get_item1件の記録、その権利情報、原本の所蔵場所を読み取ります。
list_collectionsキュレーターが公開したデジタルコレクションを一覧表示します。
search_newspapers

スキャンされた新聞ページのテキストを検索します。テキストは光学文字認識によってページから読み取られたものです。

引数型必須機能
query文字列、1~300文字はいページ上で検索する語句です。
location文字列、最大120文字いいえ新聞が発行された場所です。
publication文字列、最大200文字いいえ新聞1紙です。
year_from整数、1000~9999いいえ開始年です(その年を含みます)。
year_to整数、1000~9999いいえ終了年です(その年を含みます)。
limit整数、1~25、デフォルトは 10いいえ返す一致件数です。
page整数、1~100、デフォルトは 1いいえ一致結果のページ番号です。
max_excerpt_chars整数、80~1200、デフォルトは 300いいえ返す抜粋の最大文字数です。
max_excerpts_per_match整数、1~10、デフォルトは 3いいえ一致したページごとに返す抜粋数です。

返される内容: get_item で取得できる identifier を含む hits、title、スキャンを提供した図書館を示す creator、year、号内のページを示す page_number、published_on、新聞の発行期間を含む publication、state、excerpts、excerpt_kind です。

excerpt_kind は、抜粋をどのように解釈すべきかを示します。 passage は、一致した語句を中心とする、その語句の前後のテキストです。page_opening はページの冒頭です。図書館が行とともに返したテキストが、一致語句の出現箇所より前で終わっているために返されます。一致語句は含まれていないため、引用すると別の箇所を引用することになります。また、source_url を開くと、クエリが適用された状態でそのページが表示されます。total は新聞のページ数を数え、ページ分けの対象になります。語句の出現回数ではありません。

search_items

カタログを、対象の種類ごとに検索します。

引数型必須説明
querystring、1~300文字はい検索する語句です。
media_typebooks、photos、maps、audio、manuscripts または newspapersいいえ検索するカタログです。
year_frominteger、1000~9999いいえ含める最も古い年です。
year_tointeger、1000~9999いいえ含める最も新しい年です。
subjectstring、最大120文字いいえ件名です。
locationstring、最大120文字いいえ場所です。
languagestring、最大120文字いいえ英語で記述する言語です。
collectionstring、最大160文字いいえlist_collections での名称を指定したコレクションです。
online_onlyboolean、既定値は trueいいえオンラインで利用できるレコードに限定します。
sortrelevance、newest、oldest または title、既定値は relevanceいいえ行の並び順です。
limitinteger、1~50、既定値は 10いいえ返す行数です。
pageinteger、1~100、既定値は 1いいえ表示する行のページです。

返される内容: identifier、title、creator、year、出版時の date(多くの場合は期間)、is_collection、source_url を含む items です。 Library では対象の種類ごとにカタログを保持しているため、media_type を指定せずに 検索すると一般カタログが参照され、total にはそこで条件に一致したレコード数が 含まれます。

get_item

1 件のレコードを読み込みます。詳細な情報はデフォルトでは返されず、必要に応じて指定します。また、長い説明はページ分割されます。

引数型必須内容
identifier1~300 文字の文字列はいレコードに付与されている識別子です。
sectionsbasic、citations、resources、full_metadata の配列。デフォルトは ["basic"]いいえ返す情報の項目を指定します。
offset0 以上の整数。デフォルトは 0いいえ説明の続きを読み込む位置です。
max_description_chars200~20000 の整数。デフォルトは 2000いいえ返す説明の文字数です。

返される内容: title、creator、year、date、format、source_url を含むレコードに加え、description、subjects、location、language、収蔵コレクションや部門を示す part_of、原本の所蔵先を示す repository、call_number、rights が含まれます。レコードで値が空のフィールドは null になります。長い説明の続きを取得するには next_offset を使います。説明の末尾では null になります。識別子にはスラッシュを含められます。新聞の各号は、新聞名、日付、版を組み合わせて識別します。

list_collections

デジタルコレクションを一覧表示します。デジタルコレクションとは、学芸員が選定、記述し、まとめて公開した資料群です。

引数型必須内容
limit1~50 の整数。デフォルトは 20いいえ返すコレクション数です。
page1~100 の整数。デフォルトは 1いいえコレクションのページを指定します。
searchable_onlyブール値。デフォルトは falseいいえ検索対象を絞り込めるコレクションに限定します。
max_description_chars80~2000 の整数。デフォルトは 300いいえ各説明の文字数です。

返される内容: collections が返されます。各コレクションには、参照に使うスラッグである identifier、title、search_items に指定する条件の文言である collection_filter、searchable_media_types、description、item_count、主題を示す subjects、収蔵資料の種類を示す formats、source_url が含まれます。total は Library が公開しているコレクション数を示します。この数は返された件数より多くなる場合があります。

スキャンされたテキストの価値

新聞の紙面に印刷された文字は、光学文字認識によって読み取られているため、抜粋にはその処理による誤読が含まれる場合があります。修正せず、読み取られたままの状態で提供されます。引用する際はスキャンされたテキストとして引用し、読者が紙面そのものを確認できるよう、ページへのリンクを付けてください。

権利

各レコードには rights に権利情報が記載されており、Library の利用規約は資料の寄託ごとに異なります。再利用する前にその記載を確認し、表示する内容のそばに併記してください。

設定

すべての変数は省略可能です。クライアント設定の env ブロックに設定してください。

変数デフォルト機能
LOC_USER_AGENTプロジェクトの識別情報Library にアプリケーション名と、連絡可能な担当者の連絡先を伝えます。
LOC_MIN_INTERVAL_MS60002 つのリクエスト間の間隔です。3000~60000 の範囲で指定します。
LOC_TIMEOUT_MS300001 回のリクエストの期限です。1000~120000 の範囲で指定します。
LOC_NEWSPAPER_TIMEOUT_MS90000新聞検索の期限です。1000~300000 の範囲で指定します。
LOC_MAX_RETRIES3一時的な障害の後に再試行する回数です。0~8 の範囲で指定します。
LOC_CACHE_TTL_MS900000結果をメモリに保持する時間です。0~86400000 の範囲で指定します。
LOC_CACHE_MAX_ENTRIES200一度にメモリに保持する結果の数です。1~5000 の範囲で指定します。
LOC_LOG_LEVELerrorsilent、error、info、debug のいずれかです。stderr に出力されます。

範囲外の値はデフォルト値に戻され、その理由が stderr に出力されます。

エラー

すべての失敗には、6 種類のコードのいずれかとメッセージが含まれます。また、役立つ場合は次の操作を示すヒントも含まれます。

コード発生したこと対処方法
not_foundLibrary は応答しましたが、該当するレコードはありません。search_items で識別子を確認してください。
invalid_inputリクエストが送信される前に、引数が拒否されました。引数を示しているメッセージを読んでください。
rate_limitedLibrary がこのクライアントに速度を落とすよう求めました。ヒントに示された秒数待ってから、同じ引数で再度呼び出してください。レコードは引き続き存在します。
parse_failureこのクライアントが読み取れない形式で応答が届きました。イシュートラッカーで報告してください。
network_errorリクエストが完了しませんでした。少し待ってから再試行してください。
timeoutリクエストが期限を超過しました。新聞検索の場合は LOC_TIMEOUT_MS、または LOC_NEWSPAPER_TIMEOUT_MS の値を増やしてください。

ライブラリとして

Library を読み取るレイヤーは、独自の間隔制御、キャッシュ、エラー処理を備え、プロトコルに依存しない形で単独で公開されています。

import { LocClient } from "mcp-libraryofcongress/client";

const client = new LocClient();
const { data, cached } = await client.searchItems({ query: "tenement", mediaType: "photos" });
console.log(data.total, cached);

各読み取りは { data, cached } を返し、6 種類のコードのいずれかを含むエラーをスローします。リクエスト間の最小間隔もここで適用されます。

リクエスト間隔と出典表示

Library は API に対して毎分 20 リクエスト、サイト全体に対して毎分 10 リクエストの制限を公開しており、低い方が適用されます。リクエストは一度に 1 件ずつ送信し、間隔を少なくとも 6 秒空けます。また、サーバーの設定にかかわらず、3 秒の下限が適用されます。User-Agent は必ずプロジェクトの識別情報と、連絡可能な担当者のアドレスで終わります。

すべての結果には、読み取り元のページのアドレスが含まれます。Library of Congress は公的機関であり、その記録にはそれぞれの権利情報が記載されています。

この MCP サーバーは非公式プロジェクトであり、Library of Congress とは一切関係ありません。

プライバシー

このサーバーはユーザーに関する情報を収集せず、作成者に何かを送信することもありません。お使いのマシン上で動作し、www.loc.gov と chroniclingamerica.loc.gov にのみ接続します。動作中は回答をメモリ内に保持し、ディスクには何も書き込みません。 PRIVACY.md には、リクエストに含まれる情報と、それに影響する設定が記載されています。

開発

npm install
npm run build:fixtures
npm test
npm run check

テストは生成されたフィクスチャに対して実行され、ネットワークリクエストは行いません。ライブテストスイートの npm run test:live は各ルートに対して 1 件ずつリクエストを行い、Library 自体に対して毎晩実行されます。

コントリビューション

バグ、質問、アイデアは イシュートラッカーへお寄せください。 プルリクエストも歓迎します。まずイシューを作成しておくと、変更内容の方向性について合意しやすくなります。CONTRIBUTING.mdをご覧ください。

ライセンス

MIT です。LICENSEをご覧ください。記録は、それぞれに記載された権利に基づき、Library of Congress および記録内に名前が記載された寄贈者に帰属します。


mcp-libraryofcongress(フランス語版)

英語版

Library of Congress は米国の国立図書館であり、蔵書の多くをオンラインで公開しています。書籍、写真、地図、録音、手稿、そして 18 世紀以降のアメリカの新聞の紙面が含まれます。新聞の紙面はデジタル化された後、光学文字認識にかけられているため、印刷された単語を検索できます。また、学芸員が資料をデジタルコレクションにまとめており、各コレクションは独立したまとまりとして説明され、公開されています。

このサーバーは、会話型クライアントをこの図書館に接続します。新聞に印刷された単語を検索したり、タイトル、著者、主題、場所、言語でカタログを検索したり、権利条件や原本の所蔵場所とともに書誌情報を読んだり、デジタルコレクションを一覧表示したりできます。API キーもアカウントも必要ありません。

インストール

ワンクリックインストール

Cursor にインストール VS Code にインストール

Claude Code

claude mcp add libraryofcongress -- npx -y mcp-libraryofcongress

Claude Desktop、Cursor、および標準構成形式に対応するすべてのクライアント

{
  "mcpServers": {
    "libraryofcongress": {
      "command": "npx",
      "args": ["-y", "mcp-libraryofcongress"]
    }
  }
}

Node 24 以降が必要です。環境変数の設定は不要です。

Docker を使用
{
  "mcpServers": {
    "libraryofcongress": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-libraryofcongress:3.0.2"]
    }
  }
}

-i は、プロトコルのチャネルである標準入力を開いたままにします。-t は TTY がストリームを書き換えるため省略します。コンテナには www.loc.gov と chroniclingamerica.loc.gov への HTTPS 外向きアクセスだけが必要です。ボリューム、ポート、認証情報は必要ありません。

npm なしでバンドル

最新のリリース から mcp-libraryofcongress-3.0.2.mcpb をダウンロードして開いてください。MCP バンドルに対応したクライアントなら、npm を使わず、変更が必要な設定ファイルもなく、自動でインストールします。バンドルには依存関係が含まれているため、インストール時に何もダウンロードされません。

どんなことを尋ねられるか

  • 「1907年の州昇格の投票について、オクラホマの新聞には何と書かれていますか?」
  • 「1920年より前のシカゴの賃貸用集合住宅の写真を探してください。」
  • 「この目録レコードを読んで、原本を保管しているのは誰か教えてください。」
  • 「南北戦争に関するデジタルコレクションには何がありますか?」
  • 「この写真を再利用できますか?」

通常の流れは、検索から目録レコードへ進むことです。各行には identifier があり、get_item でそのレコードを読み取れます。

ツール

ツール機能
search_newspapersデジタル化された新聞ページに印刷された語句を検索します。
search_itemsタイトル、著者、主題、場所、言語で目録を検索します。
get_item目録レコード、権利情報、原本の保管場所を読み取ります。
list_collectionsキュレーターが公開しているデジタルコレクションを一覧表示します。
search_newspapers

光学文字認識によって得られた、デジタル化された新聞ページのテキストを検索します。

引数型必須機能
query文字列、1~300文字はいページ上で検索する語句です。
location文字列、最大120文字いいえ新聞の発行地です。
publication文字列、最大200文字いいえ特定の新聞です。
year_from整数、1000~9999いいえ含まれる最も古い年です。
year_to整数、1000~9999いいえ含まれる最も新しい年です。
limit整数、1~25、デフォルトは 10いいえ返す一致件数です。
page整数、1~100、デフォルトは 1いいえ一致結果のページ番号です。
max_excerpt_chars整数、80~1200、デフォルトは 300いいえ返す抜粋の長さです。
max_excerpts_per_match整数、1~10、デフォルトは 3いいえ一致したページごとに返す抜粋数です。

返される内容: hits。それぞれに identifier(get_item で使用)、title、creator(デジタル化を提供した図書館)、year、page_number(その号のページ番号)、published_on、新聞の発行年を示す publication、state、excerpts、excerpt_kind が含まれます。

excerpt_kind は抜粋の内容を示します。 passage は、見つかった語句の前後を中心としたテキストです。page_opening はページの冒頭部分です。図書館がその行とともに返すテキストが、該当語句の前で途切れる場合に返されます。該当語句は含まれないため、これを引用すると別の内容を引用することになります。source_url を開くと、検索クエリが適用されたページが表示されます。**total は新聞のページ数を数え、ページ分割の対象となります。**語句の出現回数を数えるものではありません。

search_items

カタログを検索します。一度に検索できる資料の種類は1つです。

引数型必須説明
query文字列、1〜300文字はい検索する語句です。
media_typebooks、photos、maps、audio、manuscriptsまたはnewspapersいいえ検索するカタログです。
year_from整数、1000〜9999いいえ含める最も古い年です。
year_to整数、1000〜9999いいえ含める最も新しい年です。
subject文字列、最大120文字いいえ件名標目です。
location文字列、最大120文字いいえ場所です。
language文字列、最大120文字いいえ英語で記述した言語です。
collection文字列、最大160文字いいえlist_collectionsでの名称によるコレクションです。
online_onlyブール値、既定値はtrueいいえオンラインで利用できるレコードのみを対象にします。
sortrelevance、newest、oldestまたはtitle、既定値はrelevanceいいえ結果の並び順です。
limit整数、1〜50、既定値は10いいえ取得する結果の数です。
page整数、1〜100、既定値は1いいえ取得する結果のページです。

戻り値: items。各項目にはidentifier、title、creator、year、 公開時の表記(多くの場合は期間)を示すdate、is_collection、source_urlが含まれます。 この図書館では資料の種類ごとにカタログを用意しているため、media_typeを指定せずに検索すると 総合カタログが対象になり、totalには一致するレコードの総数が表示されます。

get_item

書誌情報を取得します。容量の大きい項目は、デフォルトでは返されず、要求する必要があります。長い説明はページ分割されます。

引数型必須説明
identifier文字列、1~300文字はい項目が持つ識別子です。
sectionsbasic、citations、resources、full_metadata の配列、デフォルトは ["basic"]いいえ返す項目です。
offset0以上の整数、デフォルトは 0いいえ説明の続きを取得する位置です。
max_description_chars200~20000の整数、デフォルトは 2000いいえ返す説明の長さです。

返される内容: title、creator、year、date、format、source_url に加えて、description、subjects、location、所蔵するコレクションや区分を示す part_of、原本の保管場所を示す repository、call_number、rights を含む書誌情報です。書誌情報に値がないフィールドは null になります。長い説明の続きを取得するには next_offset を使います。説明の末尾では null になります。識別子にはスラッシュが含まれる場合があります。新聞の号は、紙名、日付、版を組み合わせて識別します。

list_collections

デジタルコレクションを一覧表示します。デジタルコレクションとは、学芸員が選び、記述し、まとめて公開した資料群です。

引数型必須説明
limit1~50の整数、デフォルトは 20いいえ返すコレクション数です。
page1~100の整数、デフォルトは 1いいえ取得するコレクションのページです。
searchable_onlyブール値、デフォルトは falseいいえ検索対象を絞り込めるコレクションだけに限定します。
max_description_chars80~2000の整数、デフォルトは 300いいえ返す各説明の長さです。

返される内容: collections。各コレクションには、コレクションを指定するスラッグである identifier、title、search_items で使用する絞り込み条件を示す collection_filter、searchable_media_types、description、item_count、subjects、収録資料の種類を示す formats、source_url が含まれます。total は、図書館が公開しているコレクションの総数を示します。返される件数を超える場合があります。

デジタル化されたテキストについて

新聞のページに含まれる語句は光学文字認識によって抽出されるため、抜粋にはこの処理による読み取り誤りが含まれます。修正せず、読み取られたまま返します。デジタル化されたテキストとして引用し、読者が紙面そのものを確認できるよう、ページへのリンクを付けてください。

権利

書誌情報には rights に権利情報が記載されており、図書館の利用条件はリポジトリによって異なります。再利用する前にこの記載を確認し、表示する内容とともに明記してください。

設定

各変数は省略可能です。クライアント設定の env ブロックに設定します。

変数デフォルト説明
LOC_USER_AGENTプロジェクトの識別情報ライブラリに対してアプリケーション名を示し、担当者への連絡先を提供します。
LOC_MIN_INTERVAL_MS6000リクエスト間の間隔です。3000~60000 の範囲で指定します。
LOC_TIMEOUT_MS30000リクエストのタイムアウトです。1000~120000 の範囲で指定します。
LOC_NEWSPAPER_TIMEOUT_MS90000新聞の検索のタイムアウトです。1000~300000 の範囲で指定します。
LOC_MAX_RETRIES3一時的な失敗後の再試行回数です。0~8 の範囲で指定します。
LOC_CACHE_TTL_MS900000応答をメモリに保持する時間です。0~86400000 の範囲で指定します。
LOC_CACHE_MAX_ENTRIES200同時にメモリに保持する応答数です。1~5000 の範囲で指定します。
LOC_LOG_LEVELerrorsilent、error、info、debug のいずれかを指定します。エラー出力に書き込みます。

範囲外の値はデフォルト値に戻り、その理由がエラー出力に書き込まれます。

エラー

各失敗には、6 つのコードのいずれかとメッセージが含まれます。また、役立つ場合は次に行う操作も示されます。

コード発生したこと対応
not_foundライブラリは応答しましたが、その記録は見つかりませんでした。search_items で識別子を確認してください。
invalid_inputリクエストを送信する前に、引数が拒否されました。引数名が示されたメッセージを確認してください。
rate_limitedライブラリから、このクライアントのリクエストを減らすよう求められました。指定された秒数だけ待って、同じ引数で再度呼び出してください。記録は引き続き存在します。
parse_failure応答を受信しましたが、ここでは読み取れない形式でした。課題トラッカーで報告してください。
network_errorリクエストが完了しませんでした。少し待ってから再試行してください。
timeoutリクエストがタイムアウトしました。LOC_TIMEOUT_MS を増やしてください。新聞の検索の場合は、LOC_NEWSPAPER_TIMEOUT_MS を増やしてください。

ライブラリとして

ライブラリを読み取るレイヤーは、独自の間隔、キャッシュ、エラー処理を備え、プロトコルに依存せず単独で公開されています。

import { LocClient } from "mcp-libraryofcongress/client";

const client = new LocClient();
const { data, cached } = await client.searchItems({ query: "tenement", mediaType: "photos" });
console.log(data.total, cached);

各読み取りは { data, cached } を返し、6 つのコードのいずれかを持つエラーをスローします。リクエスト間の最小間隔もここで適用されます。

リクエスト頻度と帰属表示

このライブラリが公表している API の上限は毎分20リクエスト、サイト全体の上限は毎分10リクエストです。適用されるのは低いほうの上限です。リクエストは1件ずつ送信され、少なくとも6秒の間隔を空けます。また、設定にかかわらず、最低でも3秒の間隔を空けます。User-Agent は常に、プロジェクトの識別情報と担当者への連絡先で終わります。

各結果には、読み取ったページのアドレスが記載されています。Library of Congress は公的機関であり、その所蔵記録にはそれぞれの権利が記載されています。

この MCP は非公式のプロジェクトであり、Library of Congress とは提携していません。

プライバシー

このサーバーはユーザーに関する情報を収集せず、作者にも何も送信しません。お使いのマシン上で動作し、www.loc.gov と chroniclingamerica.loc.gov にのみ接続します。動作中は応答をメモリに保持し、ディスクには何も書き込みません。PRIVACY.md には、リクエストに含まれる情報と、その内容を変更する設定が記載されています。

開発

npm install
npm run build:fixtures
npm test
npm run check

テストでは生成されたフィクスチャを使用し、リクエストは一切送信しません。ライブテストのスイート npm run test:live は、各ルートにつき1件のリクエストを送信し、毎晩、ライブラリ自体を対象に実行されます。

貢献

不具合の報告、質問、アイデアは、課題トラッカーにお寄せください。変更の提案も歓迎します。まずチケットを作成すると、変更内容について合意しやすくなります。CONTRIBUTING.mdをご覧ください。

ライセンス

MIT です。LICENSEをご覧ください。所蔵記録の権利は Library of Congress と、各記録に記載された提出者に帰属し、それぞれの記録に記載された権利が適用されます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。