Skip to main content
Glama

google-maps-mcp

A TypeScript Model Context Protocol (MCP) サーバーで、Google Maps Platform API をLLM向けツールとして公開します。AIアシスタントに、トレーニングデータからの推測ではなく、実際の構造化された地図データ(経路案内、公共交通機関のルート、場所の検索、住所検証、写真、標高など)を提供します。

Claude Desktop およびその他の MCP 互換クライアントで動作します。


機能

3つのカテゴリにわたる15のツール:

カテゴリ

ツール

地図

静的マップ画像URL、埋め込みURL(iframe)、標高データ、ストリートビュー画像URL

ルート

ターンバイターンの経路案内(車・徒歩・自転車・公共交通)、距離行列、複数経由地のルート最適化

場所

ジオコーディング / 逆ジオコーディング、プレイス詳細、テキスト検索、周辺検索、オートコンプリート、写真、住所検証、タイムゾーン

トランスポート: HTTP Streamable(ステートフルセッション、SSEキープアライブ) — モダンなMCPトランスポートで、mcp-remote および HTTP対応のすべてのクライアントと互換性があります。

最小フットプリント: ランタイム依存関係は2つだけ(@modelcontextprotocol/sdkzod)。すべてのGoogle Maps呼び出しはREST APIに対してNode.js組み込みのfetchを使用します — Google SDKは不要です。


Related MCP server: google-maps-mcp-server

前提条件

  • Node.js 22+(またはDocker)

  • mcp-remote — 一度だけグローバルにインストール: npm install -g mcp-remote

  • 関連するAPIを有効にしたGoogle Maps Platform APIキー(下記参照)

  • 請求が有効なGoogle Cloudプロジェクト

Google Cloud Consoleで有効にするAPI

APIとサービス → ライブラリ に移動して有効にします:

API

使用箇所

Maps Static API

maps_static_map

Street View Static API

maps_street_view

Maps Embed API

maps_embed_url

Elevation API

maps_elevation

Geocoding API

places_geocode

Time Zone API

places_timezone

Places API (New)

places_details, places_text_search, places_nearby_search, places_autocomplete, places_photos

Address Validation API

places_address_validation

Routes API

routes_compute, routes_matrix

Route Optimization API

routes_optimize (任意)

本番環境では、キーをこれらのAPIとサーバーのIPに制限できます。


クイックスタート

オプションA — Dockerで実行(推奨)

docker run -d \
  --name google-maps-mcp \
  -p 127.0.0.1:3003:3003 \
  -e GOOGLE_MAPS_API_KEY=your_key_here \
  -e MCP_AUTH_TOKEN=your_secret_token \
  ghcr.io/apurvaumredkar/google-maps-mcp:latest

確認:

curl http://localhost:3003/health
# {"status":"ok","service":"google-maps-mcp"}

オプションB — npm / npx

インストール不要 — npx で直接実行:

GOOGLE_MAPS_API_KEY=your_key_here \
MCP_AUTH_TOKEN=your_secret_token \
npx mcp-server-google-maps
# google-maps-mcp listening on port 3003

またはグローバルにインストール:

npm install -g mcp-server-google-maps
GOOGLE_MAPS_API_KEY=your_key_here MCP_AUTH_TOKEN=your_secret_token mcp-server-google-maps

PORT= を設定すると、デフォルトのポート(3003)を変更できます。


オプションC — ソースからビルド

git clone https://github.com/apurvaumredkar/google-maps-mcp.git
cd google-maps-mcp
npm install
npm run build

.env ファイルを作成する(または変数をエクスポート):

GOOGLE_MAPS_API_KEY=your_key_here
MCP_AUTH_TOKEN=your_secret_token
# Optional — only needed for routes_optimize:
GOOGLE_CLOUD_PROJECT_ID=your_project_id

サーバーを起動:

GOOGLE_MAPS_API_KEY=... MCP_AUTH_TOKEN=... npm start
# google-maps-mcp listening on port 3003

オプションD — Docker Compose(セルフホストスタック)

docker-compose.yml に追加:

services:
  google-maps-mcp:
    build: .
    container_name: google-maps-mcp
    restart: unless-stopped
    ports:
      - "127.0.0.1:3003:3003"
    environment:
      - GOOGLE_MAPS_API_KEY=${GOOGLE_MAPS_API_KEY}
      - MCP_AUTH_TOKEN=${MCP_AUTH_TOKEN}
      - GOOGLE_CLOUD_PROJECT_ID=${GOOGLE_CLOUD_PROJECT_ID:-}

環境変数

変数

必須

説明

GOOGLE_MAPS_API_KEY

必須

Google Maps Platform APIキー

MCP_AUTH_TOKEN

任意

クライアントが X-Api-Key ヘッダーで送信する必要があるシークレットトークン。ローカルのみで使用する場合は省略。サーバーをネットワークまたはプロキシ経由で公開する場合は設定します。openssl rand -hex 32 で生成します。

PORT

任意

HTTPポート(デフォルト: 3003

GOOGLE_CLOUD_PROJECT_ID

任意

routes_optimize(Route Optimization API)でのみ必要


クライアントの接続

このサーバーはあらゆるMCP互換クライアントで動作します — Claude Desktop、LM Studio、Cursor、その他Model Context Protocolをサポートする任意のツール。設定形式はクライアントごとに異なる場合がありますが、エンドポイントと認証は同じです。

サーバーは単一のエンドポイントを公開します: POST/GET http://localhost:3003/mcp

MCP_AUTH_TOKEN が設定されている場合、すべてのリクエストに次のヘッダーを含める必要があります:

X-Api-Key: <MCP_AUTH_TOKEN>

MCP_AUTH_TOKEN が設定されていない場合、ヘッダーは不要です(ローカルのみでの使用に適しています)。

Claude Desktop(例)

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)を編集:

{
  "mcpServers": {
    "google-maps": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:3003/mcp",
        "--header",
        "X-Api-Key: your_secret_token"
      ]
    }
  }
}

ツールリファレンス

地図

maps_static_map — 静的マップ画像

静的マップの直接画像URLを返します。

パラメータ

デフォルト

説明

center

string

必須

住所または lat,lng

zoom

integer

13

ズームレベル 0〜21

size

string

640x480

画像サイズ(ピクセル単位のWxH)

maptype

enum

roadmap

roadmap | satellite | terrain | hybrid

markers

string

マーカー指定(例: color:red|48.8566,2.3522

path

string

ルート描画用のパス指定

format

enum

png

png | png8 | png32 | gif | jpg

scale

enum

1

1 = 標準、2 = HiDPI/retina

language

string

ラベルのBCP 47言語コード

region

string

ISO 3166-1 alpha-2 地域コード


maps_embed_url — Maps埋め込みURL

iframe対応の埋め込みURLを返します。

パラメータ

説明

mode

enum

place | directions | search | view | streetview

q

string

場所/検索クエリ(place、searchモード)

center

string

view/streetviewモード用の lat,lng

zoom

integer

ズームレベル

origin / destination

string

directionsモード用

waypoints

string

パイプ区切りの経由地

maptype

enum

roadmap | satellite


maps_elevation — 標高データ

海抜(メートル単位)の標高を返します。

パラメータ

説明

locations

string

パイプ区切りの lat,lng ペア

path

string

パイプ区切りの lat,lng パス

samples

integer

パスに沿ったサンプル数(2〜512)


maps_street_view — ストリートビュー画像

ストリートビューのパノラマ画像の直接URLを返します。

パラメータ

デフォルト

説明

location

string

住所または lat,lng

pano

string

特定のパノラマID(locationを上書き)

size

string

640x480

画像サイズ WxH

heading

number

カメラの方位 0〜360°

pitch

number

カメラの傾き -90°〜90°

fov

number

90

視野 10〜120°

source

enum

屋内パノラマを除外するには outdoor


ルート

routes_compute — ルート計算

リアルタイムの交通情報を含むターンバイターンの経路案内。

TRANSIT制限: TRANSIT モードは intermediates(経由地)とルート修飾子(avoid_tollsavoid_highwaysavoid_ferries)をサポートしていません。これらを travel_mode: TRANSIT と一緒に渡すと明確なエラーが返ります — 代わりに区間を分けて計算してください(A→B、次にB→C)。

パラメータ

デフォルト

説明

origin

string

必須

住所または lat,lng

destination

string

必須

住所または lat,lng

travel_mode

enum

DRIVE

DRIVE | WALK | BICYCLE | TRANSIT | TWO_WHEELER

transit_allowed_modes

enum[]

交通機関を特定の車両タイプに絞り込みます: BUS | SUBWAY | TRAIN | LIGHT_RAIL | RAILtravel_modeTRANSIT の場合のみ適用されます

intermediates

string[]

出発地と目的地の間のウェイポイント(TRANSIT ではサポートされません)

departure_time

string

交通状況を考慮したルーティング用のISO 8601日時

avoid_tolls

boolean

false

有料道路を避ける(TRANSIT ではサポートされません)

avoid_highways

boolean

false

高速道路を避ける(TRANSIT ではサポートされません)

avoid_ferries

boolean

false

フェリーを避ける(TRANSIT ではサポートされません)

units

enum

METRIC

METRIC | IMPERIAL

compute_alternative_routes

boolean

false

最大3件の代替ルートを返す


routes_matrix — ルート距離行列

複数の出発地と目的地の間の移動時間・距離を同時に計算します。

パラメータ

デフォルト

説明

origins

string[]

必須

最大25件の住所または lat,lng 文字列

destinations

string[]

必須

最大25件の住所または lat,lng 文字列

travel_mode

enum

DRIVE

DRIVE | WALK | BICYCLE | TRANSIT

departure_time

string

ISO 8601日時

units

enum

METRIC

METRIC | IMPERIAL


routes_optimize — マルチストップルートの最適化

停車順序を最適化し、総移動時間を最小化します。GOOGLE_CLOUD_PROJECT_ID が必要です。

パラメータ

説明

vehicle_start

string

開始地点 — lat,lng である必要があります(必要に応じて最初にジオコーディング)

vehicle_end

string

終了地点(デフォルトは開始地点)

visits

object[]

{ address, label?, duration_minutes? } の配列 — 住所は lat,lng である必要があります

travel_mode

enum

DRIVING | WALKING


Places

places_geocode — ジオコーディング / 逆ジオコーディング

住所と座標を相互変換します。

パラメータ

説明

address

string

ジオコーディングする住所

latlng

string

逆ジオコーディング用の lat,lng

region

string

ISO 3166-1 alpha-2 リージョンバイアス

components

string

コンポーネントフィルター(例: country:FR|postal_code:75001


places_details — プレイスの詳細

Google プレイス ID による場所の完全な詳細情報。

パラメータ

説明

place_id

string

Google プレイス ID

fields

string

カンマ区切りのフィールドマスク(適切なデフォルト値あり)

language_code

string

レスポンスの言語


自然言語のクエリに一致する場所を検索します。

パラメータ

説明

query

string

例: "best ramen in Tokyo"

location_bias_lat/lng

number

この場所にバイアス

location_bias_radius_m

number

バイアス円の半径

max_results

integer

1〜20、デフォルトは10

min_rating

number

最小平均星評価(0〜5)

open_now

boolean

現在営業中の場所のみ

included_type

string

場所のタイプでフィルタリング(例: restaurant

price_levels

enum[]

PRICE_LEVEL_FREEPRICE_LEVEL_VERY_EXPENSIVE


半径内の座標近くにある場所を検索します。

パラメータ

説明

latitude / longitude

number

検索の中心

radius_m

number

検索半径(メートル、最大50,000)

included_types

string[]

プレイスタイプのフィルター

excluded_types

string[]

除外するプレイスタイプ

max_results

integer

1〜20、デフォルトは10

rank_preference

enum

DISTANCE | POPULARITY


places_autocomplete — プレイスのオートコンプリート

部分的な入力からプレイス名を予測します。

パラメータ

説明

input

string

補完する部分テキスト

location_bias_lat/lng

number

この場所にバイアス

included_primary_types

string[]

タイプフィルター

country_codes

string[]

ISO 3166-1 alpha-2 の国コードフィルター

include_query_predictions

boolean

クエリ予測も返す


places_photos — プレイスの写真

場所の写真URLを取得します。

パラメータ

デフォルト

説明

place_id

string

必須

Google プレイス ID

max_photos

integer

3

返す最大写真数(1〜10)

max_width_px

integer

1200

写真の最大幅(ピクセル)

max_height_px

integer

900

写真の最大高さ(ピクセル)


places_address_validation — 住所の検証

郵便住所を検証して標準化します。

パラメータ

説明

address_lines

string[]

住所の行

region_code

string

ISO 3166-1 alpha-2 国コード

locality

string

市区町村

administrative_area

string

都道府県/州

postal_code

string

郵便番号

enable_usps_cass

boolean

USPS CASS 検証(米国のみ)


places_timezone — タイムゾーンの取得

任意の座標に対する IANA タイムゾーンと UTC/DST オフセットを取得します。

パラメータ

説明

latitude / longitude

number

場所

timestamp

integer

DST計算用のUnixタイムスタンプ(デフォルトは現在時刻)

language

string

レスポンスの言語


アーキテクチャ

src/
├── index.ts         # Raw Node.js HTTP server, auth, stateful session management
├── server.ts        # McpServer instantiation + tool registration
├── maps-client.ts   # Typed fetch wrappers for all Google Maps REST APIs
└── tools/
    ├── maps.ts      # 4 tools: static map, embed, elevation, street view
    ├── routes.ts    # 3 tools: compute route, matrix, optimize
    └── places.ts    # 8 tools: geocode, details, text search, nearby, autocomplete,
                     #          photos, address validation, timezone

主要な設計判断:

  • 生の node:http を Express ではなく使用 — MCP SDK 内部の Hono ベースのリクエスト処理との正しい相互運用に必要です。Express はリクエストボディのストリームを先読みするため、StreamableHTTPServerTransport が壊れます。

  • ステートフルセッションマップmcp-remote と SSE キープアライブでは、リクエスト間でセッションを永続させる必要があります。セッションは Mcp-Session-Id ヘッダーでキー化され、トランスポートのクローズ時にクリーンアップされます。

  • ボディ読み取り前の認証X-Api-Key のチェックはボディストリームに触れる前にヘッダーで行われるため、拒否されたリクエストはクリーンにドレインされます。

  • Google API の認証分割 — 従来の REST API(Static Maps、Geocoding、Elevation、Timezone、Street View)は ?key= クエリパラメータを使用します。新しい API(Places v1、Routes v2、Address Validation)は X-Goog-Api-Key ヘッダーを使用します。


開発

npm run dev    # TypeScript watch mode (tsc --watch)
npm run build  # Compile to dist/
npm start      # Run compiled server

変更後の Docker イメージの再ビルド

docker compose build google-maps-mcp
docker compose up -d google-maps-mcp

MCP エンドポイントのテスト

# Health check (no auth required)
curl http://localhost:3003/health

# MCP initialize (auth required)
TOKEN=your_secret_token
curl -s -X POST http://localhost:3003/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-Api-Key: $TOKEN" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1"}},"id":1}'

# List tools (use session ID from Mcp-Session-Id response header)
SESSION=<Mcp-Session-Id from above>
curl -s -X POST http://localhost:3003/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-Api-Key: $TOKEN" \
  -H "Mcp-Session-Id: $SESSION" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":2}'

Windows/WSL の注意点: .env ファイルが Windows の CRLF 行末になっている場合は、tr -d '\r' で値を抽出してください:

TOKEN=$(grep MCP_AUTH_TOKEN .env | cut -d= -f2 | tr -d '\r')

変更履歴

v1.0.4

  • routes_compute: TRANSIT モードの早期検証を追加 — intermediates やルート修飾子(avoid_tollsavoid_highwaysavoid_ferries)を渡すと、Google API からの不可解な 400 エラーではなく、明確で実用的なエラーが返るようになりました。

v1.0.3

  • routes_compute: transit_allowed_modes パラメータを追加し、交通手段のタイプ(BUSSUBWAYTRAINLIGHT_RAILRAIL)でトランジットルートをフィルタリングできるようにしました。

v1.0.2

  • Maps、Routes、Places のカテゴリにわたる15のツールを備えた最初のパブリックリリース。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
2wRelease cycle
3Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    A Model Context Protocol server that provides Google Maps API integration, allowing users to search locations, get place details, geocode addresses, calculate distances, obtain directions, and retrieve elevation data through LLM processing capabilities.
    7
    1,992
    428
    MIT

View all related MCP servers

Related MCP Connectors

  • Live Google Maps business search, review, and photo data for AI agents over MCP.

  • Google Maps MCP Pack — geocoding, places, directions, distance matrix, elevation.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

View all MCP Connectors

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/apurvaumredkar/google-maps-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server