Bbox Mcp Server について
Bbox Mcp Serverは、OpenStreetMapの検索、バウンディングボックスの変換、空間分布の分析に使える地理空間ツールを提供します。AIエージェントやGIS利用者向けに、構造化データと地図で確認できるリンクを返します。
主な機能
- 01形式や投影法をまたぐバウンディングボックス変換
- 02バウンディングボックスを覆うH3セルの生成
- 03OverpassによるOpenStreetMap検索
- 04整理済みOpenStreetMapタグの検索
- 05検索結果のH3セルへの集計
- 06共有可能な地図リンクの作成
活用シーン
- 01OpenStreetMapで近隣の施設を検索
- 02WKTやGeoJSONのバウンディングボックスを別の投影法に変換
- 03地域ごとの空間密度を比較
- 04インタラクティブ地図で検索結果を確認
MCP 対応
バウンディングボックス変換、Overpass検索、H3集計、地図リンク生成など、6つの地理空間ツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y bbox-mcp-serverMAPBOX_ACCESS_TOKENシークレットMapbox token for natural-language location search (e.g. 'San Francisco')OVERPASS_API_URLCustom Overpass API endpoint URL (defaults rotate between public instances)MAX_H3_CELLSSafety cap for H3 grid generation (default: 50000)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
7掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| location | string | いいえ | 検索する場所のテキスト(例:'New York City')。MAPBOX_ACCESS_TOKEN 環境変数が必要です。'location' または 'bbox' のいずれかを指定する必要があります。 |
| bbox | string | いいえ | 解析するジオメトリ。生のバウンディングボックス文字列('lat1,lng1,lat2,lng2')、WKT のポリゴン/ラインストリング/ポイント、GeoJSON ペイロード、または `ogrinfo` の範囲ブロックを指定できます。ジオメトリを囲む最小外接矩形(MBR)が抽出されます。'location' または 'bbox' のいずれかを指定する必要があります。 |
| epsg | string | いいえ | 投影 EPSG コード(例:'3857')。既定値は '4326'(WGS84)です。3,900 種類以上の投影がバンドルされており、不明なコードは epsg.io から自動取得されます。 |
| format | enum | いいえ | 出力形式。選択肢:wkt、geojson-bbox、leaflet、overpass、ogc-bbox、kml、geojson-polygon、csv、stac-bbox。デフォルト:csv。wkt | geojson-bbox | leaflet | overpass | ogc-bbox | kml | geojson-polygon | csv | stac-bbox |
| coord_order | enum | いいえ | フォーマット済み出力の座標順序を 'lng,lat'(デフォルト)と 'lat,lng' の間で切り替えます。座標順序の入れ替えを要求する API に便利です。lng,lat | lat,lng |
| zoom | number | いいえ | 重心のマップタイル座標の計算に使用するマップのズームレベル(0~22)。デフォルトは 15 です。 |
| precision | number | いいえ | 座標文字列の出力時の小数点以下の桁数(デフォルトは 6)。 |
詳細
🌍 bbox-mcp-server
どこでも、あらゆることを AI に尋ねて、地図で回答を確認できます。無料です
AI エージェントのための地理空間ツールキットです。ツールは 6 つ、設定は不要。オープンデータを使って、あらゆる LLM が空間データの検索、照会、変換、集計を行えるようにします。利用開始に API キーやサインアップは不要です。
すべての応答には、共有可能な検証リンク vibhorsingh.com/boundingbox が含まれます。クリックすると、インタラクティブマップで結果を視覚的に確認できます。この機能を備えた MCP サーバーはほかにありません。
これで何ができますか?
活用するのに GIS の専門家である必要はありません。 この MCP サーバーを使う AI エージェントなら、実際の OpenStreetMap データを使って空間に関する質問に回答でき、でたらめな幻覚を出力することもありません。
| AI エージェントへの質問… | 内部で行われる処理 |
|---|---|
| 「デンバーのダウンタウンに EV 充電器はいくつありますか?」 | Overpass クエリ → H3 六角形ビニング → 密度分析 |
| 「この Airbnb の近くに病院はありますか?」 | 構造化タグを使った POI 検索 → 地図で確認できるリンク |
| 「この住所から 1km 以内の遊び場をすべて検索して」 | Overpass クエリ + 半径フィルター → 共有可能な地図上に結果をピン留め |
| 「この WKT を EPSG:3857 の GeoJSON に変換して」 | 6 種類の入力形式、9 種類の出力形式、3,900 以上の投影法に対応した形式変換 |
| 「アムステルダムの自転車シェアのステーションをすべて表示して」 | 厳選された OSM タグ → Overpass クエリ → 地図上に結果を表示 |
| 「シアトルの近隣地域ごとに公園の密度を比較して」 | Overpass + H3 集計 → 六角形ビンによる空間分析 |
すべての回答にはリンクが付いています。クリックして AI の回答が正しいか確認でき、ほかの人と共有することもできます。
何が違うのか
多くの AI ツールは、信頼するしかないテキストを返します。このツールは、確認・検証できるインタラクティブマップを提供します!
- 検証可能 — すべての応答には、あなた(またはほかの人)が結果を視覚的に確認できる公開 URL が含まれます。あらゆる分野を見渡しても、この機能を備えた MCP サーバーはこれだけです。
- 決定論的 — クエリは実際の OpenStreetMap データに対して実行され、実際の座標を返します。AI が質問を解釈し、データは、素晴らしい OSM ボランティアの皆さんによるたゆまぬ努力の成果です。
- 無料 — 有料サービスはありません。Overpass API も OSM データも、このツールも無料です。Mapbox トークン(無料枠、支払い情報の登録不要)があれば自然言語による場所検索を利用できますが、必須ではありません。
- 設定不要 —
npx -y bbox-mcp-serverを実行すれば、すぐに使えます。
なぜ作られたのか
| 課題 | bbox-mcp による解決方法 |
|---|---|
| 「WKT はあるのに、API には EPSG:3857 の GeoJSON bbox が必要です。」 | 1 回の呼び出しで 6 種類の入力形式を解析し、3,900 以上の EPSG コードに投影して、9 種類の形式で出力します。 |
| 「Overpass クエリに使う OSM タグがいつも間違っています。」 | list_osm_tags が厳選したタグの組み合わせを返します。amenity=grocery のような幻覚はもうありません。 |
| 「この地区に病院はいくつありますか?」 | aggregate_overpass_h3 が Overpass にクエリを実行し、結果をサーバー側で H3 六角形にビニングします。 |
| 「このバウンディングボックスは本当に正しいですか?」 | すべての応答に、視覚的に確認できるクリック可能な地図リンクが含まれます。 |
ツール一覧
| ツール | 機能 | 主なパラメーター |
|---|---|---|
get_bounds | 形式や座標系をまたいで bbox を変換・投影します | bbox、epsg、format、coord_order、zoom |
get_h3_indices | bbox をカバーする H3 六角形セルのインデックスを生成します | bbox、resolution、compact |
generate_share_url | bbox の共有可能なマップリンクを作成します | bbox |
search_overpass | bbox または半径内の OpenStreetMap を Overpass QL で検索します | bbox、query、limit、radius_meters |
list_osm_tags | カテゴリーに対応する正しい OSM タグを検索します | category |
aggregate_overpass_h3 | Overpass クエリを実行し、結果を H3 六角形にまとめます | bbox、query、resolution |
すべてのツールは、location(自然言語。Mapbox トークンが必要)または bbox(座標、WKT、GeoJSON など)を受け付けます。
クイックスタート
MCP クライアントの設定に追加します。
Claude Desktop (クリックして展開)
claude_desktop_config.json に追加します。
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}
Cursor (クリックして展開)
.cursor/mcp.json に追加します。
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}
Windsurf (クリックして展開)
~/.codeium/windsurf/mcp_config.json に追加します。
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}
VS Code (GitHub Copilot) or Google Antigravity (クリックして展開)
ワークスペース内の .vscode/mcp.json に追加します。
{
"servers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}
例:「Times Square から 500m 以内のコーヒーショップをすべて検索して」
オプションの設定
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"],
"env": {
"MAPBOX_ACCESS_TOKEN": "pk.your-token-here",
"OVERPASS_API_URL": "https://your.custom.overpass.instance/api/interpreter",
"NOMINATIM_API_URL": "https://your.custom.nominatim.instance"
}
}
}
}
| 変数 | デフォルト | 説明 |
|---|---|---|
MAPBOX_ACCESS_TOKEN | — | 自然言語による位置検索を有効にします(例:「San Francisco」) |
OVERPASS_API_URL | auto | カスタム Overpass エンドポイントです。デフォルトでは overpass-api.de と kumi.systems を交互に使用します。 |
NOMINATIM_API_URL | https://nominatim.openstreetmap.org | カスタム Nominatim エンドポイントです。共有/リモート MCP サーバーとしてホストする場合、または商用プロバイダーを使用する場合に設定してください。 |
MAX_H3_CELLS | 50000 | H3 グリッド生成の安全上限です |
またはグローバルにインストールします:npm install -g bbox-mcp-server
ツールリファレンス
get_bounds
6 種類の入力形式、9 種類の出力形式、3,900 以上の座標系に対応し、バウンディングボックスを変換・投影します。重心の中心点とタイル座標を返します。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
bbox | string | — | 入力ジオメトリ(座標、WKT、GeoJSON、ogrinfo の範囲) |
epsg | string | "4326" | 変換先の投影法です。不明なコードは epsg.io から自動取得されます。 |
format | string | "csv" | 出力形式:csv、wkt、geojson-bbox、geojson-polygon、leaflet、overpass、ogc-bbox、kml、stac-bbox |
coord_order | string | "lng,lat" | 緯度を先に指定する API 用に "lat,lng" に入れ替えます |
zoom | number | 15 | タイル座標の計算に使うズームレベル |
precision | number | 6 | 出力形式での小数点以下の桁数 |
💡 プロンプト: 「Central Park のバウンディングボックスを WKT 形式で取得し、EPSG:32618 に投影して」
get_h3_indices
バウンディングボックスをカバーする Uber H3 六角形セルのインデックスを生成します。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
bbox | string | — | 入力ジオメトリ |
resolution | number | — | H3 の解像度(0~15) |
compact | boolean | false | 可能な場合、セルをより粗い親セルに統合します |
return_geometry | boolean | false | GeoJSON の六角形境界を含めます |
💡 プロンプト: 「シカゴ中心部の解像度 7 の H3 セルを、六角形ジオメトリを含めて取得して」
search_overpass
境界ボックスまたは半径内で Overpass クエリを実行します。名前、座標、タグを含む構造化された結果を返します。検証リンクでは、各結果が地図上にピンとして表示されます。
| Param | Type | Default | Description |
|---|---|---|---|
bbox | string | — | 入力ジオメトリ |
query | string | — | Overpass QL(例:nwr["amenity"="cafe"])。サーバーが適切な空間フィルターを自動的に適用します。 |
radius_meters | number | — | 検索半径(メートル)。ユーザーが距離を明示した場合のみ使用します(例:「2km以内」の場合は2000)。エリアや地域を対象とするクエリでは省略します。 |
limit | number | 100 | 返される要素の最大数 |
💡 プロンプト: 「JFK 空港から2km以内の駐車場をすべて探して」
💡 プロンプト: 「マンハッタンの病院を検索して。上限は50件」
list_osm_tags
Overpass クエリを作成する前に、カテゴリに対応する正しい OpenStreetMap タグを調べます。
| Param | Type | Description |
|---|---|---|
category | string | 大まかなカテゴリ(例:"food"、"health"、"transport") |
💡 プロンプト: 「スーパーマーケットに対応する正しい OSM タグは何ですか?」
aggregate_overpass_h3
Overpass クエリを実行し、空間密度分析のために結果を H3 六角形に分類します。セルごとの件数と、六角形の境界を示す GeoJSON を返します。
| Param | Type | Default | Description |
|---|---|---|---|
bbox | string | — | 入力ジオメトリ |
query | string | — | Overpass QL の基本クエリ |
resolution | number | 8 | 分類に使用する H3 解像度 |
💡 プロンプト: 「シアトルの病院をすべて、解像度7で H3 セルに集計して」
generate_share_url
vibhorsingh.com/boundingbox のインタラクティブマップ上で境界ボックスを表示する、共有可能なリンクを生成します。
| Param | Type | Description |
|---|---|---|
bbox | string | 入力ジオメトリ |
💡 プロンプト: 「bbox 40.7128,-74.0060,40.7580,-73.9855 の共有リンクを生成して」
対応する入力形式
すべてのツールが入力形式を自動で判別します。使用する形式を指定する必要はありません。
| Format | Example |
|---|---|
| 生の座標 | 40.7128,-74.0060,40.7580,-73.9855 |
| WKT | POLYGON((-74.006 40.712, -73.985 40.712, ...)) |
| GeoJSON | {"type":"Feature","geometry":{...}} |
| GeoJSON bbox | {"bbox":[-74.006,40.712,-73.985,40.758]} |
| ogrinfo extent | Extent: (-74.006, 40.712) - (-73.985, 40.758) |
| スペース区切り | 40.7128 -74.0060 40.7580 -73.9855 |
🤖 AI エージェント開発者向け
レスポンス構造
各ツールは、次の2つのコンテンツブロックを返します。
- 人が読めるテキスト — 地図の検証リンクを含む整形済みの出力
- 構造化 JSON — 算出されたすべてのデータを含む、機械で解析可能なデータ
get_bounds の JSON レスポンスの例:
{
"original_wgs84": { "lat1": 40.7128, "lng1": -74.006, "lat2": 40.758, "lng2": -73.9855 },
"projected": { "xmin": -8238310.23, "ymin": 4970241.32, "xmax": -8235527.11, "ymax": 4976491.56 },
"center": { "lat": 40.7354, "lng": -73.99575 },
"tile_indices": { "z": 15, "x": 9660, "y": 12284 },
"epsg": "3857",
"coord_order": "lng,lat",
"area_km2": 8.681,
"dimensions": { "width_km": 1.714, "height_km": 5.066 },
"share_url": "https://vibhorsingh.com/boundingbox/#40.712800,-74.006000,40.758000,-73.985500"
}
エラー処理
すべてのエラーは、説明メッセージとともにisError: trueを返します。無効な座標、未知の EPSG コード、過大な H3 リクエストはすべて適切にエラーとして返されます。サーバーは不正な入力によってクラッシュすることはありません。
ログ記録
構造化 JSON ログはstderrに出力されます(stdout は MCP プロトコル専用です)。各エントリーにはタイムスタンプ、レベル、コンテキストが含まれます。
謝辞と適正利用
OpenStreetMap
このツールはOpenStreetMapを基盤としています。OpenStreetMap は、何百万人ものボランティアが作成し、維持しているグローバルなデータセットです。実行するクエリによって返されるデータは、誰かが実際に歩いて調べ、地図に記録し、手作業で検証したものです。このツールが役立つと感じたら、OSM への貢献をご検討ください。
責任ある利用
公開されている Overpass API と Nominatim API のインスタンスは、容量に限りのある無料のコミュニティリソースです。短い間隔でのループや過剰なポーリング、大量のスクレイピングは避けてください。共有またはリモートの MCP サーバーとしてホストする場合は、NOMINATIM_API_URL と OVERPASS_API_URL をご自身のインスタンスまたは商用プロバイダーに向けてください(Overpass API のインストールおよび Nominatim のインストールを参照)。Overpass のデフォルトのサーバーローテーションは負荷の分散に役立ちますが、責任ある利用に代わるものではありません。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。