OSM-GeoJSON-MCP-Server
Fetches geographic data from OpenStreetMap via the Overpass API, including buildings, roads, amenities, waterways, green spaces, and railways, and outputs them as GeoJSON.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OSM-GeoJSON-MCP-ServerGet restaurants in Shinjuku, Tokyo"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OSM GeoJSON MCP Server
OpenStreetMapのデータをOverpass API経由で取得し、GeoJSON形式で保存するMCP (Model Context Protocol)サーバーです。
🌟 主要機能
🗺️ 地理データ取得ツール (8種類)
🏢 建物データ取得 (
get_buildings): 住宅、商業、工業、公共建物の取得🛣️ 道路ネットワーク取得 (
get_roads): 高速道路から住宅街道路までの道路データ🏪 アメニティ取得 (
get_amenities): レストラン、病院、学校などのPOIデータ🌊 水域データ取得 (
get_waterways): 川、湖、運河、貯水池などの水域データ🌳 緑地データ取得 (
get_green_spaces): 公園、森林、農地、草地などの緑地🚃 鉄道データ取得 (
get_railways): 鉄道線路、駅、地下鉄、トラムなど
🔧 システム機能(4種類)
📊 API統計 (
get_api_stats): 使用統計、キャッシュ状況、エラー率の監視🔧 接続テスト (
test_connection): Overpass APIサーバーへの接続診断🔄 データ変換 (
convert_to_geojson): OSMデータからGeoJSONへの変換📁 ダウンロード機能: 3種のデータダウンロードツール
📁 ファイル出力: 全ツールでファイルエクスポート機能 (.geojson/.json)
Related MCP server: mcp-overpass
🚀 高度な機能
💾 キャッシュシステム
15分TTL: OSM規約準拠のキャッシュ期間
LRUアルゴリズム: メモリ効率的なキャッシュ管理
重複リクエスト防止: 同一クエリの自動キャッシュ利用
📈 ログ・監視機能
詳細ログ: API使用状況、応答時間、エラー率の追跡
統計情報: キャッシュヒット率、サーバー別パフォーマンス
リアルタイム監視: 稼働時間、リクエスト頻度の表示
⚡ エラーハンドリング
MCP準拠エラー: McpErrorクラスによる標準エラーコード対応
マルチサーバー対応: 3サーバーの自動フォールバック
指数バックオフ: レート制限時の適応的待機
5xx系エラー対応: サーバーエラー時の自動リトライ
詳細エラー情報: デバッグに有用な追加情報を提供
📦 インストールと使用方法
1. 依存関係のインストール
npm install2. サーバーの起動
# 通常の起動
npm start
# 開発モード(MCP Inspectorを使用)
npm run dev3. テスト実行
# 全テストを実行
npm test
# 重要なテストのみ実行
npm run test:critical
# 高速テスト(重要テスト + 早期終了)
npm run test:fast
# 個別テスト実行
npm run test:simple # 基本接続テスト
npm run test:diagnostic # ネットワーク診断
npm run test:features # 新機能テスト
npm run test:download # ダウンロード機能テスト
npm run test:direct # 直接ファイル出力テスト
# MCPプロトコル検証テスト(新機能)
node test/mcp-protocol-verification.js # プロトコル準拠確認
node test/error-handling-test.js # エラーハンドリング検証
node test/integration-test.js # 統合テスト実行🎯 Claude での使用例
💬 プロンプト例
📍 特定地域の建物データ取得
東京駅周辺(東経139.765-139.768度、北緯35.679-35.682度)の建物データをGeoJSON形式で取得してください。🏙️ エリア分析用データ収集
新宿駅周辺の以下のデータを取得してファイルに保存してください:
- 建物データ(商業施設のみ)
- 道路ネットワーク(主要道路のみ)
- レストランなどの飲食店
座標は東経139.695-139.705度、北緯35.685-35.695度でお願いします。🔢 件数制限付きデータ取得
渋谷駅周辺の建物データを最大30件まで取得してください。商業施設に限定してGeoJSONで出力をお願いします。📊 システム状況確認
OSMサーバーの接続状況とAPI使用統計を確認してください。🌊 河川・水域調査
皇居周辺(東経139.75-139.77度、北緯35.68-35.69度)の水域データ(川、堀など)を取得してください。🚀 高速データ取得
品川駅周辺の鉄道データを10件まで取得して、レスポンス時間を短縮してください。🗺️ 地図データ活用例
1. 都市計画・不動産分析
渋谷駅周辺500m四方の建物、道路、公園データを取得して都市密度を分析したい→ 建物密度、道路アクセス、緑地率などの分析が可能
2. 観光ルート作成
浅草寺周辺の観光スポット(レストラン、神社、公園)を50件まで取得して歩行者道路のデータも欲しい→ 観光客向けの歩行ルートや見どころマップを作成
3. 災害時避難計画
学校周辺の避難に使える道路、公園、公共施設のデータを収集したい。重要度の高い施設を20件程度で→ 避難経路や避難場所の最適化に活用
4. 交通インフラ調査
品川駅周辺の鉄道、道路、バス停のデータで交通アクセスを分析したい。主要な交通機関を15件まで→ 交通利便性の評価や都市計画に活用
📄 レスポンス形式
GeoJSONレスポンス(標準)
{
"type": "geojson",
"data": {
"type": "FeatureCollection",
"features": [...]
},
"summary": {
"feature_count": 42,
"limit_applied": 50,
"is_truncated": false,
"bbox": [139.765, 35.679, 139.768, 35.682],
"building_type": "all"
}
}ファイル出力レスポンス
{
"status": "success",
"message": "建物データをダウンロードしました",
"file": "./data/tokyo_buildings.geojson",
"size": "0.85 MB",
"feature_count": 245,
"limit_applied": null,
"is_truncated": false,
"building_type": "all",
"bbox": [139.765, 35.679, 139.768, 35.682],
"server": "overpass-api.de"
}API統計レスポンス
{
"timestamp": "2025-07-07T13:00:00.000Z",
"api_statistics": {
"uptime": { "formatted": "2h 30m" },
"requests": { "total": 150, "perMinute": "1.2" },
"cache": { "hitRate": "75.3%" },
"errors": { "errorRate": "0.7%" }
},
"cache_statistics": { "size": 45 },
"compliance_info": {
"user_agent": "OSM-MCP/1.0",
"rate_limiting": "enabled",
"caching": "enabled (15min TTL)",
"overpass_api_compliance": "full"
}
}🛠️ 利用可能なツール詳細(全12ツール)
🏢 get_buildings
建物データを取得します。
パラメータ:
minLon,minLat,maxLon,maxLat: 取得範囲の座標(必須)building_type(オプション): 建物タイプ (residential,commercial,industrial,public,all)limit(オプション): 取得件数の上限(1-10000)output_path(オプション): ファイル出力パス(.geojson/.json)
🛣️ get_roads
道路ネットワークを取得します。
パラメータ:
minLon,minLat,maxLon,maxLat: 取得範囲の座標(必須)road_types(オプション): 道路タイプの配列 (motorway,trunk,primary,secondary,tertiary,residential,all)limit(オプション): 取得件数の上限(1-10000)output_path(オプション): ファイル出力パス
🏪 get_amenities
アメニティ(施設・設備)を取得します。
パラメータ:
minLon,minLat,maxLon,maxLat: 取得範囲の座標(必須)amenity_type(オプション): アメニティタイプ (restaurant,hospital,school,bank,cafe,all)limit(オプション): 取得件数の上限(1-10000)output_path(オプション): ファイル出力パス
🌊 get_waterways
水域・河川データを取得します。
パラメータ:
minLon,minLat,maxLon,maxLat: 取得範囲の座標(必須)waterway_type(オプション): 水域タイプ (river,stream,canal,lake,reservoir,pond,all)limit(オプション): 取得件数の上限(1-10000)output_path(オプション): ファイル出力パス
🌳 get_green_spaces
緑地・公園データを取得します。
パラメータ:
minLon,minLat,maxLon,maxLat: 取得範囲の座標(必須)green_space_type(オプション): 緑地タイプ (park,forest,garden,farmland,grass,meadow,nature_reserve,all)limit(オプション): 取得件数の上限(1-10000)output_path(オプション): ファイル出力パス
🚃 get_railways
鉄道データを取得します。
パラメータ:
minLon,minLat,maxLon,maxLat: 取得範囲の座標(必須)railway_type(オプション): 鉄道タイプ (rail,subway,tram,monorail,station,platform,all)limit(オプション): 取得件数の上限(1-10000)output_path(オプション): ファイル出力パス
📊 get_api_stats
API使用統計とシステム状況を取得します。
パラメータ:
reset(オプション): 統計をリセットするかどうか(boolean)
🔧 test_connection
Overpass APIサーバーへの接続をテストします。
パラメータ: なし
🔄 convert_to_geojson
OSMファイルをGeoJSONに変換します。
パラメータ:
input_path: 入力OSMファイルパス(必須)output_path: 出力GeoJSONファイルパス(必須)
📁 download_osm_data
生のOSMデータをダウンロードします。
パラメータ:
query: Overpass QLクエリ(必須)output_path: 保存先ファイルパス(必須)format(オプション): 出力形式 (json,xml)
🌐 download_area_all
指定エリアの全データをダウンロードします。
パラメータ:
minLon,minLat,maxLon,maxLat: 取得範囲の座標(必須)output_path: 保存先ファイルパス(必須)
🔬 技術的な詳細
MCPプロトコル実装
JSON-RPC 2.0準拠: 完全なプロトコル実装
標準エラーコード: McpErrorクラスによる適切なエラー処理
初期化ハンドラー: InitializedNotificationSchema対応
MCP SDK活用: SDKの機能を最大限利用し独自実装を最小化
OSM/Overpass API規約準拠
User-Agent識別:
OSM-MCP/1.0による適切な識別レート制限遵守: 指数バックオフとサーバー負荷分散
キャッシュ実装: 15分TTLによる重複リクエスト防止
メモリ制限: 1GB制限でサーバー負荷軽減
タイムアウト最適化: 180秒でOverpass API推奨値準拠
高性能アーキテクチャ
マルチサーバーフォールバック: 3サーバーの自動切り替え
IP直接接続: DNS問題回避のための直接IPアドレス使用
非同期処理: Node.js標準https/fsモジュールによる高効率通信
ストリーミング: 大容量データの直接ファイル書き込み
データ品質保証
OSM→GeoJSON変換: カスタム変換ロジックによる高精度変換
ジオメトリ処理: Point/LineString/Polygon の適切な形状生成
座標検証: 境界ボックスとWGS84座標系の厳密チェック
メタデータ保持: OSMタグの完全保持とGeoJSONプロパティ変換
監視・デバッグ機能
リアルタイム統計: リクエスト数、応答時間、エラー率の追跡
キャッシュ分析: ヒット率、メモリ使用量、TTL管理
サーバー監視: 各Overpass APIサーバーの健全性チェック
包括的テスト: 接続、機能、パフォーマンステストの自動実行
🏆 MCPプロトコル対応状況
✅ 完全準拠(2025年7月更新)
📋 MCP 2024-11-05 仕様: 完全準拠
🔧 エラーハンドリング: McpError クラスによる標準エラーコード対応
🧪 テスト品質: プロトコル・エラー・統合テスト 100%成功率
🚀 Claude Code 統合: 安定動作確認済み
📊 実装詳細
機能カテゴリ | 対応状況 | 詳細 |
初期化ハンドラー | ✅ 完了 |
|
プロトコル応答 | ✅ 完了 | JSON-RPC 2.0 準拠 |
ツール機能 | ✅ 完了 | 12ツール、スキーマ検証済み |
エラーハンドリング | ✅ 完了 | 標準エラーコード (-32601, -32602, -32603) |
統合テスト | ✅ 完了 | 実用シナリオでの動作確認済み |
🧪 品質保証
プロトコルテスト: 5/5 成功(ping, initialize, initialized, tools/list, tools/call)
エラーハンドリングテスト: 5/5 成功(引数検証、座標検証、不明ツール等)
統合テスト: 9/9 成功(実データ取得、並行処理、全ツール動作確認)
パフォーマンステスト: 並行処理対応、キャッシュ機能正常動作
⚠️ 制限事項と推奨事項
境界ボックスサイズ
推奨サイズ: 0.005° × 0.005° 以下(約500m四方)
最大サイズ: 0.001平方度以下(タイムアウト防止)
都市部: より小さな範囲での分割取得を推奨
パフォーマンス考慮事項
建物クエリ: 道路クエリより高コスト
リレーション処理: 境界線データは複雑度が高い
キャッシュ活用: 同一範囲の再取得は15分間キャッシュされる
利用規約遵守
レート制限: 1秒あたり1リクエスト以下を推奨
適切な利用: 教育・研究・非営利目的での使用
サーバー負荷軽減: キャッシュ機能を積極的に活用
📈 パフォーマンス指標
実測値(東京駅周辺 0.003° × 0.003°)
建物データ: 20件、4.4秒、22KB
道路データ: 361件、2.1秒、129KB
アメニティ: 24件、12.6秒、4.5KB
キャッシュヒット: < 1秒(75%高速化)
🔢 件数制限機能
自然言語での制限指定
プロンプトに「最大30件まで」「10件程度」「5つまで」などの表現を含めると、自動的に件数制限が適用されます:
東京駅周辺の建物データを最大50件まで取得してください
↓ 自動的に limit: 50 が適用される
品川駅の鉄道データを10件程度で
↓ 自動的に limit: 10 が適用される対応する表現パターン
日本語: 最大N件、N件まで、N件以内、上限N件、N個まで、Nつまで
英語: limit N, max N, top N, first N, up to N
制限値の仕様
範囲: 1-10000件
適用: Overpass API レベルで効率的に制限
メタデータ: レスポンスに
limit_appliedとis_truncatedを含むパフォーマンス: 制限により高速化とメモリ効率化を実現
🎛️ Claude Code 設定
Claude Code での使用
Claude Code では claude mcp add コマンドでMCPサーバーを登録します:
# プロジェクトに移動
cd /path/to/osm-geojson-mcp-server
# 実行権限を付与(初回のみ必要)
chmod +x src/index.js
# MCPサーバーを登録(ローカルスコープ)
claude mcp add osm-geojson node src/index.js
# または絶対パスで登録
claude mcp add osm-geojson [absolute path to ]/osm-geojson-mcp-server/src/index.js詳細は Claude Code MCP ドキュメント を参照してください。
使用開始
claudeを起動後/mcpコマンドを実行しMCPが正しく接続できているか確認してください。
✔ connectedが表示されていれば正常に動作しています。
Claude に以下のように話しかけてください:
「東京駅周辺の建物データを取得して」
「新宿の地図データを分析したい」
「OSMサーバーの接続状況を確認して」Claude が自動的に適切なツールを選択してデータを取得します。
📝 更新履歴
v1.1.0 (2025-07-08) - MCPプロトコル完全準拠
✅ MCPプロトコル完全準拠: MCP 2024-11-05 仕様に完全対応
✅ エラーハンドリング改善: McpErrorクラスと標準エラーコード実装
✅ 包括的テスト追加: プロトコル・エラー・統合テストで100%成功率達成
✅ test_connection改善: JSON形式での応答統一
✅ Claude Code統合: 安定動作確認とドキュメント更新
v1.0.0 - 初期リリース
🗺️ 8種類の地理データ取得ツール
🔧 4種類のシステム機能ツール
💾 LRUキャッシュシステム実装
📈 詳細ログ・監視機能
⚡ マルチサーバーフォールバック機能
🤝 コントリビューション
このリポジトリをフォーク
機能ブランチを作成 (
git checkout -b feature/AmazingFeature)変更をコミット (
git commit -m 'Add some AmazingFeature')ブランチにプッシュ (
git push origin feature/AmazingFeature)プルリクエストを作成
📄 ライセンス
MIT License - 詳細は LICENSE ファイルを参照
🙏 謝辞
OpenStreetMap: オープンな地理データの提供
Overpass API: 高性能なOSMデータアクセス
Model Context Protocol: 統合プロトコル仕様
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/shimizu/OSM-GeoJSON-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server