Geocoding について
Geocodingは、OpenStreetMap Nominatimで位置を調べるMCPサーバーです。住所と座標の相互変換、場所検索、直線距離の計算に対応し、APIキーは不要です。
主な機能
- 01ジオコーディング
- 02リバースジオコーディング
- 03場所とPOIの検索
- 04直線距離の計算
- 05MarkdownまたはJSONでの出力
活用シーン
- 01住所の座標を調べる
- 02座標から場所を特定する
- 03指定した種類の場所を検索する
- 04地点間の直線距離を比較する
MCP 対応
ジオコーディング、リバースジオコーディング、場所検索、距離計算のツールをMCPクライアントに公開します。標準入出力を使い、JSON-RPCで通信します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y geocode-mcpGEOCODE_USER_AGENTDescriptive User-Agent with contact info requested by OpenStreetMap, e.g. 'your-app [email protected]'ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Geocoding MCP サーバー 🗺️
OpenStreetMap Nominatim を利用して、地名や住所を座標に(またその逆に)変換し、Claude Desktop や MCP 互換クライアントで使用できます。順方向・逆方向のジオコーディング、場所・POI の検索、場所間の距離を、すべて自然言語で利用できます。API キーは不要です。
npm パッケージ:
geocode-mcp· GitHub リポジトリ:danishashko/geocode-mcp。
🎯 できること
- 📍 ジオコーディング — 住所/場所/ランドマーク → 緯度・経度
- 🔄 逆ジオコーディング — 座標 → 人が読める住所
- 🔎 場所の検索 — 説明に合う POI/場所を検索
- 📏 距離 — 名前で指定した 2 つの場所間の直線距離
ジオコーディングは、LLM が単独では確実に行えない作業です。このサーバーを使えば、Claude は OpenStreetMap から実際の最新の座標を取得できます。すべてのツールは、デフォルトで人が読める Markdown を返し、リクエストに応じて構造化された JSON も返せます(response_format: "json")。軽量で(Python 標準ライブラリと mcp のみを使用)、API キーも不要です。
🚀 クイックスタート
Claude Desktop の設定に以下を追加し、Claude を再起動します。
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"geocode": {
"command": "npx",
"args": ["-y", "geocode-mcp"],
"env": {
"GEOCODE_USER_AGENT": "your-app-name [email protected]"
}
}
}
}
OpenStreetMap は、すべてのクライアントに連絡先情報を含む説明的な User-Agent の送信を求めています。GEOCODE_USER_AGENT にご自身の名前/メールアドレスを設定してください(デフォルト値が設定されているため、すぐに使用できます)。初回起動時、npx ラッパーが分離された Python 環境を作成し、依存関係をインストールします(初回のみ、約 1 分)。Python 3.10+ と Node.js 16+ が必要です。
グローバルインストールを使う場合
npm install -g geocode-mcp
{
"mcpServers": {
"geocode": {
"command": "geocode-mcp",
"env": { "GEOCODE_USER_AGENT": "your-app-name [email protected]" }
}
}
}
🔧 利用可能なツール
| ツール | 返される内容 | パラメーター |
|---|---|---|
geocode | 住所/場所/ランドマークに対する、順位付けされた座標候補 | query、limit、country_codes |
reverse_geocode | 指定された緯度・経度の住所 | latitude、longitude |
search_places | 説明に一致する場所/POIとその座標 | query、limit、country_codes |
distance_between | 名前で指定した 2 つの場所間の直線距離 | origin、destination、unit |
すべてのツールで response_format も指定できます(デフォルトは "markdown"、または "json")。country_codes は任意の、カンマ区切りの ISO 3166-1 alpha-2 フィルターです(例:us または us,ca)。
💬 プロンプトの例
サーバーを接続したら、Claude に尋ねるだけです。
- 「エッフェル塔の座標を教えてください。」
- 「緯度 40.7484、経度 -73.9857 にあるものは何ですか?」
- 「パリの書店を探してください。」
- 「ロンドンからエディンバラまで、マイルでどれくらい離れていますか?」
- 「『1600 Pennsylvania Avenue』をジオコーディングしてください。米国内のみでお願いします。」
🐛 トラブルシューティング
「OpenStreetMap がリクエストをレート制限しています」 Nominatim の公開サーバーが許可するリクエストは、約 1 秒あたり 1 件です。このサーバーはリクエストを自動的に調整しますが、それでも制限に達した場合は、少し待ってください。
「場所が見つかりません」
より具体的なクエリや、表現を変えたクエリを試すか、country_codes フィルターを追加して曖昧さを解消してください。
「コマンドが見つかりません」/「Python が見つかりません」
Python 3.10 以降と Node.js 16 以降がインストールされ、PATH に設定されていることを確認してください。macOS/Linux では、python3 を試してください。
Claude にツールが表示されない場合
- 設定ファイルが有効な JSON であること(末尾に余分なカンマがないこと)を確認してください。
- Claude Desktop を完全に終了してから、再度起動してください。
別のモデルやプロバイダーを使用する場合(LiteLLM、OpenRouter、NVIDIA NIM、ローカルモデル)
このサーバーがモデルと通信することはありません。クライアントがローカルプロセスとしてサーバーを起動し、
stdin/stdout 経由で JSON-RPC をやり取りするため、ANTHROPIC_BASE_URL の変更や、
クライアントが使用するモデルの切り替えは影響しません。このような切り替えの後に
ツールが動作しなくなった場合は、2 点を確認してください。モデルが関数呼び出しに対応していること、
また、未対応のパラメーターを削除するように設定されたプロキシによってツール定義が
エラーもなく削除されている可能性があることです。サーバーに問題があると判断する前に、
クライアントで /mcp(または claude mcp list)を実行して、サーバーが接続されていることを
確認してください。
🛠️ 手動インストール(別の方法)
npx 経由ではなく、Python ファイルを直接実行する場合:
1. サーバーをダウンロードして依存関係をインストールする
pip install mcp
(macOS/Linux では pip3 を使用)
2. Claude Desktop にサーバーを指定する
{
"mcpServers": {
"geocode": {
"command": "python3",
"args": ["/absolute/path/to/geocode_mcp.py"],
"env": { "GEOCODE_USER_AGENT": "your-app-name [email protected]" }
}
}
}
Windows では "command": "python" と、"C:\\path\\to\\geocode_mcp.py" のようなパスを使用してください。
3. Claude Desktop を再起動します。
🔒 プライバシーと利用ポリシー
- OpenStreetMap の無料の Nominatim API を使用します。公開 API で、キーは不要です。
- リクエストはお使いのマシンから OpenStreetMap へ直接送信されます。保存やプロキシ経由の転送は行われません。
- Nominatim の利用ポリシーに従い、サーバーは内容が分かる
User-Agentを送信し、リクエストを約 1 秒あたり 1 件に自動調整します。公開サーバーに対して大量または高負荷の処理を行わないでください。 - データ © OpenStreetMap の貢献者。データは ODbL の下で利用できます。
📝 注記
distance_betweenが返すのは直線距離(大圏距離)であり、車での移動距離や経路距離ではありません。- 結果は関連性/重要度の順に並べられます。曖昧な地名(例:「Springfield」)を絞り込むには、
country_codesを使用してください。 - 水辺や遠隔地付近で逆ジオコーディングを行うと、住所が返されない場合があります。
📋 変更履歴
全バージョンの履歴については、CHANGELOG.md をご覧ください。
📚 リソース
⚖️ 法的免責事項
このツールは OpenStreetMap Nominatim API を使用していますが、OpenStreetMap Foundation との提携関係はなく、同財団による推奨も受けていません。ジオコーディングデータ © OpenStreetMap の貢献者。データは Open Database License の下でライセンスされています。利用には Nominatim の利用ポリシーが適用されます。
👤 作成者
Daniel Shashko
- GitHub: @danishashko
- LinkedIn: daniel-shashko
- npm: danielshashko
📄 ライセンス
MIT © Daniel Shashko
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。