Skip to main content
Glama
shimizu

OSM-GeoJSON-MCP-Server

by shimizu

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: geolibre-mcp

🚀 高度な機能

💾 キャッシュシステム

  • 15分TTL: OSM規約準拠のキャッシュ期間

  • LRUアルゴリズム: メモリ効率的なキャッシュ管理

  • 重複リクエスト防止: 同一クエリの自動キャッシュ利用

📈 ログ・監視機能

  • 詳細ログ: API使用状況、応答時間、エラー率の追跡

  • 統計情報: キャッシュヒット率、サーバー別パフォーマンス

  • リアルタイム監視: 稼働時間、リクエスト頻度の表示

⚡ エラーハンドリング

  • MCP準拠エラー: McpErrorクラスによる標準エラーコード対応

  • マルチサーバー対応: 3サーバーの自動フォールバック

  • 指数バックオフ: レート制限時の適応的待機

  • 5xx系エラー対応: サーバーエラー時の自動リトライ

  • 詳細エラー情報: デバッグに有用な追加情報を提供

📦 インストールと使用方法

1. 依存関係のインストール

npm install

2. サーバーの起動

# 通常の起動
npm start

# 開発モード(MCP Inspectorを使用)
npm run dev

3. テスト実行

# 全テストを実行
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 統合: 安定動作確認済み

📊 実装詳細

機能カテゴリ

対応状況

詳細

初期化ハンドラー

✅ 完了

initialize, initialized 対応

プロトコル応答

✅ 完了

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_appliedis_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キャッシュシステム実装

  • 📈 詳細ログ・監視機能

  • ⚡ マルチサーバーフォールバック機能

🤝 コントリビューション

  1. このリポジトリをフォーク

  2. 機能ブランチを作成 (git checkout -b feature/AmazingFeature)

  3. 変更をコミット (git commit -m 'Add some AmazingFeature')

  4. ブランチにプッシュ (git push origin feature/AmazingFeature)

  5. プルリクエストを作成

📄 ライセンス

MIT License - 詳細は LICENSE ファイルを参照

🙏 謝辞

Available Tools

8 tools
get_amenitiesA

指定した矩形範囲内のアメニティ(施設・設備)をGeoJSON形式で取得します。レストラン、病院、学校などのPOI(興味のある地点)データが含まれます。

ParametersJSON Schema
NameRequiredDescriptionDefault
minLonYes最小経度(西端)
minLatYes最小緯度(南端)
maxLonYes最大経度(東端)
maxLatYes最大緯度(北端)
amenity_typeNoアメニティタイプ(例: restaurant, hospital, school, bank, cafe)all
limitNo取得件数の上限(オプション)。1-10000の範囲で指定可能
output_pathNo保存先ファイルパス(オプション)。指定するとファイルに保存、指定しないとJSON応答を返す

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description provides basic behavioral info (returns GeoJSON, includes POI data) but lacks details on rate limits, authentication, error responses, or what happens with empty results. The format is mentioned but no further behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, highly concise. The first sentence presents the core action and format, the second adds examples. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 7 parameters and no output schema or annotations, the description is minimal. It does not explain return structure, pagination, error handling, or the effect of output_path. Given the tool's complexity, more context is needed for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter. The tool description does not add meaning beyond the schema (e.g., no clarification on how limit interacts with GeoJSON or what output_path does precisely in terms of behavior).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action (retrieve amenities), the input (rectangular area), the output format (GeoJSON), and the content (POIs like restaurants, hospitals). It implicitly distinguishes from sibling tools that retrieve other map features.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool does but does not provide guidance on when to use it versus alternatives like get_buildings or get_roads. Usage context is implied by the resource type (amenities) but no explicit when-to-use or when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_api_statsA

API使用統計情報とキャッシュ状況を取得します。モニタリングとデバッグに使用します。

ParametersJSON Schema
NameRequiredDescriptionDefault
resetNo統計をリセットするかどうか(オプション)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It describes the tool as retrieving stats and cache, but does not mention implications of the 'reset' parameter (e.g., clearing statistics) or any side effects. The description is adequate but lacks important detail for a full behavioral picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loading the core action in the first sentence and the use case in the second. No wasted words or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one optional parameter, but the description lacks details about return format or the behavior of resetting. Given no output schema, the description could be more complete by mentioning typical response structure or reset effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the 'reset' parameter described in the schema. The description does not add new meaning beyond the schema, so it scores the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves API usage statistics and cache status for monitoring and debugging. This distinguishes it from sibling tools that retrieve specific data (e.g., get_amenities, get_buildings) or test connectivity (test_connection).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says "used for monitoring and debugging," providing clear context for when to use. It does not mention when not to use or alternatives, but the purpose is distinct enough from siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_buildingsA

指定した矩形範囲内の建物データをGeoJSON形式で取得します。建物タイプでフィルタリング可能です。

ParametersJSON Schema
NameRequiredDescriptionDefault
minLonYes最小経度(西端)
minLatYes最小緯度(南端)
maxLonYes最大経度(東端)
maxLatYes最大緯度(北端)
building_typeNo建物タイプフィルター(オプション)all
limitNo取得件数の上限(オプション)。1-10000の範囲で指定可能
output_pathNo保存先ファイルパス(オプション)。指定するとファイルに保存、指定しないとJSON応答を返す

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description only states it returns GeoJSON and supports filtering. It omits behavioral traits such as rate limits, pagination, or side effects, leaving significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the primary action and key feature, with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the basic purpose and filtering but lacks details on output path behavior, coordinate system, error handling, and return structure (no output schema). Adequate but incomplete for a tool with 7 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already well-documented in the input schema. The description adds minimal new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves building data within a rectangular area in GeoJSON format with optional filtering by building type, distinguishing it from sibling tools for other features.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus siblings like get_roads or get_amenities; the purpose is implied by the resource name but lacks comparative context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_green_spacesB

指定した矩形範囲内の緑地・公園データをGeoJSON形式で取得します。公園、森林、農地、庭園などの緑地情報が含まれます。

ParametersJSON Schema
NameRequiredDescriptionDefault
minLonYes最小経度(西端)
minLatYes最小緯度(南端)
maxLonYes最大経度(東端)
maxLatYes最大緯度(北端)
green_space_typeNo緑地タイプフィルター(オプション)all
limitNo取得件数の上限(オプション)。1-10000の範囲で指定可能
output_pathNo保存先ファイルパス(オプション)。指定するとファイルに保存、指定しないとJSON応答を返す

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It does not disclose operational traits such as read-only nature, authentication needs, rate limits, error behavior, or what happens if the query returns no results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that immediately convey the tool's purpose and scope. No unnecessary words, and the key action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description explains the input bounding box and output format (GeoJSON) but lacks details on output structure, error handling, and pagination. Given the absence of an output schema, more context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter well-described. The description adds little beyond the schema; it mentions GeoJSON output and the variety of green spaces, but does not clarify parameter interactions or the effect of optional filters like green_space_type or limit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves green spaces/park data in GeoJSON format within a bounding box. It specifies the types of green spaces included, distinguishing it from sibling tools like get_buildings or get_roads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description does not provide scenarios or exclusions, leaving the agent to infer from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_railwaysB

指定した矩形範囲内の鉄道データをGeoJSON形式で取得します。鉄道線路、駅、地下鉄、トラムなどの交通インフラが含まれます。

ParametersJSON Schema
NameRequiredDescriptionDefault
minLonYes最小経度(西端)
minLatYes最小緯度(南端)
maxLonYes最大経度(東端)
maxLatYes最大緯度(北端)
railway_typeNo鉄道タイプフィルター(オプション)all
limitNo取得件数の上限(オプション)。1-10000の範囲で指定可能
output_pathNo保存先ファイルパス(オプション)。指定するとファイルに保存、指定しないとJSON応答を返す

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

注釈がないため、説明が動作特性を全て負担すべきだが、出力形式とデータ種類のみ言及。破壊性、認証要件、レート制限などは不明。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

2文で完結しており、無駄がなく、重要な情報が先頭に配置されている。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

出力スキーマがなく、リターン構造の詳細が不足しているが、GeoJSONという形式は示されている。パラメータ範囲や制限はスキーマで十分。全体的には最低限の完備性。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

スキーマですべてのパラメータが説明されているため、説明の追加価値は限定的。矩形範囲やGeoJSONの文脈は付加するが、デフォルトや形式の詳細はスキーマに依存。

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

明確に「矩形範囲内の鉄道データをGeoJSON形式で取得」と説明し、他ツール(道路、建物など)と区別できる。動詞+リソース+出力形式が具体的。

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

いつ使うべきか、または代替手段についての指示がない。他の地理系ツールとの使い分けや前提条件に触れていない。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_roadsB

指定した矩形範囲内の道路ネットワークをGeoJSON形式で取得します。道路タイプでフィルタリング可能です。

ParametersJSON Schema
NameRequiredDescriptionDefault
minLonYes最小経度(西端)
minLatYes最小緯度(南端)
maxLonYes最大経度(東端)
maxLatYes最大緯度(北端)
road_typesNo道路タイプフィルター(複数選択可)
limitNo取得件数の上限(オプション)。1-10000の範囲で指定可能
output_pathNo保存先ファイルパス(オプション)。指定するとファイルに保存、指定しないとJSON応答を返す

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the tool returns GeoJSON but does not mention other behavioral traits such as whether it is read-only, any authentication requirements, rate limits, or side effects like file writing (via output_path). The implied read-only nature from the verb 'get' is not explicitly confirmed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no unnecessary words. The purpose is front-loaded, and the description is efficient. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters, no output schema, and no annotations, the description lacks completeness. It does not explain the behavior of the output_path parameter (save vs return), the limit parameter, or return structure beyond 'GeoJSON format'. An agent may miss important usage details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no new meaning beyond the schema: it mentions 'filterable by road type' but the schema already documents road_types with enum values. The description does not add syntax, format, or interaction details for any parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '指定した矩形範囲内の道路ネットワークをGeoJSON形式で取得します。道路タイプでフィルタリング可能です。' clearly states the tool retrieves road networks within a bounding box in GeoJSON format with optional filtering by road type. This verb+resource combination is distinct from siblings like get_amenities or get_buildings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., other get_* tools), nor any context on when it is appropriate or not. The description only states what it does, without usage recommendations or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_waterwaysB

指定した矩形範囲内の水域・河川データをGeoJSON形式で取得します。川、湖、海、運河などの水域情報が含まれます。

ParametersJSON Schema
NameRequiredDescriptionDefault
minLonYes最小経度(西端)
minLatYes最小緯度(南端)
maxLonYes最大経度(東端)
maxLatYes最大緯度(北端)
waterway_typeNo水域タイプフィルター(オプション)all
limitNo取得件数の上限(オプション)。1-10000の範囲で指定可能
output_pathNo保存先ファイルパス(オプション)。指定するとファイルに保存、指定しないとJSON応答を返す

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It only mentions retrieval in GeoJSON format but does not state that the operation is read-only, non-destructive, or detail rate limits, data precision, or bounding box area limits. This is insufficient, scoring 2.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single, concise sentence in Japanese, front-loaded with the main action and format. No unnecessary words, earning a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters, no output schema, and no annotations, the description fails to explain output structure, the effect of the limit parameter, coordinate reference system, or how the waterway_type filter works. This is inadequate for a geographic data retrieval tool, scoring 2.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so each parameter is already documented. The description adds no extra meaning beyond summarizing the tool's function. Baseline is 3; no additional value is provided, hence a 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves waterway data (rivers, lakes, seas, canals) within a specified rectangular bounding box, outputting in GeoJSON format. This is specific and distinct from sibling tools like get_buildings or get_roads, earning a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs. alternatives (e.g., other get_* tools). It does not mention prerequisites, bounding box size constraints, or scenarios where other tools would be more appropriate. This lack of usage context results in a 2.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_connectionA

Overpass APIサーバーへの接続をテストします。すべての利用可能なサーバーに対して接続確認を行います。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that connections are tested against all servers, but does not mention side effects, rate limits, timeout behavior, or output format. This is minimally adequate for a test tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The description is front-loaded with the core purpose and provides necessary scope ('all available servers').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple parameter-less test tool, the description is relatively complete. It lacks details about the output (e.g., returns success/failure status or detailed per-server results), but the tool's simplicity makes this acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so schema coverage is 100%. The description does not need to add parameter information, earning the baseline score of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it tests connection to Overpass API servers and checks all available servers. This is a specific verb-resource combination that distinguishes it from sibling data-retrieval tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies using this tool as a connectivity check before executing data retrieval tools. It does not explicitly state when not to use it or name alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 8 tool updatesv1.1.0
    • First observedget_amenities
    • First observedget_api_stats
    • First observedget_buildings
    • First observedget_green_spaces
    • First observedget_railways
    • First observedget_roads
    • First observedget_waterways
    • First observedtest_connection

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct OSM feature type (amenities, buildings, green spaces, railways, roads, waterways) or server functionality (stats, connection test), with no overlapping purposes.

Naming Consistency5/5

All tool names follow a consistent 'get_' prefix followed by a noun (e.g., get_amenities, get_buildings), making the pattern predictable.

Tool Count5/5

With 8 tools, the server covers the major OSM feature categories plus utility functions, well-scoped for its purpose without being excessive or insufficient.

Completeness4/5

The tool set covers common geographic features but lacks freeform querying (e.g., by tags) or less common layers like land use or administrative boundaries, leaving minor gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides geospatial data intelligence tools for inspecting, querying, and converting geospatial data using DuckDB Spatial.
    1
    MIT
  • F
    license
    B
    quality
    B
    maintenance
    Provides read-only query tools over OpenStreetMap data in PostGIS, enabling natural language queries for features, categories, and spatial analysis.
    7
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables users to search for locations, businesses, and points of interest on an interactive OpenStreetMap map within ChatGPT conversations.
    -

Latest Blog Posts

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