Geo Reconcile について
Geo Reconcileは、Wikidataの項目とOpenStreetMapの地物を照合するMCPサーバーです。地図データをリンクまたは追加する前の確認に向け、確定した一致、曖昧さ、未検出、検索エラーを区別し、判定根拠を示します。
主な機能
- 01WikidataのQ-IDまたはSPARQL結果とOSMの照合
- 02OSMタグと検索半径による候補の絞り込み
- 03タグ、多言語名、距離に基づくスコア付け
- 04一致、曖昧、未検出、エラーの判定
- 05競合するWikidataタグの提示
活用シーン
- 01Wikidataの地点にOSM地物があるか確認
- 02データ追加前に地図上のリンク候補を探索
- 03曖昧な一致や競合タグを確認
MCP 対応
MCPクライアントに `reconcile_wikidata_osm` ツールを提供し、ゲートウェイ経由またはローカルstdioで利用できます。ゲートウェイのエンドポイントにはPipeworx共通のメタツールも含まれます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://gateway.pipeworx.io/geo-reconcile/mcpclaude mcp add --transport http pipeworx-io-geo-reconcile https://gateway.pipeworx.io/geo-reconcile/mcp{"mcpServers":{"pipeworx-io-geo-reconcile":{"type":"http","url":"https://gateway.pipeworx.io/geo-reconcile/mcp"}}}Cursor で開く{"servers":{"pipeworx-io-geo-reconcile":{"type":"http","url":"https://gateway.pipeworx.io/geo-reconcile/mcp"}}}VS Code で開く{"mcpServers":{"pipeworx-io-geo-reconcile":{"type":"http","url":"https://gateway.pipeworx.io/geo-reconcile/mcp"}}}{"mcpServers":{"pipeworx-io-geo-reconcile":{"serverUrl":"https://gateway.pipeworx.io/geo-reconcile/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
@pipeworx/geo-reconcile
Wikidata の項目と OpenStreetMap の地物を照合します。これは、コミュニティによるマッピング活動で、何かをリンクしたり追加したりする前に必要となる突合処理です。Wikidata の Q-ID のセット(または「国 X のすべての発電所」のように、任意のクラスを抽出する SPARQL セレクター)と OSM のタグフィルターを指定すると、各項目について matched、ambiguous、unmatched、error のいずれかの DISTINCT な判定が返されます。判定は、既存の wikidata= タグ、言語をまたいだ名称の一致、距離に基づいて評価されます。汎用的に構築されており、ジョージアの発電所は最初の実証ケースであって、対象範囲ではありません。
Pipeworx の一部です。AI エージェントを 1879 以上のライブデータソースに接続する MCP ゲートウェイです。この連携は独立した非公式のもので、上流プロバイダーとは提携関係になく、承認も受けておらず、同プロバイダーによる公開でもありません。
ツール
reconcile_wikidata_osm({qids | sparql, osm_filter, languages, radius_m, overpass_timeout_s})— 各 Wikidata 項目の座標(P625)と言語別ラベルを解決し、すべての項目を対象範囲に含むようosm_filterで Overpass の bbox 検索を 1 回実行し、各項目を分類します。matched— 確度の高いリンクです。根拠は、既存のwikidata=タグ(正解データ)、または名称の一致と距離です。ambiguous— 妥当な OSM 候補が 2 件以上ある場合(または、同じ Wikidata 項目のタグが付いた OSM 地物がすでに 2 件以上あり、データが競合している場合)です。スコアとともにすべて返され、自動で解決されることはありません。unmatched— OSM 検索が完了し、妥当な候補が見つからなかった場合です。error— その項目の検索が完了しなかった場合です。Wikidata で解決できなかった、座標がない、または Overpass 呼び出しが失敗・タイムアウト・上限到達したケースが該当します。unmatchedにまとめられることはありません。検索の失敗は、不在の証拠ではありません。
認証
キーは不要です。3 つの上流サービス(Wikidata API、Wikidata Query Service、OpenStreetMap Overpass API)はすべて無料で、キーも必要ありません。
ゲートウェイがエグレスプロキシを提供する場合、Overpass の呼び出しは Pipeworx のエグレスプロキシ経由で中継されます。overpass-api.de は、Cloudflare Worker からの直接エグレスには 429 を返した後に 521 を返しますが、別の場所からの同じリクエストには 200 を返します(同じホストで確認済み。フリート #1246。スタンドアロンの overpass パックでも同様です)。このパックを単独で(ゲートウェイを使わずに)デプロイした場合は、Overpass を直接呼び出します。中継設定なしで、Cloudflare Worker 以外の任意の環境から動作します。
OSM 部分では、overpass パックと共有しているヘルパー(shared/src/overpass.ts)を使い、公開 Overpass インスタンス間でフェイルオーバーします。順序は overpass.kumi.systems、maps.mail.ru、overpass-api.de です。kumi は 2026-09-19 頃に停止し、overpass-api.de は当方のエグレスに 406 を返すため(フリート #2036)、その 2 つだけだった期間は、フリート #2451 で mail.ru が追加されるまで OSM 部分は利用できませんでした。
データソース
- https://www.wikidata.org/w/api.php(
action=wbgetentities)— 解決された各項目のラベルと P625 座標クレーム。 - https://query.wikidata.org/sparql —
qidsの代わりにsparqlが指定された場合、呼び出し元が指定した SPARQL SELECT を実行して項目セットを検出します。 - https://overpass.kumi.systems/api/interpreter — 解決されたすべての項目の座標を含むバウンディングボックス内で OSM フィーチャーを検索し、失敗した場合は https://maps.mail.ru/osm/tools/overpass/api/interpreter と https://overpass-api.de/api/interpreter にフォールバックします。
次の担当者への注意事項:
- 調整対象とは異なる項目を指す
wikidata=タグは、無視されるのではなく、否定的な証拠として扱われます。 OSM では、Wikidata に登録された複数のユニットを 1 つの結合フィーチャーとしてモデル化していることがあります(例:ジョージアの Vartsikhe I~IV は Wikidata では 4 つの別個の項目ですが、近隣の I、II、IV の OSMwayには、すでに Vartsikhe の aggregate Wikidata 項目 Q4104053 のタグが付いています)。名前と距離だけで「一致」させて、すでに別の項目に紐付けられたフィーチャーをマッパーに再タグ付けするよう促すと、正しくタグ付けされたものを変更させることになります。このような競合がある場合、候補のスコアは必ず 0 になり(matched/ambiguousから除外されます)、nearby_conflicting_tagsに別途表示されます。これにより、粒度の不一致を人が確認でき、黙って見落とされることはありません。 - Overpass は、実行中に時間またはメモリが尽きたクエリに対しても HTTP 200 を返すことがあります。 トップレベルに
remarkフィールドがあり、elementsは部分的(場合によっては空)です。これを単純に読むと、「実際に何も見つからなかった」場合とバイト単位で区別がつきません。このパックではremarkを確認し、タイムアウト/レート制限/実行時エラーを示す文言があれば、該当する呼び出しを失敗として扱います(該当する各項目はerrorとなり、実際に空の結果だったとは扱われません)。 out center tags <N>;には上限があります(現在は 4000 件)。上限なしのクエリは、広いエリアで実行するとそれ自体がタイムアウトの原因になり得るためです。Overpass が上限と同数の要素を返した場合、レスポンスのcap_hitが設定され、通常ならunmatchedとなる項目は代わりにerrorとして報告されます。上限付きの結果では、そのエリアの完全性が保証されないため、このパックでは「何も見つからなかった」と断定しません。sparqlセレクターでバインドする必要があるのは?itemだけです。 ラベルと座標は常にwbgetentitiesで別途取得されるため、SPARQL でそれらを選択する必要はありません。これにより選択クエリをシンプルに保ち、項目セットの選び方にかかわらず、一貫したラベル/座標取得経路を再利用できます。- 2026-09-10 にジョージアの発電所を対象にライブ検証済みです。解決された Wikidata 項目 171 件のうち、23 件は、該当項目のいずれかと一致する
wikidata=タグをすでに持つ OSM フィーチャーとして検出され、23 件すべてがmatchedとなり、誤検出は 0 件でした。87 件はまだ P625 座標を持っておらず(このパックのバグではなく、Wikidata の実際の現状の不足です)、正しくunmatchedではなくerrorとなりました。 - この 23 件を OSM で直接再確認すると 24 件になりますが、追加の 1 件はリグレッションではありません。 2026-09-10 に独立して検証済みです(fleet #1813)。ジョージア全域を対象にした
nwr["power"="plant"]["wikidata"]Overpass クエリでは、wikidata=値が重複なしで 24 種類付いたフィーチャーが 27 件返されます。その 24 項目のうち 23 項目は上記のクラス選択に含まれ(wdt:P31/wdt:P279* wd:Q159719、wdt:P17 wd:Q230)、23 件すべてがmatchedとなり、どれも名前と距離ではなく既存のタグによって一致が確認されています。残る 24 番目は Q4104053、つまり aggregate Vartsikhe 発電所です。これは 2 つ前の箇条書きで説明したものと同じ粒度の不一致です。セレクターで指定されていないため対象に含まれていないのであり、このパックが見落としたわけではありません。幻を追いかけることがないよう、単純な Overpass の件数ではなく、調整対象の項目セットと比較してください。
クイックスタート
MCP クライアント(Claude Desktop、Cursor、Windsurf など)に追加します:
{
"mcpServers": {
"geo-reconcile": {
"url": "https://gateway.pipeworx.io/geo-reconcile/mcp"
}
}
}
このエンドポイントが実際に提供するもの
https://gateway.pipeworx.io/geo-reconcile/mcp の tools/list は、上記の表にあるツールに加えて、Pipeworx 共通のメタツール(ask_pipeworx、
discover_tools、search_within、remember/recall など、ゲートウェイ全体で使えるツール群)も返します。そのため、表示されるツール数はこの表より多くなります。単一パックのエンドポイントでは現在、パック独自のツールとともに共通ツールがおよそ 30 個表示されます。接続の initialize レスポンスに正確な対象範囲が記載されており、その日の状況を確認する際の正式な情報源となります。
これは意図的なものであり、偶然の多重化ではありません。メタツールを使えば、このパックの対象外の質問にも、カタログ全体を検索する ask_pipeworx を通じて回答できます。そのため、MCP サーバーをもう 1 つ追加する必要はありません。現時点では、メタツールを含めずにパックのエンドポイントを接続する方法はありません。追加のスキーマによって増えるコンテキストが、ルーティングのメリットを上回る場合は、複数のパックのエンドポイントではなく、フルゲートウェイに一度だけ接続してください。
または、Pipeworx のフルゲートウェイに接続すると、このパックだけでなく、すべてのパックのツールが直接一覧表示されます。
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
どちらの URL も同じゲートウェイと同じ 1879 以上のデータソースに接続します。異なるのは、どのパックのツールが直接一覧表示されるかだけです。どちらからでも ask_pipeworx を使ってすべてのツールにアクセスできます。
MCP クライアントがない場合は、HTTP で呼び出す
curl -X POST https://gateway.pipeworx.io/v1/tools/reconcile_wikidata_osm \
-H 'Content-Type: application/json' \
-d '{"qids":["Q162887","Q3650523","Q4501177"],"osm_filter":"power=plant","languages":"ka,ru,en","radius_m":2000}'
最初の呼び出しにアカウントは必要ありません。任意のツールを確認するには、GET https://gateway.pipeworx.io/v1/tools/reconcile_wikidata_osm を呼び出します。ツールを検索するには、{"query":"..."} を指定して POST https://gateway.pipeworx.io/v1/tools/search_packs を呼び出します。
スタンドアロン(ゲートウェイアカウント不要)
このパッケージは、ローカルの stdio MCP サーバーとしても実行できます。Pipeworx アカウントも、ゲートウェイへのラウンドトリップも必要ありません。
{
"mcpServers": {
"geo-reconcile": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-geo-reconcile"]
}
}
}
または、起動を確認するために直接実行します。
npx -y @pipeworx/mcp-geo-reconcile
stdin/stdout 経由で MCP を使用し、このパックのツールのみを対象に initialize/tools/list/tools/call に応答します。上記のゲートウェイ接続で追加される共通メタツールは含まれません。同じソース、同じツールで、ask_pipeworx によるルーティングはありません。
ask_pipeworx を使う
ツールを直接呼び出す代わりに、平易な英語で質問できます。上記のパックのエンドポイントとフルゲートウェイのどちらでも利用できます。
ask_pipeworx({ question: "your question about Geo Reconcile data" })
ゲートウェイが適切なツールを選び、引数を自動的に設定します。
詳細
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。