mcpField
S
SNAC Archives

SNAC Archives

ローカル
github.com/ianderso検索03 週間前に更新

SNAC Archives について

人物、家族、組織のSNAC記録と関連するアーカイブ資料を検索する、研究者向けのMCPサーバーです。ArchiveGridの検索リンクも生成し、所蔵機関の特定を支援します。目録の記述は資料の内容を示す証拠ではなく、手掛かりとして扱います。

主な機能

  1. 01タイトルでアーカイブ資料を検索
  2. 02資料の記述と所蔵機関を確認
  3. 03所蔵機関ごとに資料を絞り込む
  4. 04人物・家族・組織の記録を検索
  5. 052つの名前に共通する資料を検索
  6. 06ArchiveGridの検索リンクを作成

活用シーン

  1. 01家族の手紙を所蔵する機関を特定する
  2. 02人物や組織に関連する資料を探す
  3. 032人に関連する資料を比較する
  4. 04ブラウザーで開くArchiveGrid検索を作成する

MCP 対応

stdio経由でMCPサーバーを提供し、MCPクライアントから起動できます。SNACの目録検索ツールを公開し、利用者が開くArchiveGrid検索リンクを作成します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"ianderso-snac-archives": {
"command": "uvx",
"args": [
"snac-archives-mcp"
],
"env": {
"SNAC_API_URL": "<SNAC_API_URL>",
"SNAC_CACHE_DIR": "<SNAC_CACHE_DIR>",
"SNAC_TIMEOUT": "<SNAC_TIMEOUT>",
"SNAC_CONTACT": "<SNAC_CONTACT>"
}
}
}
}
起動コマンドuvx snac-archives-mcp
設定が必要な環境変数
SNAC_API_URLThe SNAC REST API endpoint.
SNAC_CACHE_DIRDirectory for the on-disk response cache.
SNAC_TIMEOUTHTTP timeout in seconds. Holdings lists get 120 s of their own.
SNAC_CONTACTAn email address or URL appended to the User-Agent, so SNAC can reach whoever runs the server.

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

パッケージ
pypisnac-archives-mcp0.1.0

ツール

8

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

パラメーター型必須説明
pageintegerいいえ結果ページ番号。1 から始まります。
countintegerいいえ1 ページあたりのコレクション数(1~50)。
refreshbooleanいいえTrue の場合、キャッシュを使わずに SNAC に再照会し、キャッシュ済みのコピーを置き換えます。結果は 30 日間キャッシュされます。存在しないと結論付ける前に、キャッシュされた空の結果を更新してください。
title_wordsstringはいコレクションのタイトルにすべて含まれている必要がある語句。例:'Davenport family papers'。場所や 2 つ目の姓は通常、タイトルに含まれません。

詳細

snac-archives-mcp

CI PyPI

どのアーカイブに資料が所蔵されているかを探すためのMCPサーバーです。家族の手紙、教会の登録簿、商店の帳簿、郡役所の未整理書類などを探せます。こうした資料のほとんどはデジタル化されていません。オンラインで見つかるのは、図書館の目録レコードや検索補助資料だけであり、調査で難しいのは、どこを調べればよいかを知ることです。

このサーバーは、何千もの所蔵機関を対象に、人々、家族、組織、およびそれらの資料を所蔵するアーカイブコレクションのインデックスである**SNAC Cooperativeを検索します。データはCC0で、APIキーもアカウントも必要ありません。また、開くためのArchiveGrid**検索も作成します。ArchiveGridではSNACが見つけられない情報が見つかることがよくありますが、OCLCは自動アクセスを許可していないためです。

慎重な系図調査者と同じように動作します。返されるものはすべて検索補助資料であり、どこを調べるべきか、そこにおおよそ何があるかを示す証拠であって、文書に何が書かれているかを示すものではありません。ツールはそのことを明示し、所蔵機関が提供する検索補助資料へ案内します。引用するべきなのは、その説明です。

ここでは何も書き込まず、家系図を保存することもありません。このサーバーが見つけるのはコレクションです。資料から導き出した結論は、系図ソフトウェア、またはこのサーバーと並行して実行する家系図用MCPサーバーで管理してください。nara-catalog-mcp(連邦政府の記録)やfamilysearch-mcp(索引付き記録と画像)との併用にも適しています。

これは独立したプロジェクトです。SNAC Cooperative、University of Virginia、OCLCとは提携しておらず、承認や支援も受けていません。

ツール

このサーバーは、クライアント向けの注釈が付いた読み取り専用ツールを8つ公開しています。そのうち2つはネットワーク呼び出しを一切行いません。

コレクションを探す

ツール目的
search_collectionsタイトルに含まれる語句でコレクションを探します。各検索結果には、郵便住所、OCLC番号、リンクを含む所蔵機関が記載され、重複の可能性が高いもの(同じ資料が2回または3回目録化されているもの)に印が付けられます。
get_collection1つのコレクションの全情報を取得します。概要全文、資料の範囲、所蔵機関、リンク、SNACが関連付けている名前が含まれます。
repository_holdingsSNACが1つの所蔵機関に関連付けている情報を、タイトルで絞り込み、ページ分割して表示します。

人物、家族、組織を探す

ツール目的
search_names名前でSNACの名前レコードを探します。種類を人物、家族、または法人(教会、企業、団体、役所)に絞ることもできます。
get_name1つの名前レコードを取得します。見出し、日付、場所、伝記的な注記、識別子へのリンク(VIAF、Library of Congressなど)が含まれます。detail="full"を指定すると、関連する役割や名前とともに、紐付けられたすべてのコレクションが含まれます。
collections_in_common2つの名前の両方に紐付けられたコレクションを表示します。婚姻関係にある家族間の手紙や、先祖の関係者を探すのに役立ちます。

SNACで見つからない場合

ツール目的
archivegrid_search_link開くためのArchiveGrid検索を、フィールド指定構文で作成します。または、OCLC番号を指定してレコードへのリンクを作成します。リクエストは行いません。
cache_statusこのセッション中のライブ呼び出しとキャッシュヒットを表示します。リクエストは行いません。

セットアップ

Python 3.11以降とuvが必要です。申請するキーはありません。

クローンせずに使う場合。 uvxがPyPIから取得し、1つの手順で実行します。

uvx snac-archives-mcp

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

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

どちらの場合も、サーバーはstdio経由でMCPと通信するため、通常は手動で実行せず、MCPクライアントに起動させます。

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

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

Claude Code
claude mcp add snac -- uvx snac-archives-mcp

設定

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

変数意味
SNAC_API_URLSNAC REST エンドポイントです。デフォルトは https://api.snaccooperative.org/ です。https が必須です。サーバーが接続するのはこのホストのみです。
SNAC_CACHE_DIRレスポンスキャッシュのディレクトリです。デフォルトは ~/.cache/snac-archives-mcp です。
SNAC_TIMEOUTHTTP タイムアウトの秒数です。デフォルトは 60 秒です。所蔵リストの場合は 120 秒です。
SNAC_CONTACTUser-Agent に追加するメールアドレスまたは URL です。利用により問題が生じた場合に SNAC チームが連絡できるようにします。任意ですが、設定することをおすすめします。

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

適切に利用するために

SNAC は小規模な協同組合が運営する無料のサービスで、レート制限は公開していません。このサーバーは一度に 1 件ずつ、少なくとも 1 秒間隔でリクエストを送信します。同一の呼び出しが同時に行われた場合は、1 件のリクエストを共有します。また、すべての応答は 30 日間ディスクにキャッシュされます(コレクションの記録については長期間キャッシュされます)。429 または 5xx が返された場合は、バックオフを挟んで 3 回再試行し、その後 rate_limited または upstream_error として報告されます。これは「見つかりませんでした」とは異なります。再度問い合わせるには refresh=true を指定し、キャッシュ済みの空の結果については、何も存在しないと判断する前に更新してください。

取得した情報の読み方

  • 検索補助資料は記録そのものではありません。 コレクションの説明は、書類が存在することと、おおよそ何が含まれているかを示します。それだけを根拠に事実へ出典を付けないでください。代わりに、調査タスク(複製の請求、訪問の計画など)を記録してください。
  • 所蔵機関独自の検索補助資料を引用してください。 たとえば、「Wilder and Anderson Family Papers #01255, Southern Historical Collection, Wilson Library, UNC-Chapel Hill」のように、所蔵機関名とコレクション番号を記載します。SNAC や ArchiveGrid ではありません。これらは検索補助資料への索引です。link_kind が finding_aid の場合、リンク先はその資料です。それ以外の場合は、所蔵機関独自の目録でコレクションを検索してください。
  • 識別子を記録してください。 OCLC 番号は、WorldCat、ArchiveGrid、SNAC にまたがってコレクションを特定するのに役立ちます。SNAC ARK(ark:/99166/...)は、名前レコードの永続的な ID です。所蔵機関のコレクション番号も記録してください。WorldCat ではレコードが統合され、番号のリンク先が別のものに変わる場合があります。
  • 説明の詳細度は大きく異なります。 1 行の目録レコード(「Papers, 1881-1958」、4 箱)から、フォルダー単位の容器リストまでさまざまです。説明が簡潔だからといって、その人物が書類に含まれていないとは限りません。
  • タイトル検索はタイトルだけを検索します。 search_collections では、コレクションのタイトルに含まれるすべての語が必要です。「Davenport family papers」では 10 件のコレクションが見つかりますが、「Davenport family papers Lincoln County」では、郡名が要約にしか含まれていないため、何も見つかりません。search_names を使うか、place を指定して ArchiveGrid のリンクを使ってください。
  • 重複はよくあります。 1 つのコレクションが、WorldCat のレコードと、1 件または 2 件の収集された検索補助資料の両方に現れることがよくあります。所蔵機関名の表記が異なる場合もあります。possible_duplicate_of はタイトル内の語と年代でグループ化します。これは手掛かりであり、統合を意味するものではありません。
  • 名前レコードは本人確認を意味しません。 SNAC には「Anderson family」を見出しとするレコードが何百件もあり、区別する手掛かりはリンク先のコレクションだけということもあります。名前のコレクションで、creatorOf はその名前の本人が作成した書類を示します。referencedIn は、その名前がコレクションの索引語であることを示すだけで、いずれかの文書がその人物に関するものだとは限りません。maybe_same_count が 0 より大きい場合、SNAC は同一人物への誤統合の可能性があると判断しています。
  • 奴隷を所有していた家族の書類は、奴隷にされた先祖を調べるための主要な手掛かりです。 多くの説明では、奴隷にされた人々はカテゴリとしてしか記載されていません。先祖の名前だけでなく、その人々を所有していた家族の書類を検索してください。
  • 目録情報は古くなります。 SNAC のコレクション索引は、主に 2010 年代の抽出データから構築されています。コレクションは再処理、番号の変更、移管が行われます。また、州の歴史文書目録などの調査用「所蔵機関」には、数十年前の調査時点で町の書記官や教会が所蔵していた資料が記録されている場合があります。所蔵機関へ問い合わせる前に、現在の請求記号を確認してください。
  • ArchiveGrid の索引には限界があります。 location は所蔵機関の所在地、place は書類が扱っている場所です。名前、場所、主題の各索引が対象とするのは、目録レコードと EAD 検索補助資料のみです。HTML および PDF の検索補助資料では、キーワードのみが照合されます。複数の図書館が所蔵するレコードは含まれないため、郡や教会の記録のマイクロフィルムは通常見つかりません。その場合は WorldCat または FamilySearch Catalog を使ってください。

意図的に含めていないこと

  • SNAC への書き込み。 編集コマンドにはアカウントと API キーが必要です。クライアントは 6 つの読み取りコマンド以外は送信しないため、どのような引数を指定しても編集はできません。
  • ArchiveGrid からの取得。 OCLC の利用規約は、ロボットや自動コピーを禁じており、サイトも自動クライアントをブロックします。サーバーはアドレスを組み立てるだけで、実際に開くのは人です。
  • 所蔵機関独自のサイトからの検索補助資料の取得。 これを行うと、サーバーの対象が 1 つの API から何千ものホストへ広がり、それぞれにパーサーが必要となり、テキストの注入に対する攻撃対象領域も大幅に拡大します。将来的には、オプションとして追加される可能性があります。

セキュリティ

  • ホストは1つです。 リクエストフックは、設定された API ホスト宛てでないリクエストを拒否するため、モデルが渡した値によってサーバーが別のサイトにアクセスすることはありません。SNAC_API_URL は https である必要があります。
  • 識別子は検証されます。 数値 ID は ASCII 数字のみ、ARK は SNAC のパターンに一致するかをリクエストに渡る前に確認します。
  • カタログのテキストは信頼できません。 要約と経歴メモはカタログ作成者や投稿者によって書かれ、加工されずにモデルに渡されます。サーバーの指示では、モデルにそれらのテキストを考慮すべき資料として扱い、指示として扱わないよう伝えています。ただし、最終的に判断するのはモデルなので、モデルが実行しようとする内容を確認してください。

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

開発

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

ライブチェックでは、記録済みのフィクスチャでは確認できない点、つまり SNAC の応答がサーバーの読み取り可能な形式を保っているかを確認します。テストスイートの構成についてはCONTRIBUTING.md、API についてこれまでに確認された内容と時期についてはdocs/API-NOTES.md、サーバーがこのような構成になっている理由についてはdocs/DESIGN.mdをご覧ください。

クレジット

データはSNAC Cooperativeのもので、CC0 で公開されています。コレクションの記録は加盟機関から提供され、WorldCat および検索補助資料から収集されています。ArchiveGrid はOCLC Researchのプロジェクトです。

ライセンス

MIT。

コメント

MCP は初めてですか?

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

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