Skip to main content
Glama
HasData

Google Maps MCP Server

Google Maps MCP Server

ホスト型の Model Context Protocol(MCP)サーバーで、Claude、Cursor、Windsurf、その他の MCP クライアントに、読み取り専用の Google Maps ツールを6つ提供します。場所の検索、場所の完全な詳細の取得、レビュー・写真・投稿の取得、単一レビュワーの履歴の追跡まで、すべて構造化 JSON で行えます。Google Cloud プロジェクトも、有効化するための請求設定も不要です。

https://mcp.hasdata.com/api/mcp?apis=google_maps

Glama score tool contract MCP Tools License

目次

Related MCP server: MCP Google Maps

必要なもの

カスタムヘッダーを伴う streamable HTTP を話す MCP クライアントが必要です。HasData API キーは、dashboard で作成でき、カードなしで無料、トライアルでは 5クレジットレートで約200回の呼び出しが使えます。それ以外には何も必要ありません。これはリモートサーバーなので、最もかんたんな方法は URL とヘッダーだけを設定し、コンテナーを実行する必要も、Google Cloud プロジェクトや API キーをどこかに組み込む必要もありません。stdio 専用クライアントの場合、その代わりに @hasdata/google-maps-mcp という npm パッケージ、または hasdata-google-maps-mcp という PyPI パッケージのランチャーを使用できます。

クイックスタート

URL

https://mcp.hasdata.com/api/mcp?apis=google_maps

接続方式

HTTP, streamable

認証ヘッダー

x-api-key: HASDATA_API_KEY

サーバー URL はすべてのクライアントで同じです。Claude Code と Claude Desktop では、実際に動作させて確認しています。他の方法は、リモートサーバーに関する各クライアントの公式ドキュメントに従ってください。

OAuth に対応したクライアントでは、同じ URL をコネクタとして追加し、設定ファイルにキーを書かずにサインインできます。

claude mcp add --transport http google-maps "https://mcp.hasdata.com/api/mcp?apis=google_maps" \
  --header "x-api-key: HASDATA_API_KEY"

Claude Desktop は設定ファイルからローカル(stdio)サーバーのみを読み込むため、リモートサーバーへは stdio ランチャーを経由して接続します。@hasdata/google-maps-mcp パッケージがそのランチャーで、環境変数からキーを読み取ります。

claude_desktop_config.json:

{
  "mcpServers": {
    "google-maps": {
      "command": "npx",
      "args": ["-y", "@hasdata/google-maps-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Node の代わりに Python を使いますか?組み込み手動をすれば、PyPI パッケージにランチャーを入れ替えられます。uvx が手動インポートなしで実行します。

{
  "mcpServers": {
    "google-maps": {
      "command": "uvx",
      "args": ["hasdata-google-maps-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

OAuth に対応したクライアントでは、代わりに URL をカスタムコネクタとして追加し、ランチャーを省略できます。

.cursor/mcp.json:

{
  "mcpServers": {
    "google-maps": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "google-maps": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
{
  "mcpServers": {
    "google-maps": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_maps",
      "type": "streamableHttp",
      "headers": { "x-api-key": "HASDATA_API_KEY" },
      "disabled": false
    }
  }
}

.vscode/mcp.json:

{
  "servers": {
    "google-maps": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.gemini/settings.json:

{
  "mcpServers": {
    "google-maps": {
      "httpUrl": "https://mcp.hasdata.com/api/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

プロンプト例

以下は、特に記載のない限り、それぞれが1回のツール呼び出しです。

Google Maps でダウンタウン・シアトル近くのコーヒーを検索し、上位10件を評価、レビュー数、Webサイト付きで教えて。

1回の呼び出しで5クレジット。検索結果には placeIddataId がすでに付いているので、下の後続処理では検索をやり直す必要はありません。

ChIJAb0KE0RrkFQRuI4X0By5Mcw の完全な詳細を取得してください:営業時間、サービスオプション、価格帯、メニューリンク。

1回の呼び出しで5クレジット。

その場所の最新レビューを新しい順に読み、どのトピックが最も多く話われているか教えてください。

1回の呼び出しで5クレジット。レスポンスには Google 独自のトピッククラスターが件数と共に含まれ、並びもデータとして含まれています。

その上位レビューの投稿者を取り上げ、その人がレビューした他のすべての場所と、残した評価を一覧にしてほしい。

1回の呼び出しで5クレジット。レビューには投稿者の contributorId が含まれます。これはコントリビューターツールが受け取る値そのものです。

その場所の写真フィードと、店舗の最近の投稿を取得して。

2回の呼び出し。写真は5クレジット、投稿は10クレジットです。

このチェーンが低コストで済む理由は2つあります。検索はすべての結果に placeIddataId を付けて返し、詳細・レビュー・写真・投稿呼び出しには個別の解決ステップがいりません。また、レビューには投稿者の contributorId が付いているため、「このレビューを書いたのは誰か」をその人の全履歴への1回の移動として解決できます。

ツール

6つのツール。多くは読み取り専用です。サンプルは実際の呼び出しを短縮したもので、数値はレビューが増えるに従って変化します。形として読んでください。各ツール名はエンドポイントのリファレンスへのリンクになっています。

サンプルはペイロードであり、レスポンス全体ではありません。tools/call の結果は1つのテキストブロックを持ち、そのテキスト自体が urlstatustextjson を含む JSON で、スクレイピングされたデータは json の下にあります。生の JSON-RPC レスポンスからは、result.content[0].text をパースしてから .json にアクセスします。チャットクライアントはこれを自動的に展開してくれますが、エンドポイントに直接接続するコードでは、そこまでの処理を自動では行いません。

ツールのうち4つは、場所を placeId または dataId で受け付けます。検索はすべての結果で両方を返します。通常の流れは、検索を1回実行してから、保持しておいた ID を再利用して詳細・レビュー・写真・投稿の呼び出しを行う流れです。

Search Google Maps

hasdata_google_maps_search_performMapSearch

クエリに対する場所を、Google Maps のランキングで返します。

パラメーター

必須

備考

q

string

はい

フリーテキストのクエリ。例: coffeeplumber

ll

string

地図の中心とズームを @lat,lng,zoomz の形式で指定。例: @47.6062,-122.3321,14z。検索する場所を固定する方法です

gl / hl

string

2文字の国コードと言語コード

domain

string

検索対象の Google ドメイン。例: google.com

start

number

ページング用の結果オフセット。20件単位。ll の設定も必要です

各結果には positiontitleplaceIddataIdaddressgpsCoordinatesratingreviewstypetypespricewebsitethumbnailopenStateworkingHoursserviceOptions が含まれ、Google が表示する場合には menu リンクも含まれます。

場所は ll に指定し、クエリには含めません。地図の中心とズームはそこに置いてください。「coffee」だけでは、Google が判断した現在地周辺が返るためです。ズームの数字は結果が検索対象となる範囲を広げたり狭めたりします。

{
  "localResults": [
    {
      "position": 1,
      "title": "Howdy Y'all Coffee (Central Library)",
      "placeId": "ChIJAb0KE0RrkFQRuI4X0By5Mcw",
      "dataId": "0x54906b44130abd01:0xcc31b91cd0178eb8",
      "address": "1000 4th Ave Fl 3, Seattle, WA 98104",
      "rating": 4.9,
      "reviews": 117,
      "type": "Coffee shop",
      "website": "https://howdyyallcoffee.com/",
      "workingHours": {
        "timezone": "America/Los_Angeles",
        "days": [ { "day": "Friday", "time": "10 AM–4 PM" } ]
      }
    }
  ]
}

場所の詳細を取得

hasdata_google_maps_place_getPlaceDetails

placeId を使って1つの場所を完全な形で返します。

パラメーター

必須

備考

placeId

string

はい

検索結果の placeId

hl

string

言語コード

domain

string

Google ドメイン

検索結果と同じフィールドを持つ単一の placeResults オブジェクトに加え、images 配列も返します。これは、必要な検索を実行せずに1つの場所の完全なレコードを取得する方法です。

場所のレビューを取得

hasdata_google_maps_reviews_getMapReviews

場所のレビューフィードをページ単位で返します。

パラメーター

必須

備考

placeId

string

その場所。placeId または dataId のどちらかが必要です

dataId

string

dataId での場所指定

sortBy

string

デフォルトは mostRelevant。他に newestFirstratingHighratingLow

topicId

string

topics 配列の id を使って1つのトピックに絞り込む

hl

string

言語コード

nextPageToken

string

前回レスポンスの pagination.nextPageToken

placeInfotopics 配列、reviews 配列、pagination を返します。各レビューには reviewIdratingsnippetdateisoDatelinkimagesuser オブジェクトが含まれ、所有者が返信した場合は response も含まれます。

topics は、レビューが言及する内容を Google が独自にクラスタリングしたもので、各 keywordmentions 回数が初めから集計されています。トピックの idtopicId に渡すと、そのトピックに言及したレビューのみを読むことができます。

各レビューの user には contributorId が含まれます。これがコントリビューターツールの入力となるので、「誰が書いたか」から「その人のすべての投稿」へ1回でジャンプできます。

{
  "placeInfo": { "title": "Howdy Y'all Coffee (Central Library)", "rating": 4.9, "reviews": 117 },
  "topics": [
    { "keyword": "earl grey matcha", "mentions": 26, "id": "bew1w_KAk5U" },
    { "keyword": "friendly baristas", "mentions": 17, "id": "FOw-91tYieQ" }
  ],
  "reviews": [
    {
      "reviewId": "…",
      "rating": 5,
      "snippet": "…",
      "isoDate": "2026-07-06T19:49:00.657Z",
      "user": { "name": "Angela Li", "contributorId": "106033685843245983748" },
      "response": { "isoDate": "2026-07-07T04:44:34.000Z", "snippet": "Thank you!! 🥺☺️" }
    }
  ],
  "pagination": { "nextPageToken": "…" }
}

コントリビューターのレビューを取得

hasdata_google_maps_contributor_reviews_getMapReviews

1人が書いたレビューすべてを、その人が評価したすべての場所にわたって取得します。

パラメーター

必須

備考

contributorId

string

はい

レビュー内の user オブジェクトが持つ contributorId

num

number

取得するレビュー数

gl / hl

string

国コードと言語コード

nextPageToken

string

前回レスポンスのトークン

レスポンスには、namelevelpointscontributions の内訳を持つ contributor オブジェクトと、各エントリに自身の placeInfo を持つ reviews 配列が含まれます。そのため、各レビューがどの場所についてのものかを、追加ルックアップなしで確認できます。このツールは、レビューフィードだけではできない、レビュワーの信頼性やレビューネットワークの調査を支えます。個人の公開レビュー履歴を読み取るため、結果は Google の規約および適用される法律に従って利用してください。

場所の写真を取得

hasdata_google_maps_photos_getMapPhotos

その場所の写真フィードを取得します。

パラメータ

必須

備考

placeId

string

場所を指定する。placeIddataId のどちらかが必須

dataId

string

代わりに dataId で場所を指定する場合

categoryId

string

categories 配列の id を使って、1 つのカテゴリだけに絞り込む

hl

string

言語コード

nextPageToken

string

前回のレスポンスで得たトークン

レスポンスとして、categories 配列(AllLatestVideosMenu と場所固有のカテゴリ)、各エントリが imagethumbnail の URL を持つ photos 配列、および pagination が返ります。

場所の投稿を取得

hasdata_google_maps_posts_getMapPosts

事業者自身が Google のリスティングに投稿した投稿や更新情報です。

パラメータ

必須

備考

placeId

string

場所を指定する。placeIddataId のどちらかが必須

dataId

string

代わりに dataId で場所を指定する場合

hl

string

言語コード

nextPageToken

string

前回のレスポンスで得られたトークン

posts 配列が返ります。

ほとんどの場所では投稿がないため、posts 配列が空になるのが一般的です。投稿があると決め打ちする前に、配列の長さを確認してください。

エラーと失敗の発生経路

ツール呼び出しでクライアントが HTTP エラーコードを受け取ることはほとんどありません。MCP 層は 200 で応答し、失敗は結果の中に入れられ、isErrortrue に設定されて理由がテキストで示されます。エージェントが読み取るのは、ステータス行を期待する場面でのメッセージです。

間違ったキーは、接続失敗ではなくツールの出力として表面化します。 ツール一覧の取得は空でないキーなら何でも受け付け、クライアントはハンドシェイクを完了してグリーンを表示します。その後の最初のツール呼び出しで、isError: true とテキスト HasData API error: 401 Unauthorized が返ってきます。フローの中でそれよりも前に問題を報告する箇所はないので、この文字列に注意してください。

実際に HTTP エラーになるのは、キーが欠けている場合だけです。 認証はすべてのツールに先立って実行されるため、接続自体が 401 で失敗します。

スキーマを壊す引数は、リクエストになる前に拒否されます。 q を指定しない検索は、isError: true と、フィールド名を指し示すテキスト MCP error -32602: Input validation error が返ります。データの取得も課金も発生しません。

レビュー・写真・投稿の呼び出しには場所が必要です。 この3つは placeId または dataId を受け取りますが、どちらも渡さないと両方のフィールド名を挙げた 422 が返ります。この要件は条件付きであり、スキーマは単純な必須リストとして表現できないからです。どちらかを渡してください。

解決できない場所 ID は、空データではなく明確なエラーになります。 isError: trueHasData API error: 400 Bad Request、そして requestMetadata.statuserror に設定された結果が返ります。配列の長さではなく、このフラグで判定してください。

空の posts は正規のデータです。 ほとんどのリスティングに投稿はないため、呼び出しは statusok で空配列を返して成功します。その場所に投稿がなかったというだけです。

データを伴う結果には、サポートで引用する価値のある requestMetadata.id に加えて、その呼び出しの保存済み成果物への html リンクと json リンクも含まれます。

料金、無料枠、制限

検索・場所の詳細・レビュー・投稿者レビュー・写真は、成功した呼び出しにつき 5 クレジット です。投稿は 10 クレジット です。レスポンスのサイズによって料金は変わりません。レビュー1ページ分も、1件だけのページも同じ料金です。

無料トライアルは、カード不要で30日間 1,000 クレジット です。5 クレジット換算で 200 回の呼び出しに相当します。その後も、アクティブなアカウントは残高が 100 を下回るたびに毎日 100 クレジットが補充されるため、低頻度のエージェントは無料枠を無期限に使い続けられます。

有料プランは 月額49ドル からで、200,000 クレジット(5 クレジット呼び出しなら 40,000 回分)です。クレジット単価は利用量が増えるほど下がり、最新の価格は料金ページに掲載されています。

プランは同時実行数も決めます。無料トライアルは同時に1件、Startup は15、Business は30、Growth は50、大量利用向け上位プランは200〜1,500です。スロットルはこの同時実行数だけです。1分あたりのリクエスト数に別途上限はなく、無料トライアルも他の場面での速度制限や調整はありません。無人で動かすものでは、あふれた場合に備えた防御的な処理をしてください。複数の場所にまたがって並列に検索するエージェントは、あなたが気づく前にこの上限に到達するためです。

ページ送りはその都度1回の呼び出しがかかります。レビューは1ページ約10件なので、100件なら呼び出し約10回・50クレジットです。写真は1ページにつき約20件です。無料枠は、その負荷を実感するまでにかなり持ちます。

ツールの選定

?apis=google_maps は、この6つのツールだけを公開します。このパラメータはリストを受け付け、?apis=google_maps,google_serp のようにすると、マップツールに加えて Google 検索も使えます。パラメータを省くと HasData が公開する全ツール(現在は57)が有効になります。

ツール数が絞られたリストが通常は良い既定値です。6つのツールから選ぶモデルは、57個から選ぶモデルより正確に選べます。また、ツールの説明文自体も毎ターンコンテキストを消費します。

他との比較

他のほとんどすべての Google Maps MCP サーバーは、公式の Google Maps Platform をラップしたものです。ここが本来比較すべき点です。

それらのサーバーは、Places・Routes・Geocoding API をご自身の Google Cloud 認証情報で呼び出します。利用するには Google Cloud プロジェクトの作成、カードによる課金設定、各 API の有効化、API キーとクオータの管理が必要です。ルーティング、ジオコーディング、住所検証(このサーバーにはない)が必要な場合は、そちらの組み合わせが適切です。

このサーバーは Google マップが訪問者に表示している内容を読み取り、解析結果を返します。Google Cloud プロジェクトも課金設定も、API ごとのクォータ管理も不要です。さらに、Places API は提供しないデータにもたどり着けます。少数の固定サンプルではなくレビューの全フィード、レビュー1人の全履歴、写真フィード、そして事業者の投稿です。

公式 Google Maps Platform ラッパー

このサーバー

プロダクトページ

検索レビュー写真、および投稿

サーバードキュメント

MCP サーバーのドキュメント

1つのサーバーで全57ツール

HasData/hasdata-mcp

クライアントウォークスルー

MCP クライアントとインテグレーション

パースするその他のサーフェス

53のスクレイパーAPI

プランとクレジット費用

プランとクレジット費用

キーと使用量

HasData ダッシュボード

開発

このリポジトリは、リモートサーバーの設定とドキュメントです。ビルドステップはなく、コンテナ化するものもありません。

コントラクトテストが含まれています。READMEは、特定のパラメータを持つ6つのツールを約束しています。上流のツールリストは、このリポジトリへのコミットなしに変更される可能性があり、その場合、このファイルは黙って間違った情報を伝えることになります。このテストはその約束を検証し、CIで毎週およびすべてのプッシュ時に実行されます。

HASDATA_API_KEY=your_key_here npm test

PowerShell の場合:

$env:HASDATA_API_KEY = "your_key_here"; npm test

最後のチェックは実際の呼び出しを行い、5クレジットを消費します。これは、正しい理由で失敗し得るカナリアの代償です。ツールの一覧取得は、空でないキーであれば成功します。また、ツールの一覧取得のみを行うテストは、失効したキーでもグリーンを維持します。

コントリビューション

ツールのテーブルとレスポンスサンプルへの修正が、最も有用なコントリビューションです。それらはドリフトしやすい部分だからです。実行した呼び出しと取得したレスポンスを含めてください。フォークからのプルリクエストでは、キーなしでテストスイートが実行され、ライブチェックは赤になる代わりにスキップされます。

ライセンス

MIT. LICENSE を参照してください。

Related MCP Servers

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.

  • Hosted MCP: 1404 structured web-data tools for search, maps, commerce, social, gaming & finance.

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

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