mcp-archiveorg について
mcp-archiveorgは、Internet Archiveの書籍、カタログ記録、Waybackの保存ページをMCPクライアントに提供します。全文検索や書籍検索、項目の詳細確認、日付指定でのページ閲覧に対応し、APIキーやアカウントは不要です。
主な機能
- 01スキャン文書内の全文検索
- 02カタログ項目の検索と絞り込み
- 03項目の記録、ファイル、ライセンスの確認
- 04主題などの条件による書籍検索
- 05Wayback保存ページの一覧と閲覧
活用シーン
- 01デジタル化された書籍から文章を探す
- 02メディア種別や年でアーカイブを閲覧
- 03項目のファイルとライセンスを確認
- 04指定日のウェブサイトの表示を調べる
MCP 対応
Internet Archiveの検索、項目、書籍インデックス、Wayback機能をMCPクライアント向けのツールとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
6掲載時のツール一覧 · 6 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| page | integer | いいえ | 一致する結果のページ番号。1 から始まります。ページ送りは 100 ページで停止します。 |
| limit | integer | いいえ | 返す一致件数。 |
| query | string | はい | 検索する単語または引用符付きの語句。例:'"call me ishmael"'。 |
| max_excerpt_chars | integer | いいえ | 1 つの該当箇所に割り当てる文字数。'max_excerpts_per_match' と合わせて確認してください。回答のサイズは、これら 2 つの値の積に一致数を掛けたものです。 |
| max_excerpts_per_match | integer | いいえ | 一致ごとに保持する該当箇所の数。索引は長い作品内で複数の箇所を見つけますが、後の箇所に最初の箇所にない情報が含まれることはほとんどありません。 |
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
mcp-archiveorg
インターネット・アーカイブは、世界で公開されたものを保存する非営利の図書館です。スキャンした書籍、映画、録音音楽、ラジオ、ソフトウェア、そしてウェブページそのものを保管しています。1996年以降、ウェイバックマシンで繰り返し保存されてきました。所蔵する何百万もの書籍や文書には光学文字認識が適用されており、内部の文章を検索できます。また、併設されたオープン・ライブラリーの索引には、著作、版、主題が記載されています。
このサーバーは、チャットクライアントをこの図書館に接続します。文書内の全文検索、アイテムカタログの検索、アイテムの記録とファイルの閲覧、主題・場所・時代・人物による書籍の検索、指定日のウェブの閲覧ができます。API キーもアカウントも必要ありません。
インストール
ワンクリックでインストール
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_snapshots | Wayback 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_type | texts、movies、audio、image、software、data、または web | いいえ | 残す資料の種類です。 |
year_from | 整数、1~2200 | いいえ | 最も古い年です。 |
year_to | 整数、1~2200 | いいえ | 最も新しい年です。 |
sort | relevance、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 文字 | はい | 検索結果の行に含まれる識別子です。 |
sections | basic、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
アーカイブの隣にある作品インデックスから書籍を検索します。このインデックスは、スキャンされた個々の本ではなく、作品とその版を記述します。
| Argument | Type | Required | What it does |
|---|---|---|---|
query | string, 2 to 300 characters | no | 検索する自由入力テキストです。 |
subject | string, 2 to 100 characters | no | インデックスで作品に割り当てられた主題です。 |
place | string, 2 to 100 characters | no | 作品が扱う場所です。 |
time | string, 2 to 100 characters | no | 作品が扱う時代です。 |
person | string, 2 to 100 characters | no | 作品が扱う人物です。 |
language | string, 2 to 20 characters | no | 作品の言語です。 |
year_from | integer, 1 to 2200 | no | 初版刊行年の下限です。 |
year_to | integer, 1 to 2200 | no | 初版刊行年の上限です。 |
pages_min | integer, 1 to 100000 | no | 許容する作品の最小ページ数です。 |
pages_max | integer, 1 to 100000 | no | 許容する作品の最大ページ数です。 |
sort | relevance, rating, readers, newest または oldest、既定値は relevance | no | 結果の並び順です。 |
limit | integer, 1 to 50, 既定値は 10 | no | 返す行数です。 |
page | integer, 1 to 100, 既定値は 1 | no | 返す行のページ番号です。 |
返される内容: 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 が保持するキャプチャを一覧表示します。
| Argument | Type | Required | What it does |
|---|---|---|---|
url | string, 3 to 2000 characters | yes | 検索するアドレスです。 |
limit | integer, 1 to 100, default 20 | no | 返すキャプチャ数です。 |
cursor | string, up to 500 characters | no | 前回の回答で示された next_cursor です。 |
返される内容: snapshots。各項目には、UTC の ISO タイムスタンプ形式の captured_at、キャプチャ自体の url、クロールで記録された status が含まれます。first と last は履歴全体ではなく、この回答の内容を示します。next_cursor を使うと、一覧の続きを取得できます。
get_snapshot
指定した日付またはその近くに取得された、あるアドレスのキャプチャを1件読み込みます。
| 引数 | 型 | 必須 | 機能 |
|---|---|---|---|
url | string, 3 to 2000 characters | はい | 検索するアドレスです。 |
at | YYYY-MM-DD or an ISO timestamp | いいえ | 対象とする日付です。デフォルトでは最新のキャプチャが使われます。 |
戻り値: captured_at とアドレスを含む snapshot に加え、requested_url と requested_at が返されるため、指定した日付と提供されたキャプチャの日付の差を確認できます。Wayback Machine は、指定された日付のキャプチャがない場合、保有している中で最も近いキャプチャを返します。
抜粋の扱い
スキャンされた文書内のテキストは、光学文字認識によってページから読み取られたものです。そのため、文章にはその処理による誤読が含まれており、修正されず、読み取られたまま提供されます。つまり、不自然に見える単語は、機械がそのように読み取ったものです。スキャンの抜粋として文章を引用し、読者がページを確認できるよう、その資料へのリンクを付けてください。
設定
すべての変数は任意です。クライアント設定の env ブロックで設定してください。
| 変数 | デフォルト | 機能 |
|---|---|---|
IA_USER_AGENT | the project identity | アーカイブにアプリケーション名と、担当者に連絡できるアドレスを通知します。 |
IA_MIN_INTERVAL_MS | 1000 | リクエスト間隔です。500~60000の範囲で指定します。 |
IA_TIMEOUT_MS | 20000 | 1件のリクエストの制限時間です。1000~120000の範囲で指定します。 |
IA_HISTORY_TIMEOUT_MS | 60000 | Wayback Machine の履歴取得の制限時間です。5000~180000の範囲で指定します。 |
IA_MAX_RETRIES | 3 | 一時的な障害が発生した場合の再試行回数です。0~8の範囲で指定します。 |
IA_CACHE_TTL_MS | 900000 | 回答をメモリに保持する時間です。0~86400000の範囲で指定します。 |
IA_CACHE_MAX_ENTRIES | 200 | メモリに同時に保持する回答の数です。1~5000の範囲で指定します。 |
IA_LOG_LEVEL | error | silent、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キーもアカウントも必要ありません。
インストール
ワンクリックでインストール
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_snapshots | Wayback 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_type | texts、movies、audio、image、software、data または web | いいえ | 残すアイテムの種類です。 |
year_from | 整数、1~2200 | いいえ | 最も古い年です。 |
year_to | 整数、1~2200 | いいえ | 最も新しい年です。 |
sort | relevance、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文字 | はい | 行に記載されている識別子です。 |
sections | basic、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 | いいえ | 許容する最も長い作品。 |
sort | relevance、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です。 |
at | AAAA-MM-JJ または ISO タイムスタンプ | いいえ | 対象の日時です。デフォルトでは最新のスナップショットが選ばれます。 |
戻り値: captured_at とアドレスを含む snapshot のほか、requested_url と
requested_at も返されるため、指定した日時と提供されたスナップショットの日時の
差を確認できます。Wayback Machineは、指定した日時のスナップショットがない場合、
保有している中で最も近いものを返します。
抜粋の扱いについて
スキャン文書に含まれるテキストは、光学文字認識によって抽出されています。そのため、 一節にはこの処理による読み取り間違いが含まれている可能性があり、修正せずに 読み取ったまま提供されます。不自然に見える単語は、機械がそう読み取ったものです。 一節を引用する際はスキャン文書からの抜粋であることを明記し、読者がページを 確認できるよう、文書へのリンクを付けてください。
設定
各変数はすべて任意です。クライアント設定の env ブロックに設定します。
| 変数 | デフォルト | 説明 |
|---|---|---|
IA_USER_AGENT | プロジェクトの識別情報 | アーカイブに対してアプリケーションを識別し、担当者に連絡できるアドレスを通知します。 |
IA_MIN_INTERVAL_MS | 1000 | リクエスト間の間隔です。500~60000の範囲で指定します。 |
IA_TIMEOUT_MS | 20000 | リクエストのタイムアウトです。1000~120000の範囲で指定します。 |
IA_HISTORY_TIMEOUT_MS | 60000 | Wayback Machineの履歴取得のタイムアウトです。5000~180000の範囲で指定します。 |
IA_MAX_RETRIES | 3 | 一時的なエラー発生後の再試行回数です。0~8の範囲で指定します。 |
IA_CACHE_TTL_MS | 900000 | 応答をメモリに保持する期間です。0~86400000の範囲で指定します。 |
IA_CACHE_MAX_ENTRIES | 200 | 一度にメモリに保持する応答数です。1~5000の範囲で指定します。 |
IA_LOG_LEVEL | error | silent、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をご覧ください。ドキュメントの権利は寄託した人に帰属し、それぞれの記録に記載された条件が適用されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。