mcpField
C
CONTENTdm State Archives

CONTENTdm State Archives

ローカル
github.com/ianderso法務・行政03 週間前に更新

CONTENTdm State Archives について

CONTENTdm State Archivesは、米国の州立公文書館や図書館が公開するCONTENTdmコレクションを検索するMCPサーバーです。系譜研究者や歴史資料の調査者向けに、複数サイトの検索、資料やページの閲覧、画像の取得、引用情報の提示を行います。

主な機能

  1. 01CONTENTdmサイトの単独・横断検索
  2. 02サイトのコレクションと項目定義の確認
  3. 03資料メタデータ、転写文、引用情報の取得
  4. 04複合資料のページを順に表示
  5. 05IIIF経由でページ画像をダウンロード

活用シーン

  1. 01州立公文書館で系譜資料を探す
  2. 02冊子内で文字が一致するページを特定
  3. 03スキャン画像を確認して所蔵情報を記録

MCP 対応

このMCPサーバーはstdio経由で、読み取り専用の検索・資料閲覧ツールをMCPクライアントに提供します。CONTENTdmのJSON APIとIIIF画像サービスを利用し、画像取得時は新しいファイルを作成します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"ianderso-contentdm": {
"command": "uvx",
"args": [
"contentdm-mcp"
],
"env": {
"CONTENTDM_CACHE_DIR": "<CONTENTDM_CACHE_DIR>",
"CONTENTDM_TIMEOUT": "<CONTENTDM_TIMEOUT>",
"CONTENTDM_MIN_INTERVAL": "<CONTENTDM_MIN_INTERVAL>",
"CONTENTDM_CONTACT": "<CONTENTDM_CONTACT>",
"CONTENTDM_EXTRA_INSTANCES": "<CONTENTDM_EXTRA_INSTANCES>",
"CONTENTDM_DOWNLOAD_DIR": "<CONTENTDM_DOWNLOAD_DIR>"
}
}
}
}
起動コマンドuvx contentdm-mcp
設定が必要な環境変数
CONTENTDM_CACHE_DIRDirectory for the on-disk response cache.
CONTENTDM_TIMEOUTHTTP timeout in seconds for one request. Image downloads get 120 s to read.
CONTENTDM_MIN_INTERVALLeast seconds between two requests to one site. Never below 0.5.
CONTENTDM_CONTACTAn email address or URL appended to the User-Agent, so an institution can reach whoever runs the server.
CONTENTDM_EXTRA_INSTANCESMore CONTENTdm sites a tool may reach, beyond the curated ones and *.contentdm.oclc.org: https base URLs separated by commas, or the absolute path of a YAML file shaped like instances.yaml.
CONTENTDM_DOWNLOAD_DIRAn existing folder. When set, get_image saves only inside it; needed to save under ~/Library, such as an iCloud Drive folder.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypicontentdm-mcp0.1.0

ツール

8

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
statestringいいえ対象に含める 2 文字の州コード。例:'TN' または 'GA,AL'。
include_unsupportedbooleanいいえCONTENTdm を離脱したサイト、またはブロックされているサイトも一覧表示します。

詳細

contentdm-mcp

CI PyPI

CONTENTdm で公開されている米国の州立公文書館や州立図書館の記録画像を扱う MCP サーバーです。死亡証明書とその年次索引、南部連合軍の年金申請書類、有権者名簿、刑務所の記録簿、郡裁判所や遺産関連の書類、手紙や日記のほか、各機関が追加した翻刻テキストや OCR テキストも対象です。

CONTENTdm は、OCLC がホストするデジタルコレクションプラットフォームです。アラバマ州公文書館・歴史局、Georgia Archives の Virtual Vault、テネシー州立図書館・公文書館、Ohio Memory、Illinois Digital Archives、Indiana State Library、Missouri Digital Heritage など、多くの機関がこのプラットフォームを利用しており、どのサイトも同じ認証不要の JSON API と IIIF 画像サービスを提供しています。このサーバーには、厳選されたサイトのリストが含まれており、その中の1つまたは複数を同時に検索し、アイテムとそのページを読み取り、ページ画像をダウンロードして閲覧できます。

慎重な系譜研究者と同じように動作します。**証拠となるのはページ画像です。**翻刻テキストや OCR テキストは、読むべきページを示す手がかりであり、索引カードは、その背後にある記録を見つけるための手引きです。すべての検索結果には、所蔵機関のアイテムアドレスと引用に必要な情報(機関、コレクション、タイトル、識別子、アドレス)が含まれます。引用するのはこのサーバーではなく、アイテムのページだからです。

ここではどこにも書き込みを行わず、家系図を保存することもありません。dpla-catalog-mcp と併用すると便利です。これは数百のコレクションからアイテムを見つけて、機関のアドレスを返します(get_item にそのアドレスを直接指定できます)。連邦政府の記録については、nara-catalog-mcp をご利用ください。

これは独立したプロジェクトです。OCLC や、このサーバーが閲覧するいずれの機関とも提携、承認、支援の関係はありません。

ツール

このサーバーは8つのツールを提供します。get_image 以外はすべて読み取り専用です。get_image は新しいファイルを1つ書き込みますが、既存のファイルを上書きすることはありません。

検索

ツール用途
list_instances厳選されたサイトの一覧です。各サイトの運営機関、系譜研究者に役立つ所蔵資料、再利用条件、確認日を示します。CONTENTdm を離れたサイトは、移行先とともに掲載されています。リクエストは行いません。
list_collectionsサイトのコレクションと、それぞれの検索に使う別名を表示します。
get_collection1つのコレクションのフィールドを表示します。search の field で指定できるフィールドと、翻刻テキストまたは OCR テキストが格納されているフィールドを確認できます。
search1つのサイト、または複数のサイトを並行して検索します。どのサイトが応答したか、失敗したか、タイムアウトしたかを示すため、検索結果がなかった場合も対象範囲が明確です。page_hits は、テキストが一致した巻内のページを返します。

閲覧

ツール用途
get_item1つのアイテムのメタデータ、翻刻テキストまたは OCR テキスト、機関独自の「引用方法」および権利に関する記述、引用に必要な情報を取得します。ページの場合は、どのオブジェクトの何ページ目かも表示します。サイトがアクセス可能であれば、DPLA の isShownAt などのアイテムアドレスを指定できます。
get_pages複合オブジェクトのページを順に表示します。query を使って一致したページを示せます。
get_imageサイトの IIIF サービスを通じて、サイズを調整した1ページ分の画像をダウンロードします。複数ページ PDF の各ページも対象にできます。新しい .jpg として保存し、隠しファイルや ~/Library 配下には保存しません。
cache_statusこのセッションでのサイトごとのリクエストとキャッシュの使用状況を表示します。リクエストは行いません。

厳選したサイト

list_instances で一覧全体を取得できます。2026-10-06 時点では 18 のサイトから応答があり、7 件のエントリーには CONTENTdm を離れた機関が記録されているため、検索時に移転先を確認できます。

州サイト状態
ALAlabama Department of Archives and History対応
AKAlaska's Digital Archives対応
ARArkansas State Archives対応
CTConnecticut State Library対応
DEDelaware Division of Libraries(Delaware Public Archives と連携)対応
GAGeorgia Archives, Virtual Vault対応
ILIllinois Digital Archives対応
INIndiana State Library (Indiana Memory); Ball State University対応
KYKentucky Digital Library対応
MOMissouri Digital Heritage対応
NDDigital Horizons対応
NMNew Mexico Digital Collections(State Records Center and Archives と連携)対応
NVNevada State Library, Archives and Public Records対応
OHOhio Memory対応
OKOklahoma Department of Libraries(Oklahoma State Archives と連携)対応
TNTennessee State Library and Archives (TeVA)対応
WAWashington Rural Heritage対応
AZArizona Memory ProjectCONTENTdm を離脱。ボットチェックあり
ID, SD州立公文書館のデジタルコレクションPreservica に移転
MTMontana Memory ProjectRecollect に移転
NCState Archives of North CarolinaQuartex に移転
PAPOWER LibraryIslandora に移転
WIWisconsin Historical Society独自サイトに移転

ほかの CONTENTdm サイトも、cdmNNNNN.contentdm.oclc.org のアドレスで利用できます。https://cdmNNNNN.contentdm.oclc.org を instance として渡してください。各サイト独自のドメインにかかわらず、すべてのクラシックサイトがこのアドレスで応答し、ページのソースには番号が記載されています("cdmServerUrl": "serverNNNNN.contentdm.oclc.org")。サイトは 675 を超えますが、レジストリはありません。サイト独自のドメインで利用するには、CONTENTDM_EXTRA_INSTANCES に追加してください。セキュリティ上の理由から、ツールの引数では追加できません。詳しくはセキュリティをご覧ください。

セットアップ

Python 3.11 以降と uv が必要です。キーの申請は不要です。

クローンせずに使用する場合。 uvx が PyPI から取得し、1 ステップで実行します。

uvx contentdm-mcp

クローンから使用する場合は、変更を加える予定があるときに適しています。

git clone https://github.com/ianderso/contentdm-mcp
cd contentdm-mcp
uv sync
uv run contentdm-mcp   # stdio server, usually launched by the client

どちらの場合も、サーバーは stdio 経由で MCP を使用します。そのため通常は、手動で実行するのではなく、MCP クライアントから起動します。

Claude Desktop
{
  "mcpServers": {
    "contentdm": {
      "command": "uvx",
      "args": ["contentdm-mcp"]
    }
  }
}

デスクトップアプリがシェルの PATH を常に引き継ぐとは限りません。uvx が見つからずサーバーが起動しない場合は、which uvx が出力するフルパスを command として指定してください。

Claude Code
claude mcp add contentdm -- uvx contentdm-mcp

設定

設定は不要です。サーバーを起動するディレクトリにある .env ファイルで、不足している環境変数を指定できます。読み込まれるのはそのディレクトリだけです。

変数意味
CONTENTDM_CACHE_DIRレスポンスキャッシュのディレクトリです。デフォルトは ~/.cache/contentdm-mcp です。
CONTENTDM_TIMEOUT1 回のリクエストに対する HTTP タイムアウトの秒数です。デフォルトは 30 秒です。画像のダウンロードでは読み取りに 120 秒かかります。
CONTENTDM_MIN_INTERVAL1 つのサイトへの 2 回のリクエストの間に空ける最小秒数です。デフォルトは 1 秒で、0.5 秒未満にはなりません。
CONTENTDM_CONTACTUser-Agent に追加されるメールアドレスまたは URL です。利用によって問題が生じた場合に、機関から連絡を受けられるようにします。任意ですが、設定することをおすすめします。
CONTENTDM_EXTRA_INSTANCES各サイトの独自ドメインからツールがアクセスできる追加サイトです。カンマ区切りの https ベース URL、または instances.yaml のエントリーと同じ形式(必須なのは base_url のみ)の項目を含む YAML ファイルの絶対パスを指定します。list_instances には表示されますが、全サイトを対象とする検索には含まれません。
CONTENTDM_DOWNLOAD_DIR既存のフォルダーです。設定すると、get_image はその中にのみ保存します。~/Library の下にある iCloud Drive フォルダーに保存するには、そのフォルダーを指定します。

使用できない値がある場合、最初のツール呼び出し時に、その変数名を示す not_configured 結果として報告されます。

利用先への配慮

各サイトは、機関ごとのサーバーです。クライアントは各サイトに対して一度に 1 件ずつ、最低 1 秒の間隔を空けてリクエストを送ります。複数サイトをまたぐ検索では、1 度に 6 件ずつ並行して実行するため、各サイトから見ると同時にアクセスする利用者は 1 人以下です。処理中の同一の呼び出しが 2 件ある場合、リクエストは共有されます。コレクション一覧とフィールド定義は 30 日間、アイテムは 7 日間、検索結果は 1 日間キャッシュされます。429、5xx、または接続切断が発生した場合は、Retry-After に従って 1 回再試行します。User-Agent には、パッケージ名、バージョン、このリポジトリが含まれます。

これらのサイトの robots.txt が拒否しているのはウェブサイトの検索ページであり、このサーバーが使用する API ではありません。画像の利用については、各機関独自の規約に従ってください。list_instances と get_item はサイトに記載された内容を返しますが、公開前に許可を得るよう求めている機関もあります。

返される情報の読み方

  • 検索の範囲は answered に含まれるサイトに限られます。 failed、timed_out、not_searched には、検索で見つからなかったという結果の対象外となるサイトが列挙されます。リダイレクトされたり、ボット確認を求められたり、コレクションが見つからなかったりするサイトは、通常、移転しています。
  • 検索対象はメタデータとテキストフィールドで、画像は対象外です。 レコード画像の多くにはテキストがまったく含まれていないため、どの検索でも見つからない名前がページ上にある場合があります。代わりに、コレクションまたは索引の巻から閲覧してください。
  • 複合オブジェクトのテキストは各ページにあります。 巻、ファイル、新聞の号は複合オブジェクトであり、それ自体の文字起こしフィールドは通常空です。ページを見つけるには、page_hits=true を使うか、query を指定して get_pages を使います。
  • フィールド名はコレクションごとに異なります。 あるコレクションでは「父親の名前」が namea、別のコレクションでは father です。get_collection には、どの名前がどの項目を指すかと、文字起こしフィールドがどれかが示されます。サイトによって名前が異なるため、文字起こしフィールドはタイプで示されます。
  • 「文字起こし」が機械による OCR の場合もあります。 テネシー州の重要記録索引には、このラベルで OCR が掲載されています。画像を確認してください。
  • exact はフレーズ検索です。(語句が順序どおりに続くものを検索します。)フィールド全体の完全一致ではありません。all はすべての語句、any はいずれかの語句を必要とします。
  • PDF アイテムには複数ページが含まれる場合があります。 IIIF 画像には最初のページが表示されます。それ以外のページには、pdf_page を指定した get_image でアクセスできます。
  • page はオブジェクト内の位置を示し、 1 から数えます。スキャンに印字されたページ番号ではありません。テネシー州の 1960~1964 年死亡索引の第 8 巻では、Sgt. Alvin C. York の項目は 461 ページにあります。スキャンの名前は 54784_460 で、457 と印字されています。異なる場合は、印字された番号も併記してください。
  • アイテムのページを引用してください。 各結果に含まれる citation と、get_item が見つけた場合は機関独自の cite_as 行を使用してください(ジョージア州、オクラホマ州、アラスカ州のアイテムには記載があります)。アイテムを再び見つけられるよう、識別子(alias:pointer)を記録してください。

意図的に含めていない機能

  • サイトへの書き込み。 CONTENTdm の書き込み機能には、スタッフのログインが必要です。
  • 他のプラットフォームのサイト。 新しい CONTENTdm(2026-09-22 に公開)には公開 API がなく、Quartex の API はドキュメント化されていません。ツールはアダプターレイヤーを介して通信するため、ツールを変更せずにどちらも追加できます。詳しくは docs/DESIGN.md を参照してください。
  • ボットチェックの回避。 チャレンジを返すサイトはブロックされたものとして報告し、それ以上アクセスしません。

セキュリティ

ツールの引数はモデルが作成し、モデルはこのサーバーが制御できないテキスト(タイトル、書き起こし、DPLA レコード、ウェブページ)を読み取ります。このサーバーは、そのテキストがモデルを誘導する可能性を想定し、誘導されたモデルに実行させられる操作を制限します。

  • 接続先ホスト。 ツールがアクセスするのは、厳選されたサイト、contentdm.oclc.org 配下の任意のアドレス(OCLC 独自のサーバー)、および CONTENTDM_EXTRA_INSTANCES に指定したサイトです。それ以外のホストは、名前が解決される前に拒否されます。secret.attacker.example の DNS クエリを行うだけでも、その名前が外部に伝わってしまうためです。拒否時には、代わりにサイトへアクセスする方法が示されます。
  • 接続先アドレス。 接続のたびに接続先で検証します。プライベート、ループバック、リンクローカル、CGNAT、マルチキャスト、予約済み、または未指定の IPv4/IPv6 アドレスにつながる名前は拒否され、接続先は検証済みのアドレスになります。リダイレクトは同一インスタンスのホスト間でのみ追跡し、再度検証します。環境変数のプロキシ設定は使用しません。
  • データ量。 10 MB を超える JSON 応答、または 60 MB を超える画像は、ストリーミング中に拒否されます。
  • ファイル。 get_image は新しいファイルを 1 つ作成し、既存ファイルを上書きしません。バイト列は Content-Type ではなく先頭のバイトから画像と判定され、ファイルの拡張子が示す形式(.jpg または .jpeg)である必要があります。隠しファイルやフォルダー、~/Library 配下は対象外です。また、CONTENTDM_DOWNLOAD_DIR が設定されている場合は、そのディレクトリの外側も対象外です。これらはすべてリンクの解決後に判定されます。ダウンロードが拒否された場合、ディスクには何も残りません。
  • 引数は検証されます。 リクエストに渡す前に、コレクションの別名、フィールドのニックネーム、数値ポインターを検証し、検索語から API 独自の構文文字を取り除きます。
  • サイトのテキストは信頼できません。 タイトル、説明、書き起こしはそのままモデルに渡されます。サーバーの指示では、モデルにそれらのテキストを指示ではなく検討対象の情報として扱うよう伝えていますが、最終的な判断はモデルが行うため、モデルが実行しようとする操作を確認してください。

脆弱性の報告については、SECURITY.md を参照してください。

開発

uv sync --extra dev
uv run pytest                      # mocked with respx; never touches a site
uv run ruff check .
uv run ruff format --check .
uv run python -m tests.live_check  # paced calls to the live sites

ライブチェックでは、記録済みのフィクスチャでは確認できないことをサイトに問い合わせます。具体的には、応答がサーバーの読み取り可能な形式を保っているか、また、厳選されたすべてのサイトが引き続き応答するかを確認します。テストスイートの構成については CONTRIBUTING.md、API について確認された内容とその時期については docs/API-NOTES.md、サーバーがこのような設計になっている理由については docs/DESIGN.md を参照してください。

クレジット

画像と説明は、それらを公開している機関に帰属します。CONTENTdm は OCLC の製品です。

ライセンス

MIT。

コメント

MCP は初めてですか?

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

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