mcpField
M
mcp-archiveorg

mcp-archiveorg

ローカル
github.com検索31 日前に更新

mcp-archiveorg について

mcp-archiveorgは、Internet Archiveの書籍、カタログ記録、Waybackの保存ページをMCPクライアントに提供します。全文検索や書籍検索、項目の詳細確認、日付指定でのページ閲覧に対応し、APIキーやアカウントは不要です。

主な機能

  1. 01スキャン文書内の全文検索
  2. 02カタログ項目の検索と絞り込み
  3. 03項目の記録、ファイル、ライセンスの確認
  4. 04主題などの条件による書籍検索
  5. 05Wayback保存ページの一覧と閲覧

活用シーン

  1. 01デジタル化された書籍から文章を探す
  2. 02メディア種別や年でアーカイブを閲覧
  3. 03項目のファイルとライセンスを確認
  4. 04指定日のウェブサイトの表示を調べる

MCP 対応

Internet Archiveの検索、項目、書籍インデックス、Wayback機能をMCPクライアント向けのツールとして公開します。

設定

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

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

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

リポジトリ
パッケージ
npmmcp-archiveorg2.1.0
mcpbmcp-archiveorg-2.1.0.mcpb2.1.0

ツール

6

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

パラメーター型必須説明
pageintegerいいえ一致する結果のページ番号。1 から始まります。ページ送りは 100 ページで停止します。
limitintegerいいえ返す一致件数。
querystringはい検索する単語または引用符付きの語句。例:'"call me ishmael"'。
max_excerpt_charsintegerいいえ1 つの該当箇所に割り当てる文字数。'max_excerpts_per_match' と合わせて確認してください。回答のサイズは、これら 2 つの値の積に一致数を掛けたものです。
max_excerpts_per_matchintegerいいえ一致ごとに保持する該当箇所の数。索引は長い作品内で複数の箇所を見つけますが、後の箇所に最初の箇所にない情報が含まれることはほとんどありません。

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

mcp-archiveorg

npm CI license MCP Registry Glama M8ven LobeHub Install in Cursor Install in VS Code

インターネット・アーカイブは、世界で公開されたものを保存する非営利の図書館です。スキャンした書籍、映画、録音音楽、ラジオ、ソフトウェア、そしてウェブページそのものを保管しています。1996年以降、ウェイバックマシンで繰り返し保存されてきました。所蔵する何百万もの書籍や文書には光学文字認識が適用されており、内部の文章を検索できます。また、併設されたオープン・ライブラリーの索引には、著作、版、主題が記載されています。

このサーバーは、チャットクライアントをこの図書館に接続します。文書内の全文検索、アイテムカタログの検索、アイテムの記録とファイルの閲覧、主題・場所・時代・人物による書籍の検索、指定日のウェブの閲覧ができます。API キーもアカウントも必要ありません。

フランス語版


インストール

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

Install in Cursor Install in VS Code

Claude Code

claude mcp add archiveorg -- npx -y mcp-archiveorg

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

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

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

Docker を使用する場合
{
  "mcpServers": {
    "archiveorg": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-archiveorg:2.0.2"]
    }
  }
}

-i はプロトコルが通る stdin を開いたままにするために指定し、ストリームを書き換えてしまう TTY を避けるため -t は指定しません。コンテナに必要なのは archive.org、web.archive.org、openlibrary.org へのアウトバウンド HTTPS 接続だけです。それ以外は必要ありません。ボリューム、ポート、認証情報も不要です。

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

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

質問できること

  • 「Beaumont 灯台について言及している本はどれですか?」
  • 「1906 年のサンフランシスコ地震に関するアイテムを見つけてください。」
  • 「そのアイテムにはどのファイルがあり、どのライセンスが適用されていますか?」
  • 「1900 年以前に出版された、フランスの養蜂に関する本を見つけてください。」
  • 「2001 年 3 月、そのウェブサイトはどのように見えていましたか?」

一般的な流れは、検索からレコードへ進むものです。検索結果の行には identifier が含まれ、get_item でそのレコードを読み取ります。

ツール

ツール機能
search_insideアーカイブ内のスキャン文書に含まれる単語を検索します。
search_itemsタイトル、作成者、件名、メディアタイプでカタログを検索します。
get_itemアイテムのレコード、ファイル、ライセンスを読み取ります。
search_books件名、場所、時代、人物、長さ、年で本を検索します。
list_snapshotsWayback Machine があるアドレスについて保持しているキャプチャを一覧表示します。
get_snapshot指定した日付、またはその前後に取得されたアドレスのキャプチャを読み取ります。
search_inside

アーカイブ内の文書に含まれるテキストを検索します。これらのテキストは光学文字認識によってページから取り込まれたため、検索結果の一節にはその処理による誤読が含まれる場合があります。

引数型必須機能
query文字列、2~300 文字はい文書内で検索する語句です。
limit整数、1~50、デフォルトは 10いいえ返す一致件数です。
page整数、1~100、デフォルトは 1いいえ表示する検索結果のページです。
max_excerpt_chars整数、80~1200、デフォルトは 300いいえ返す一節の長さです。
max_excerpts_per_match整数、1~10、デフォルトは 3いいえ一致した文書ごとに返す一節の数です。

戻り値: identifier を含む hits。この値は get_item で使用します。title、creator、year、ページから機械的に読み取られた一節を格納する excerpts、一節が実際に含まれているファイルを示す matched_file、および source_url も含まれます。アイテムに複数の文書がまとめられていて、そのうちの1つに一節が含まれている場合、inside_container は true になります。この場合、タイトル、作成者、年はコンテナに属します。

total は文書数を示し、ページ分けされます。 文書の件数を表し、一致結果の最終ページは最初のページより短くなります。ページ番号はありません。 インデックスが示すのは、テキストがアイテム内のどこにあるかであり、ほとんどの一致結果ではその値が 1 です。そのため、本のページを示すものはなく、ページ番号を主張するリンクもありません。

search_items

アーカイブに収蔵されているあらゆる種類の資料を対象に、カタログ全体を検索します。

引数型必須説明
query文字列、1~300 文字はいカタログ内で検索する語句です。
media_typetexts、movies、audio、image、software、data、または webいいえ残す資料の種類です。
year_from整数、1~2200いいえ最も古い年です。
year_to整数、1~2200いいえ最も新しい年です。
sortrelevance、downloads、newest、oldest、または title、既定値は relevanceいいえ行の並べ替え方法です。
limit整数、1~50、既定値は 10いいえ返す行数です。
page整数、1~100、既定値は 1いいえ返す行のページ番号です。

返される内容: identifier、title、creator、year、 media_type、downloads、source_url を含む items。レコードに値がない フィールドは null になります。total はカタログ全体で一致したアイテム数を示し、 返された数より多い場合があります。

get_item

1 つのアイテムのレコードを読み取ります。レコードが長くなる場合があるため、 詳細な内容は既定では返さず、指定があった場合に取得します。

引数型必須説明
identifier文字列、1~200 文字はい検索結果の行に含まれる識別子です。
sectionsbasic、files、full_metadata の配列、既定値は ["basic"]いいえ返す項目です。
file_format文字列、最大 60 文字いいえ指定した形式のファイルに絞り込みます。
max_files整数、1~200、既定値は 25いいえ返すファイルの上限です。
max_description_chars整数、100~20000、既定値は 2000いいえ返す説明文の文字数です。

返される内容: title、creator、year、media_type、source_url に加え、 description、date、publisher、language、collections、license_url を含む アイテム。レコードに記載がない項目はそれぞれ null になります。file_count は この応答で返されたかどうかにかかわらず、そのアイテムが保持するファイル数を示し、 total_bytes はその合計サイズを示します。files と full_metadata は、 sections で指定された場合にのみ含まれます。

search_books

アーカイブの隣にある作品インデックスから書籍を検索します。このインデックスは、スキャンされた個々の本ではなく、作品とその版を記述します。

ArgumentTypeRequiredWhat it does
querystring, 2 to 300 charactersno検索する自由入力テキストです。
subjectstring, 2 to 100 charactersnoインデックスで作品に割り当てられた主題です。
placestring, 2 to 100 charactersno作品が扱う場所です。
timestring, 2 to 100 charactersno作品が扱う時代です。
personstring, 2 to 100 charactersno作品が扱う人物です。
languagestring, 2 to 20 charactersno作品の言語です。
year_frominteger, 1 to 2200no初版刊行年の下限です。
year_tointeger, 1 to 2200no初版刊行年の上限です。
pages_mininteger, 1 to 100000no許容する作品の最小ページ数です。
pages_maxinteger, 1 to 100000no許容する作品の最大ページ数です。
sortrelevance, rating, readers, newest または oldest、既定値は relevanceno結果の並び順です。
limitinteger, 1 to 50, 既定値は 10no返す行数です。
pageinteger, 1 to 100, 既定値は 1no返す行のページ番号です。

返される内容: books。各項目には title、authors、first_published_year、edition_count、アーカイブが保有するスキャン版の archive_identifiers、scan_count、版全体の中央値としての page_count、subjects、source_url が含まれます。searched_for には、この回答が何に答えるものかを、自由入力テキストと適用されたすべての条件を含めて文章で示します。条件のみで検索した場合、query は null です。total は一致した作品の件数です。

list_snapshots

指定したアドレスについて、Wayback Machine が保持するキャプチャを一覧表示します。

ArgumentTypeRequiredWhat it does
urlstring, 3 to 2000 charactersyes検索するアドレスです。
limitinteger, 1 to 100, default 20no返すキャプチャ数です。
cursorstring, up to 500 charactersno前回の回答で示された next_cursor です。

返される内容: snapshots。各項目には、UTC の ISO タイムスタンプ形式の captured_at、キャプチャ自体の url、クロールで記録された status が含まれます。first と last は履歴全体ではなく、この回答の内容を示します。next_cursor を使うと、一覧の続きを取得できます。

get_snapshot

指定した日付またはその近くに取得された、あるアドレスのキャプチャを1件読み込みます。

引数型必須機能
urlstring, 3 to 2000 charactersはい検索するアドレスです。
atYYYY-MM-DD or an ISO timestampいいえ対象とする日付です。デフォルトでは最新のキャプチャが使われます。

戻り値: captured_at とアドレスを含む snapshot に加え、requested_url と requested_at が返されるため、指定した日付と提供されたキャプチャの日付の差を確認できます。Wayback Machine は、指定された日付のキャプチャがない場合、保有している中で最も近いキャプチャを返します。

抜粋の扱い

スキャンされた文書内のテキストは、光学文字認識によってページから読み取られたものです。そのため、文章にはその処理による誤読が含まれており、修正されず、読み取られたまま提供されます。つまり、不自然に見える単語は、機械がそのように読み取ったものです。スキャンの抜粋として文章を引用し、読者がページを確認できるよう、その資料へのリンクを付けてください。

設定

すべての変数は任意です。クライアント設定の env ブロックで設定してください。

変数デフォルト機能
IA_USER_AGENTthe project identityアーカイブにアプリケーション名と、担当者に連絡できるアドレスを通知します。
IA_MIN_INTERVAL_MS1000リクエスト間隔です。500~60000の範囲で指定します。
IA_TIMEOUT_MS200001件のリクエストの制限時間です。1000~120000の範囲で指定します。
IA_HISTORY_TIMEOUT_MS60000Wayback Machine の履歴取得の制限時間です。5000~180000の範囲で指定します。
IA_MAX_RETRIES3一時的な障害が発生した場合の再試行回数です。0~8の範囲で指定します。
IA_CACHE_TTL_MS900000回答をメモリに保持する時間です。0~86400000の範囲で指定します。
IA_CACHE_MAX_ENTRIES200メモリに同時に保持する回答の数です。1~5000の範囲で指定します。
IA_LOG_LEVELerrorsilent、error、info、debug のいずれかで、標準エラー出力に書き込まれます。

範囲外の値を指定するとデフォルト値が使われ、その理由が標準エラー出力に書き込まれます。

エラー

各エラーには、6 種類のコードのいずれか、メッセージ、そして役立つ場合は次の手順を示すヒントが含まれます。

コード発生したこと対処方法
not_foundアーカイブから応答がありましたが、その項目はありません。search_items で識別子を確認してください。
invalid_inputリクエストを送信する前に、引数が拒否されました。引数名が記載されたメッセージを読んでください。
rate_limitedアーカイブから、このクライアントのリクエストを遅らせるよう求められました。ヒントに記載された秒数だけ待ち、同じ引数で再度呼び出してください。項目は引き続き存在しています。
parse_failureこのクライアントでは読み取れない形式で応答が届きました。課題トラッカーで報告してください。
network_errorリクエストが完了しませんでした。少し待ってから再試行してください。
timeoutリクエストが期限を過ぎました。IA_TIMEOUT_MS を引き上げてください。キャプチャ履歴の場合は IA_HISTORY_TIMEOUT_MS を引き上げてください。

ライブラリとして

アーカイブを読み取るレイヤーは、独立した形で公開されています。リクエストの間隔調整、キャッシュ、エラーを備えており、プロトコルには依存しません。

import { ArchiveClient } from "mcp-archiveorg/client";

const client = new ArchiveClient();
const { data, cached } = await client.searchItems({ query: "san francisco earthquake" });
console.log(data.total, cached);

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

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

リクエストは 1 秒以上の間隔を空けて、1 件ずつ送信されます。また、サーバーの設定にかかわらず、最低 0.5 秒の間隔が適用されます。User-Agent の末尾には必ずプロジェクトの識別情報と、連絡可能な宛先が含まれます。Internet Archive は非営利の図書館であり、収蔵資料の検索は、同アーカイブが回答する問い合わせの中でも特に負荷の高いものです。

各結果には、読み取り元ページのアドレスが含まれます。項目は、それぞれの記録に license_url で記載された条件のもと、寄託した人々や機関に帰属します。

この MCP サーバーは非公式のプロジェクトであり、Internet Archive とは提携していません。

プライバシー

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

開発

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

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

貢献

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

ライセンス

MIT。詳細は LICENSE をご覧ください。項目は、それぞれの記録に記載された条件のもと、寄託者に帰属します。


mcp-archiveorg(フランス語)

英語版

Internet Archiveは、世界で公開されたものを保存する非営利の図書館です。デジタル化された書籍、映画、録音された音楽、ラジオ、ソフトウェア、そしてウェブページそのものを保存しています。ウェブページは1996年以降、Wayback Machineで繰り返し収集されてきました。所蔵する書籍や文書の多くは光学文字認識(OCR)処理されているため、本文を検索できます。また、併設されたOpen Libraryの索引には、作品や各版、主題が記載されています。

このサーバーは、会話型クライアントをこの図書館につなぎます。所蔵資料の全文検索、カタログ検索、資料の詳細情報やファイルの閲覧、主題・場所・時代・人物からの書籍検索、そして指定した日のウェブページの閲覧ができます。APIキーもアカウントも必要ありません。

インストール

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

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

Claude Code

claude mcp add archiveorg -- npx -y mcp-archiveorg

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

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

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

Dockerを使用する場合
{
  "mcpServers": {
    "archiveorg": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-archiveorg:2.0.2"]
    }
  }
}

-iはプロトコルの通信路である標準入力を開いたままにします。-tは、TTYがストリームを書き換えてしまうため省略しています。コンテナに必要なのは、archive.org、web.archive.org、openlibrary.orgへのHTTPS送信アクセスだけです。ボリューム、ポート、認証情報は必要ありません。

npmを使わないバンドル

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

できること

  • 「Beaumont灯台に言及している書籍はどれですか?」
  • 「1906年のサンフランシスコ地震に関する資料を探してください。」
  • 「この資料にはどのようなファイルが含まれていますか?また、ライセンスは何ですか?」
  • 「1900年以前に出版された、フランスの養蜂に関する書籍を探してください。」
  • 「2001年3月、このサイトはどのように見えていましたか?」

通常は検索結果から資料の詳細情報へ進みます。各行にはidentifierがあり、get_itemでその資料を読み取れます。

ツール

ツール機能
search_insideデジタル化された資料に含まれる語句を検索します。
search_itemsタイトル、著者、主題、メディア種別でカタログを検索します。
get_item資料の詳細情報、ファイル、ライセンスを読み取ります。
search_books主題、場所、時代、人物、長さ、出版年から書籍を探します。
list_snapshotsWayback Machineに保存されているアドレスのキャプチャを一覧表示します。
get_snapshot指定した日時またはその近辺のアドレスのキャプチャを読み取ります。
search_inside

ドキュメント内のテキストを検索します。テキストは光学文字認識によって取得されたものなので、検索結果にはこの処理による読み取り誤りが含まれることがあります。

引数型必須説明
query文字列、2~300 文字はいドキュメント内で検索する語句です。
limit整数、1~50、既定値は 10いいえ返す一致件数です。
page整数、1~100、既定値は 1いいえ一致結果の何ページ目かを指定します。
max_excerpt_chars整数、80~1200、既定値は 300いいえ返す抜粋の長さです。
max_excerpts_per_match整数、1~10、既定値は 3いいえ一致したドキュメントごとに返す抜粋の数です。

返される値: hits。各項目には、get_item で使用できる identifier、 title、creator、year、ページ上の機械読み取りテキストを示す excerpts、 抜粋を実際に含むファイルを示す matched_file、および source_url が含まれます。 複数のドキュメントをまとめたコンテナ内のいずれかに抜粋がある場合、 inside_container は true となり、その場合のタイトル、著者、年はコンテナのものです。

total はドキュメント数を数え、ページ分割されます。 これはドキュメント数であり、 セットの最終ページは最初のページより短くなります。ページ番号は取得できません。 インデックスはドキュメント内のテキストの位置を示しますが、ほとんどの一致結果では 1 となるため、ここでは書籍のページを示すものはなく、ページを主張するリンクもありません。

search_items

アーカイブに保存されているあらゆる種類のコンテンツを対象に、カタログ自体を検索します。

引数型必須説明
query文字列、1~300 文字はいカタログで検索する語句です。
media_typetexts、movies、audio、image、software、data または webいいえ残すアイテムの種類です。
year_from整数、1~2200いいえ最も古い年です。
year_to整数、1~2200いいえ最も新しい年です。
sortrelevance、downloads、newest、oldest または title、既定値は relevanceいいえ行の並び順です。
limit整数、1~50、既定値は 10いいえ返す行数です。
page整数、1~100、既定値は 1いいえ行の何ページ目かを指定します。

返される値: items。各項目には identifier、title、creator、year、 media_type、downloads、source_url が含まれます。レコードで空欄になっているフィールドは null になります。total はカタログ全体で一致したドキュメント数を数えるため、 返された件数を上回ることがあります。

get_item

ドキュメントの詳細情報を読み込みます。詳細情報は長くなる場合があるため、容量の大きい部分はデフォルトでは返さず、要求された場合にのみ返します。

引数型必須説明
identifier文字列、1~200文字はい行に記載されている識別子です。
sectionsbasic、files、full_metadata の配列、デフォルトは ["basic"]いいえ返す部分です。
file_format文字列、最大60文字いいえ指定した形式のファイルのみを返します。
max_files整数、1~200、デフォルトは 25いいえ返すファイル数の上限です。
max_description_chars整数、100~20000、デフォルトは 2000いいえ返す説明文の長さです。

返される内容: ドキュメントと、その title、creator、year、media_type、source_url に加え、description、date、publisher、language、collections、license_url が含まれます。詳細情報に記載がない項目はそれぞれ null です。file_count は、このレスポンスで返されたかどうかにかかわらず、ドキュメントに含まれるファイル数を示し、total_bytes はその合計サイズを示します。files と full_metadata は、sections で要求された場合にのみ含まれます。

search_books

アーカイブに併設された作品インデックスから書籍を検索します。このインデックスでは、デジタル化された個々の資料ではなく、作品とその版について説明しています。

引数型必須説明
query文字列、2~300文字いいえ自由入力テキスト(指定できる場合)。
subject文字列、2~100文字いいえインデックスが分類に使用する主題。
place文字列、2~100文字いいえ作品が扱う場所。
time文字列、2~100文字いいえ作品が扱う時代。
person文字列、2~100文字いいえ作品が扱う人物。
language文字列、2~20文字いいえ作品の言語。
year_from整数、1~2200いいえ最も古い初版年。
year_to整数、1~2200いいえ最も新しい初版年。
pages_min整数、1~100000いいえ許容する最も短い作品。
pages_max整数、1~100000いいえ許容する最も長い作品。
sortrelevance、rating、readers、newest、oldestのいずれか。デフォルトはrelevanceいいえ行の並び順。
limit整数、1~50、デフォルトは10いいえ返す行数。
page整数、1~100、デフォルトは1いいえ返す行のページ。

返される内容: books。各項目にはtitle、authors、 first_published_year、edition_count、アーカイブが所蔵するデジタル化資料の archive_identifiers、scan_count、各版の中央値としてのpage_count、subjects、 source_urlが含まれます。searched_forには、この応答が何に答えるものかを示す説明が含まれます。自由入力テキストと、適用された各条件が記載されます。条件のみで検索した場合、queryはnullです。totalは一致する作品の数です。

list_snapshots

Wayback Machineがあるアドレスについて保存しているキャプチャを一覧表示します。

引数型必須説明
url文字列、3~2000文字はい確認するアドレス。
limit整数、1~100、デフォルトは20いいえ返すキャプチャ数。
cursor最大500文字の文字列いいえ前の応答で示されたnext_cursor。

返される内容: snapshots。各項目には、UTCのISO形式タイムスタンプcaptured_at、キャプチャ自体のurl、収集時に記録されたstatusが含まれます。firstとlastは履歴全体ではなく、この応答の内容を示します。next_cursorを使うと一覧の続きを取得できます。

get_snapshot

指定した日時またはその近辺の日時における、URLのスナップショットを読み取ります。

引数型必須説明
url文字列、3~2000文字はい参照するURLです。
atAAAA-MM-JJ または ISO タイムスタンプいいえ対象の日時です。デフォルトでは最新のスナップショットが選ばれます。

戻り値: captured_at とアドレスを含む snapshot のほか、requested_url と requested_at も返されるため、指定した日時と提供されたスナップショットの日時の 差を確認できます。Wayback Machineは、指定した日時のスナップショットがない場合、 保有している中で最も近いものを返します。

抜粋の扱いについて

スキャン文書に含まれるテキストは、光学文字認識によって抽出されています。そのため、 一節にはこの処理による読み取り間違いが含まれている可能性があり、修正せずに 読み取ったまま提供されます。不自然に見える単語は、機械がそう読み取ったものです。 一節を引用する際はスキャン文書からの抜粋であることを明記し、読者がページを 確認できるよう、文書へのリンクを付けてください。

設定

各変数はすべて任意です。クライアント設定の env ブロックに設定します。

変数デフォルト説明
IA_USER_AGENTプロジェクトの識別情報アーカイブに対してアプリケーションを識別し、担当者に連絡できるアドレスを通知します。
IA_MIN_INTERVAL_MS1000リクエスト間の間隔です。500~60000の範囲で指定します。
IA_TIMEOUT_MS20000リクエストのタイムアウトです。1000~120000の範囲で指定します。
IA_HISTORY_TIMEOUT_MS60000Wayback Machineの履歴取得のタイムアウトです。5000~180000の範囲で指定します。
IA_MAX_RETRIES3一時的なエラー発生後の再試行回数です。0~8の範囲で指定します。
IA_CACHE_TTL_MS900000応答をメモリに保持する期間です。0~86400000の範囲で指定します。
IA_CACHE_MAX_ENTRIES200一度にメモリに保持する応答数です。1~5000の範囲で指定します。
IA_LOG_LEVELerrorsilent、error、info、debug のいずれかを指定します。標準エラー出力に書き込まれます。

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

エラー

各エラーには6つのコードのいずれか、メッセージ、そして役立つ場合は次に行う操作の案内が含まれます。

コード発生したこと対処方法
not_foundアーカイブから応答がありましたが、このドキュメントはありません。search_items で識別子を確認してください。
invalid_inputリクエストを送信する前に、引数が拒否されました。引数の名前が記載されたメッセージをお読みください。
rate_limitedアーカイブから、このクライアントに速度を落とすよう求められています。指定された秒数だけ待ち、同じ引数で再度呼び出してください。ドキュメントは引き続き利用できます。
parse_failure応答は届きましたが、ここでは読み取れない形式でした。インシデントトラッカーで報告してください。
network_errorリクエストが完了しませんでした。少し待ってから再試行してください。
timeoutリクエストがタイムアウトしました。IA_TIMEOUT_MS を増やしてください。履歴の場合は IA_HISTORY_TIMEOUT_MS を増やしてください。

ライブラリとして

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

import { ArchiveClient } from "mcp-archiveorg/client";

const client = new ArchiveClient();
const { data, cached } = await client.searchItems({ query: "san francisco earthquake" });
console.log(data.total, cached);

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

リクエスト間隔とクレジット表記

リクエストは1つずつ送信され、少なくとも1秒の間隔が空きます。また、設定にかかわらず、最低でも0.5秒の間隔が適用されます。User-Agent は必ずプロジェクト名と連絡先のメールアドレスで終わります。Internet Archive は非営利の図書館であり、所蔵資料の全文検索は、同機関が処理する中でも特に負荷の高いリクエストの1つです。

各検索結果には、取得元のページのアドレスが含まれます。ドキュメントの権利は、寄託した個人や機関に帰属し、それぞれの記録に記載された license_url の条件が適用されます。

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

プライバシー

このサーバーはユーザーに関する情報を収集せず、作者に情報を送信することもありません。お使いのマシン上で動作し、接続先は archive.org、web.archive.org、openlibrary.org のみです。動作中は応答をメモリに保持しますが、ディスクには何も書き込みません。PRIVACY.md では、リクエストに含まれる情報と、それを変更する設定について説明しています。

開発

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

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

コントリビュート

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

ライセンス

MIT です。LICENSEをご覧ください。ドキュメントの権利は寄託した人に帰属し、それぞれの記録に記載された条件が適用されます。

コメント

MCP は初めてですか?

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

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