mcpField
G
GOV Historical Gazetteer

GOV Historical Gazetteer

ローカル
github.com/ianderso地図・旅行03 週間前に更新

GOV Historical Gazetteer について

ドイツおよび旧ドイツ・プロイセン領を中心とする、系譜調査向けの GOV 歴史地名録 MCP サーバーです。年ごとの地名、行政区画、教区、戸籍役場を調べ、GOV の項目を示す引用情報も返します。

主な機能

  1. 01歴史的な地名の検索
  2. 02指定年の行政区画の確認
  3. 03教区と戸籍役場の検索
  4. 04日付付きの場所の包含関係の取得
  5. 05GOV 項目の引用情報の表示

活用シーン

  1. 01出来事当時の行政区画を特定する
  2. 02歴史的な場所に対応する教区簿を探す
  3. 03年代による変化を反映した系譜上の地名ツリーを作る

MCP 対応

stdio 経由で MCP クライアントに GOV の地名検索ツールを提供します。すべてのツールは読み取り専用で、GOV の公開サービスを利用します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"ianderso-gov-gazetteer": {
"command": "uvx",
"args": [
"gov-gazetteer-mcp"
],
"env": {
"GOV_GAZETTEER_CACHE_DIR": "<GOV_GAZETTEER_CACHE_DIR>",
"GOV_GAZETTEER_TIMEOUT": "<GOV_GAZETTEER_TIMEOUT>",
"GOV_GAZETTEER_MIN_INTERVAL": "<GOV_GAZETTEER_MIN_INTERVAL>",
"GOV_GAZETTEER_CONTACT": "<GOV_GAZETTEER_CONTACT>"
}
}
}
}
起動コマンドuvx gov-gazetteer-mcp
設定が必要な環境変数
GOV_GAZETTEER_CACHE_DIRDirectory for the on-disk response cache.
GOV_GAZETTEER_TIMEOUTHTTP timeout in seconds for one request.
GOV_GAZETTEER_MIN_INTERVALLeast seconds between two requests to GOV. Never below 1.
GOV_GAZETTEER_CONTACTAn email address or URL appended to the User-Agent, so CompGen can reach whoever runs the server.

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

パッケージ
pypigov-gazetteer-mcp0.1.0

ツール

6

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

パラメーター型必須説明
namestringはい地名。例:'Quedlinburg'。呼び出しごとに 1 つの綴りを指定します。
limitintegerいいえ返す候補の最大数(1~100)。
withinstringいいえGOV が任意の日付にこのオブジェクト内にあると記録している地名のみ:Kreis、州、または地方の GOV ID。例:'adm_133152'。
refreshbooleanいいえ7 日間のキャッシュを使わず、GOV に再問い合わせします。
place_typestringいいえ次のタイプに絞ります:ID、GOV のドイツ語名称('Dorf'、'Kirchspiel'、'Standesamt')、または settlement、civil、parish、standesamt、court。カンマ区切りです。

詳細

gov-gazetteer-mcp

CI PyPI

GOV(Geschichtliches Orts-Verzeichnis)のためのMCP サーバーです。GOVは、Verein für Computergenealogie(CompGen)が運営する歴史的地名録で、約120万件の場所を収録しています。その大半はドイツと、かつてドイツ領またはプロイセン領だった地域の場所です。GOVでは、場所について記録するすべての情報に年代が付与されています。名称、当時の場所の種類、そしてその場所を包含していたすべての行政区画と教会区画が記録されています。

そのため、ドイツの村について系譜調査をする人が尋ねる疑問に答えるツールとなります。**出来事が起きた年、その村はどの郡、州、国に属していて、どの教区と戸籍役場が記録を保管していたのでしょうか?**ポーゼンの村は1919年までプロイセン領で、1920年以降はポーランド領でした。ポメラニアの村は1945年までドイツ領でした。郡の名称が変わったり、行政区が廃止されたり、教区が統合されたりしました。このサーバーはGOVの公開ウェブサービスを読み取り、特定の年について回答します。また、系譜プログラムが日付ごとに正しい場所の階層を作成するために必要な、年代付きの包含関係を提供します。

慎重な系譜調査者と同じように動作します。**地名録の項目は調査の手掛かりであり、証拠ではありません。**GOVはボランティアが編集しています。教区や戸籍役場へのリンクは、どの記録を調べるべきかを示すものであり、記録そのものに記載された見出しで確認する必要があります。各結果にはGOVとCompGenが明記され、各対象のGOVページのアドレスが含まれます。引用に使うのはそのページだからです。

ここでは何も書き込まず、家系図も保存しません。familysearch-mcpと組み合わせて使うと便利です。familysearch-mcpの場所ツールは日付に基づいて場所を特定できますが、教区や戸籍役場の情報は持っていません。また、アメリカの郡に対応するツールとしてus-places-mcpもあります。

これは独立したプロジェクトです。Verein für Computergenealogieとは提携しておらず、同団体による承認や支援も受けていません。

ツール

サーバーは6つのツールを公開しています。すべて読み取り専用です。

ツール目的
gov_search名称から場所を検索します。GOV ID、名称、種類、座標、現在の上位区画を取得します。withinを指定すると、任意の日付に郡、州、国の内部に位置するものに検索を限定できます。place_typeを指定すると、村、教区、戸籍役場などに絞り込めます。
gov_object1つの対象の全情報を取得します。すべての名称と言語および年代、すべての種類と年代、座標、外部ID、さらに期間とGOVの出典IDが付いた、すべての「一部である」「所在する」「代表する」関係を取得します。childrenには、その対象の内部にあるもの(教区の村など)を一覧表示します。GOV ID、GOVページのアドレス、またはgeonames:2851465のような外部IDを指定します。
gov_place_at_dateある場所について、指定した年の名称と、国までの民政上の階層を取得します。各階層には種類とリンクの期間が含まれます。GOVで期間が記録されていないリンクや、別の年にのみ確認されているリンクには、その旨が表示されます。
gov_registers指定した年にその場所を管轄していた教区(GOVに記録がある場合は宗派別)と戸籍役場、各教区の上位にあり帳簿を所蔵している可能性がある機関、および地方裁判所を取得します。GOVに教区や戸籍役場の記録がない場合は、その旨を明示します。
gov_enclosuresある場所と、その上位にある各民政上の場所について、日付のあるすべての包含関係を、日付付きの場所階層を作成しやすい形式で取得します。親区画ごとに期間をまとめた項目が1つあり、現在のものが先に表示されます。それぞれにfrom 1871-01-01 to 1937-03-31のようなgramps_dateと、推奨されるGrampsの場所の種類が含まれます。
cache_statusこのセッションからGOVへの操作別リクエスト数とキャッシュの利用状況を表示します。リクエストは行いません。

セットアップ

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

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

uvx gov-gazetteer-mcp

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

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

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

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

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

Claude Code
claude mcp add gov -- uvx gov-gazetteer-mcp

設定

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

変数意味
GOV_GAZETTEER_CACHE_DIRレスポンスキャッシュのディレクトリです。デフォルトは ~/.cache/gov-gazetteer-mcp です。
GOV_GAZETTEER_TIMEOUT1 回のリクエストに対する HTTP タイムアウト(秒)です。デフォルトは 30 です。
GOV_GAZETTEER_MIN_INTERVALGOV への 2 回のリクエスト間に空ける最短時間(秒)です。デフォルトは 1 で、1 未満にはなりません。
GOV_GAZETTEER_CONTACTUser-Agent に追加するメールアドレスまたは URL です。利用によって問題が発生した場合に CompGen から連絡できるようになります。任意ですが、設定するのが望ましいです。

使用できない値は、最初のツール呼び出し時に、該当する変数名を示す not_configured 結果として報告されます。サーバーが書き込むファイルはキャッシュのみです。

利用時のマナー

GOV は CompGen のサーバー上でボランティアによって運営されています。クライアントは一度に 1 件ずつ、少なくとも 1 秒間隔でリクエストを送信し、同一の呼び出しが 2 件同時に実行された場合は 1 件のリクエストを共有します。オブジェクトは 30 日間、検索結果は 7 日間キャッシュされます。また、回答に含まれるすべてのオブジェクト(検索結果は ID ではなくオブジェクト全体を返します)はセッション中保持されるため、一度取得した場所を再度問い合わせることはありません。ある年について問い合わせると、包含する各オブジェクトを一度ずつ読み込みます。同じ場所について別の年を問い合わせても、追加のコストは発生しません。1 回の呼び出しで最大 40 個のオブジェクトをたどり、途中で停止した場合はその旨を伝えます。429、5xx、または接続切断が発生した場合は、Retry-After に従って 1 回再試行します。SOAP フォルトは GOV からの回答として扱い、再試行しません。User-Agent にはパッケージ名、バージョン、このリポジトリが含まれます。

利用規約

GOV のサイトには利用規約のページがありません。フッターには CompGen の Impressum とプライバシー声明へのリンクがあります。ホームページには、このプロジェクトは「qualitativ hochwertige Daten für jedermann bereitzustellen」(すべての人に高品質なデータを提供する)ために始められたと記載されており、 gov.genealogy.net、また SOAP サービスはキーなしで公開されています。 gov.genealogy.net/services。CompGen は GOV のデータを自由に利用できる Linked Open Data と説明しています。GenWiki にある GOV のドキュメントはボットチェックの先にあり、このプロジェクトでは閲覧していません。すべての結果には「GOV — Geschichtliches Orts-Verzeichnis, Verein für Computergenealogie (CompGen)」とクレジットを記載し、各オブジェクトのページへのリンクを付けています。

事実として、GOV の robots.txt は一部のウェブサイトのパス(編集ページと履歴ページ、KML と GeoJSON のエクスポート、距離検索)をクロール禁止にしており、全面的に遮断する複数のクローラーを指定しています。一方、このサーバーが利用するウェブサービス /services/ については言及していません。

返ってきた結果の読み方

  • 出来事の年を指定して検索してください。 gov_place_at_date と gov_registers は、特定の1年について回答します。その年の途中でクライスや州が変わった場所には、日付付きで両方のリンクが表示されます。出来事の正確な日付に基づいて選んでください。
  • 教区や登記所へのリンクは手掛かりです。 GOV はボランティアによって編集されています。教区または役所については、登記簿自体の見出しやタイトルページに記載された名称と管轄地域で確認し、登記簿を引用してください。
  • 確実性は表示されています。 リンクは dated(その日付の範囲に対象年が含まれる)、undated(GOV に日付がなく、有効と仮定される)、または attested in another year only(GOV が別の年の名鑑1冊でのみ記録している)のいずれかです。最初のものを優先してください。
  • GOV が場所に教区をリンクしていない場合、 gov_registers は教会がその場所にある教区を示し、その旨を伝えます。通常はその場所自体の教区ですが、必ずしもそうとは限りません。GOV が登記所をリンクしていない場合、 同じ郡にある同名の登記所を候補として示し、GOV が両者をリンクしていないことを伝えます。ポメラニアなど、適切にモデル化された地域では、GOV が両方を直接リンクしています。
  • 名称検索は文字どおりに照合します。 大文字・小文字とアクセントを無視して、単語全体および単語の先頭部分に一致します(Lubeck で Lübeck が見つかります)。ただし、綴りの異なる名称は一致しません。ドイツ語、ポーランド語、古い綴り(Cöslin、Köslin、Koszalin)は、それぞれ個別に検索する必要があります。検索結果がゼロでも、検索した綴りと地域に限った結果です。GOV が返す検索結果は、最大500件です。
  • 名称は対象年に応じます。 GOV が1945年からとしているポーランド語の名称は、1900年については表示されません。有効な名称の中から、language(デフォルトは deu、ポーランド統治下の場所では pol)で表示する名称を選びます。names_at_date はすべての名称を一覧表示します。
  • 1874年以前は、プロイセンに登記所はありませんでした(帝国のその他の地域では1876年、ライン川左岸ではそれ以前です)。gov_registers は該当する年についてその旨を伝えます。
  • 連合体は含まれません。 GOV は、ドイツ連邦、ライン同盟、国際連盟、EU、国連への加盟を包摂関係として記録します。これらは行政階層ではないため、階層の連鎖はこれらの下で止まり、注記に名称が記載されます。
  • オブジェクトのページを引用してください。 各結果に含まれる citation を使用してください。出典のクレジット、項目のタイトル、GOV ID とアドレス、GOV が最後に変更した日、閲覧した日が記載されています。

意図的に含めていないもの

  • GOV の編集。 GOV の ChangeService を利用するにはアカウントが必要です。このサーバーはそのためのエンベロープを作成しません。
  • GenWiki のドキュメント。 ボットチェック(Anubis)の背後にあるため、このプロジェクトでは回避しません。ここにあるものはすべて WSDL と GOV のライブ応答に基づいて構築されています。docs/API-NOTES.md を参照してください。
  • 一括エクスポート。 このサーバーは調査のために場所を1件ずつ読み取るものであり、地域全体を対象とするものではありません。

セキュリティ

ツールの引数はモデルが作成し、モデルはこのサーバーが制御できないテキストを読み取ります。これには、GOV 独自の名称や注記も含まれます。サーバーは、そのテキストがモデルの動作を誘導し得ることを前提とし、誘導されたモデルに実行させられる操作を制限しています。

  • 宛先は1つです。 すべてのリクエストは gov.genealogy.net/services/ComplexService への HTTPS POST です。リクエストフックはそれ以外を拒否し、引数で指定できるのは何を求めるかだけで、宛先を指定することはできません。リダイレクトには従いません。
  • 読み取り操作のみです。 クライアントが作成するのは、7種類の読み取り操作用のエンベロープだけです。
  • 公開アドレスのみです。 接続先は公開アドレスであることを確認するため、DNS の応答がプライベートネットワークを指している場合は拒否されます。環境内のプロキシ設定は使用しません。
  • 応答にはサイズと形式の制限があります。 10 MB を超える応答はストリーム受信中に拒否され、文書型宣言を含む応答は解析前に拒否されます。
  • 引数はリクエストに渡す前に検証されます(GOV ID、外部 ID、年、タイプ名)。
  • GOV のテキストは信頼できません。 名称や注記はそのままモデルに渡されます。サーバーの指示では、そのテキストを指示ではなく判断材料として扱うようモデルに伝えています。それでも最終的に判断するのはモデルなので、モデルが実行しようとする内容を確認してください。

脆弱性を報告するには、SECURITY.md をご覧ください。

開発

uv sync --extra dev
uv run pytest                      # mocked with respx; never touches GOV
uv run ruff check .
uv run ruff format --check .
uv run python -m tests.live_check  # paced calls to GOV itself

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

クレジット

データは、Verein für Computergenealogie e.V. (CompGen) のプロジェクトで、ボランティアによって構築された GOV(Geschichtliches Orts-Verzeichnis)のものです。GOV のソフトウェアは Jesper Zedlitz によるものです。

ライセンス

MIT。

コメント

MCP は初めてですか?

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

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