MCP-Geo について
MCP-Geo は GeoPy を利用した MCP サーバーで、住所と座標の相互変換や距離計算のツールを LLM に提供します。複数のジオコーディングサービスに対応し、レート制限とエラー処理を備えています。
主な機能
- 01住所と緯度経度の相互変換
- 02複数住所の一括ジオコーディング
- 03マイルまたはキロメートルでの距離計算
- 04Nominatim、ArcGIS、Bing などのプロバイダー切り替え
- 05レート制限とエラー時の None 返却
活用シーン
- 01LLM による地点の座標と正規化された住所の取得
- 022 つの住所または座標間の距離計算
- 03住所リストの一括ジオコーディング
MCP 対応
本プロジェクトは MCP サーバーであり、geocode_location、reverse_geocode、distance_between_addresses などのツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP-Geo
GeoPY を使用したジオコーディング MCP サーバー!
📋 システム要件
- Python 3.6+
📦 依存関係
必要な依存関係をすべてインストールします。
# Using uv
uv sync
必須パッケージ
- fastmcp:Model Context Protocol サーバーを構築するためのフレームワーク
- geoPy:場所へのアクセス、ジオコーディング、逆ジオコーディングを行うための Python ライブラリ。
すべての依存関係は、簡単にインストールできるよう requirements.txt に記載されています。
📑 目次
🛠️ MCP ツール
この MCP サーバーは、LLM に次のジオコーディングツールを提供します。
geocode_location
-
ユーザーが指定した住所または地名を受け取り、最も一致する場所の緯度、経度、整形済み住所を返します。
-
エラーを適切に処理し、場所が見つからない場合やエラーが発生した場合は None を返します。
reverse_geocode
- 緯度と経度を受け取り、最寄りの住所を返します。
- 地図上の地点に関する詳しい情報を見つけるのに便利です。
geocode_with_details
- geocode_location と同様ですが、ジオコーダーが対応している場合、バウンディングボックスやより詳しい住所情報など、追加データを返します。
geocode_multiple_locations
- 住所文字列のリストを受け取り、各住所のジオコーディング結果(緯度/経度/住所)のリストを返します。
- ジオコーディングサービスの利用枠を超えないよう、レート制限が適用されます。
reverse_geocode_multiple_locations
- [緯度, 経度] のペアのリストを受け取り、それぞれに対して逆ジオコーディングを実行します。
- 緯度、経度、住所を含む辞書のリストを返します。検索に失敗した場合は None を返します。また、レート制限が適用されます。
distance_between_addresses
- 2 つの住所または地名の間の距離を計算します。
- 2 つの住所と測定単位(マイル/キロメートル)を受け取ります。
- 指定された単位で距離を返します。いずれかの住所をジオコーディングできない場合は None を返します。
distance_between_coords
- 2 組の緯度/経度の間の距離を計算します。
- 緯度と経度の 2 組のペア、および測定単位(キロメートル/マイル)を受け取ります。
- 指定された単位で距離を返します。
🚀 はじめに
リポジトリをクローンします。
git clone https://github.com/webcoderz/MCP-Geo.git
cd MCP-Geo
📦 インストール方法
この MCP サーバーは、Claude Desktop またはその他の環境にインストールできます。ニーズに合った方法を選択してください。
オプション 1:Claude Desktop にインストール
FastMCP を使用してインストールします。
fastmcp install geo.py --name "MCP Geo"
オプション 2:別の場所にインストールする
このサーバーをほかの場所で使用するには、以下の手順に従ってください。
- 以下の設定を設定ファイルに追加します。
{
"mcp-geo": {
"command": "uv",
"args": [
"--directory",
"MCP-Geo",
"run",
"geo.py"
],
"env": {
"NOMINATIM_URL": "${NOMINATIM_URL}",
"SCHEME": "http",
"GEOCODER_PROVIDER": "nominatim"
}
}
}
🔒 安全機能 • レート制限:過剰なリクエストによる利用制限違反を避けるため、ジオコーディングの呼び出しはそれぞれレート制限されます(例:1 秒の遅延)。 • エラー処理:geopy の例外(タイムアウト、サービスエラー)を捕捉し、クラッシュする代わりに安全な None の結果を返します。
📚 開発ドキュメント
このサーバーを拡張または変更する場合: • 各ツールの実装方法と geopy の統合方法については、geo.py を確認してください。 • 環境変数を調整して、プロバイダー(Nominatim、ArcGIS、Bing など)を切り替えます。 • バウンディングボックス、言語設定、高度なデータ抽出などの応用的な使い方については、geopy の公式ドキュメントを参照してください。
⚙️ 環境変数
環境変数を使用してサーバーを設定します。
| 変数 | 説明 | デフォルト |
|---|---|---|
GEOCODER_PROVIDER (任意) | "nominatim"、"arcgis"、または "bing" | nominatim |
NOMINATIM_URL (任意) | Nominatim のドメイン | nominatim.openstreetmap.org |
SCHEME (任意) | http/https | http |
ARC_USERNAME (ArcGIS では任意) | ArcGIS のユーザー名 | None |
ARC_PASSWORD (ArcGIS では任意) | ArcGIS のパスワード | None |
BING_API_KEY (Bing では必須) | Bing Maps のキーです。 | None |
これらは、シェルまたは使用環境の MCP 設定ファイルで設定できます。さらに必要な変数がある場合は、geo.py を編集し、使用するジオコーダーに追加してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。