takeshy

Geo MCP

Community takeshy
Updated

OpenStreetMapを使った施設検索・経路検索のMCPサーバー。自前データを優先し、車・ 徒歩・自転車に対応。

Geo MCP

自前のOpenStreetMapデータによる施設検索と、車・徒歩・自転車の経路検索。

Tools

  • place_search: 施設名、カテゴリ、周辺検索。距離順、営業時間、住所を返す。
  • route: 車 (driving)、徒歩 (walking)、自転車 (cycling) の距離・所要時間。

以下は自前データを利用した場合の入出力例。施設名・座標・距離・所要時間などは説明用のサンプル。応答はMCPの structuredContent 部分を示す(content には説明文と参照リンクも返る)。

place_search

入力:

{"query":"カフェ","lat":35.681,"lng":139.767,"radius":1200}

応答例:

{
  "query": "カフェ",
  "mode": "nearby",
  "center": { "lat": 35.681, "lng": 139.767 },
  "radiusMetres": 1200,
  "places": [
    {
      "name": "サンプルカフェ",
      "lat": 35.682,
      "lng": 139.768,
      "distanceMetres": 143,
      "kind": "cafe",
      "openingHours": "Mo-Su 08:00-20:00",
      "address": "東京都千代田区丸の内"
    }
  ],
  "source": "local",
  "provider": "openstreetmap"
}

distanceMetres は検索位置からの直線距離(メートル)。営業時間・住所などはOSMに登録がある場合に返る。該当施設がない場合は places が空配列になる。

route

入力:

{"lat":35.531,"lng":139.697,"to":"東京駅","mode":"walking"}

目的地は toLat / toLng でも指定可能。

応答例:

{
  "to": "東京駅",
  "mode": "walking",
  "origin": { "lat": 35.531, "lng": 139.697 },
  "destination": { "name": "東京駅", "lat": 35.681, "lng": 139.767 },
  "durationMinutes": 252,
  "distanceKm": 21,
  "source": "local",
  "provider": "openstreetmap",
  "geocoding": { "source": "local", "provider": "openstreetmap" }
}

durationMinutes は所要時間(分)、distanceKm は経路の距離(キロメートル)。geocoding は目的地を名前で検索した際の情報で、座標を直接指定した場合は省略される。

Local First

対応地域は config/coverage.json で設定する。初期範囲は東京本土・神奈川の近似Bounding Box。東京都の島しょ部などを網羅する行政境界ではない。

  • 対応地域: 自前SQLiteスナップショット(PostGISも選択可能)と自前OSRM
  • 未対応地域: Overpass / Nominatim / 公開OSRM
  • 名称検索: 自前データで見つからないときだけNominatim
  • 経路検索: 両端が対応地域内の場合だけ自前OSRM

結果には sourceprovider、外部利用時の fallbackReason を付ける。自前検索が0件でも通常は外部へ問い合わせない。

EXTERNAL_FALLBACK_ENABLED=false で公開地図APIへの実行時依存を止められる。OSMにない施設や営業時間は取得できない。公共交通、リアルタイム渋滞・営業状況には非対応。

Cloud Run

リポジトリ・MCPの名称は geo-mcp / Geo MCP。既存のGCPリソース名・コンテナ運用設定・配置先パスは互換性のため geo-home / geo-home-mcp を維持する。

低アクセス向けにMCPと3つのOSRMを別サービスに分け、最小インスタンス数0・リクエスト課金で動かす。SQLite・経路データは非公開GCSの不変リリースに保存する。Cloud SQLや常時稼働VMは不要。

OSRMはIAM認証でMCPからのみ利用する。MCPには Authorization: Bearer <MCP_API_KEY> が必要。コールドスタートには待ち時間がある。

構成・移行・更新・予算の詳細: 運用手順。

Development

Node.js 22.17以降、SQLiteスナップショットのテストにはPython 3.11以降が必要。

npm ci
cp .env.example .env
npm run typecheck
npm test
npm run build

環境変数は実行環境から渡す(.env はComposeが読み込む。Node単体では --env-file を使う)。LOCAL_PLACES_SQLITE を指定すると DATABASE_URL より優先する。

Attribution

© OpenStreetMap contributors. ODbL / attribution.

MCP Server · Populars

MCP Server · New

    knowall-ai

    Reverie — graph memory that dreams

    Memory management MCP server for AI agents using Neo4j knowledge graphs

    Community knowall-ai
    keploy

    Key Highlights

    Open-source platform for creating safe, isolated production sandboxes for API, integration, and E2E testing.

    Community keploy
    hermes-labs-ai

    Fidelis Memory

    Zero-LLM agent memory for Claude Code and AI agents: local-first BM25, dense-vector, and reciprocal-rank-fusion retrieval. Returns original passages verbatim by default. Available on PyPI as fidelis-memory. MIT.

    Community hermes-labs-ai
    n24q02m

    Better Code Review Graph

    Knowledge graph for token-efficient code reviews -- semantic search and call-graph resolution across your codebase.

    Community n24q02m
    Noveum

    Orbit

    Free, open source, realtime task manager. Issues, boards, sprints, projects and docs that sync instantly. Keyboard-first, self-hostable, with an MCP server for AI agents. No pricing, ever.

    Community Noveum