Google Maps MCP Server
Google Maps MCP Server
Размещённый сервер Model Context Protocol (MCP), который даёт Claude, Cursor, Windsurf и любому другому MCP-клиенту шесть инструментов Google Maps только для чтения. Ищите места, читайте полное досье на место, получайте его отзывы, фотографии и публикации, а также просматривайте историю одного автора — всё в виде структурированного JSON, без проекта Google Cloud и без включения биллинга.
https://mcp.hasdata.com/api/mcp?apis=google_maps
Содержание
Related MCP server: MCP Google Maps
Что нужно
MCP-клиент, который поддерживает потоковый HTTP с кастомными заголовками. Ключ API HasData — бесплатно создается дашборд без карты, а пробные 200 вызовов по тарифу 5 кредитов покрыты. Больше ничего не нужно. Так как это удалённый сервер, потребуется только URL и заголовок, без локального контейнера, без проекта Google Cloud и без API-ключей. Клиенту, работающему только через stdio, подойдёт лаунчер @hasdata/google-maps-mcp (npm) или hasdata-google-maps-mcp (PyPI).
Быстрый старт
URL |
|
Транспорт | HTTP, streamable |
Заголовок авторизации |
|
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" }
}
}
}Ниже Python и Node? Замените лаунчер на пакет 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" }
}
}
}Примеры запросов
Каждый из этих примеров — это один вызов инструмента, если не сказано иное.
Найди в Google Maps кофе рядом с центром Сиэтла и покажи десять лучших с оценкой, числом отзывов и сайтом.
Один вызов, 5 кредитов. Поиск возвращает места уже с placeId и dataId, так что следующие запросы не требуют отдельного шага поиска.
Pull the full details for
ChIJAb0KE0RrkFQRuI4X0By5Mcw: hours, service options, price level and the menu link.
Один вызов, 5 кредитов.
Читай последние отзывы об этом месте (сначала новые) и скажи, какие темы встречаются чаще всего.
Один вызов, 5 кредитов. Ответ содержит собственные тематические кластеры Google со счётчиком упоминаний в каждом, а рейтинг уже в данных.
Возьми автора верхнего отзыва и покажи все другие места, где он оставлял отзывы, с проставленной им оценкой.
Один вызов, 5 кредитов. Отзыв содержит contributorId автора — именно его принимает инструмент contributor.
Получи фотографии этого места и последние публикации бизнеса.
Два вызова. Фотографии — 5 кредитов, публикации — 10.
Две вещи делают эти связки дешёвыми. Поиск отдаёт placeId и dataId в каждом результате, а запросы деталей, отзывов, фото и публикаций не требуют отдельного шага resolve. Кроме того, отзыв несёт contributorId автора, и вопрос «кто это написал» становится обычным одним вызовом до всей истории автора.
Инструменты
Шесть инструментов, только для чтения. Примеры ниже сокращены из реальных вызовов, и числа в них меняются по мере роста отзывов. Воспринимайте их как формы, а не как актуальные данные. Название каждого инструмента ведёт к его справочному endpoint.
Примеры — это payload, а не полный ответ. Результат tools/call содержит один текстовый блок, который сам является JSON с url, status, text и json, где под json лежат извлечённые данные. В сыром JSON-RPC ответе путь выглядит как result.content[0].text, после разбора — .json.
Четыре инструмента принимают место по placeId или dataId. Поиск возвращает оба. Обычный сценарий — сначала один поиск, затем запросы деталей, отзывов, фотографий или постов с использованием сохранённого id.
Поиск по Google Maps
hasdata_google_maps_search_performMapSearch
Результаты по запросу, отсортированные так, как их отсортирует Google базы.
Параметр | Тип | Обязательный | Описание |
| string | да | Произвольный запрос, например |
| string | Центр карты и масштаб в формате | |
| string | Двухбуквенные коды страны и языка | |
| string | Домен Google для запроса, например | |
| number | Смещение результата для постраничности, шаг 20. Требует также указать |
Каждый результат содержит position, title, placeId, dataId, address, gpsCoordinates, rating, reviews, type, types, price, website, thumbnail, openState, workingHours serviceOptions и, если 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.
Параметр | Тип | Обязательный | Примечание |
| string | да |
|
| string | Код языка | |
| string | Домен Google |
Возвращает один объект placeResults с теми же полями, что и результат поиска, плюс массив images. Это способ получить полную карточку места, не выполняя не нужный вам поиск.
Отзывы о месте
hasdata_google_maps_reviews_getMapReviews
Лента отзывов точки, постранично.
| Параметр | Тип | Обязат. Примечание |
| :-------------- | :----- | :------- | :----------------------------------------------------------------------- |
| placeId | string | | Место. Either placeId or dataId has to be present |
| dataId | string | | Место через dataId. |
| sortBy | string | | mostRelevant по умолчанию, плюс newestFirst, ratingHigh, ratingLow |
| topicId | string | | Фильтр по теме: id из массива topics |
| hl | string | | Код языка |
| nextPageToken | string | | pagination.nextPageToken из предыдущего ответа |
Возвращает placeInfo, массив topics, массив reviews и pagination. Каждый отзыв содержит reviewId, rating, snippet, date isoDate, link, images, объект user, и если владелец ответил — response.
topics— это собственная кластеризация Google по упоминаемым темам, сkeywordи счётчикомmentionsв каждом. Темы приходят уже посчитанными, так что не надо читать каждый отзыв. Подайтеidтемы какtopicId, чтобы получить только отзывы, где она упоминается.
В каждом отзыве объект
userсодержитcontributorId. Это вход для инструмента contributor, так что от «кто этот автор» до «что он писал» — один вызов.
{
"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
Все отзывы одного человека по всем местам, которые он оценил.
Параметр | Тип | Обязательный | Примечание |
| string | true |
|
| number | Сколько отзывов вернуть | |
| string | Код страны и языка | |
| string | Токен из предыдущего ответа |
Возвращает объект contributor с name, level, points и детализацией contributions, а также массив reviews, где каждый элемент содержит вложенный placeInfo, чтобы было понятно, к какому месту относится отзыв, без отдельного lookup. Это инструмент для проверки авторов и работы с сетью отзывов, чего лента отзывов не даёт. Он читает публичную историю отзывов одного человека, поэтому использовать результаты нужно в рамках правил Google и законодательства.
Фотографии места
hasdata_google_maps_photos_getMapPhotos
Лента фотографий для места.
Параметр | Тип | Обязательный | Примечания |
| string | Место. Должен присутствовать либо | |
| string | Место в виде | |
| string | Фильтр до одной категории с помощью | |
| string | Код языка | |
| string | Токен из предыдущего ответа |
Возвращает массив categories (All, Latest, Videos, Menu и специфические для места), массив photos, где каждая запись содержит URL image и thumbnail, а также pagination.
Получить публикации места
hasdata_google_maps_posts_getMapPosts
Собственные публикации и обновления компании в её карточке Google.
Параметр | Тип | Обязательный | Примечания |
| string | Место. Должен присутствовать либо | |
| string | Место в виде | |
| string | Код языка | |
| string | Токен из предыдущего ответа |
Возвращает массив posts.
Большинство мест ничего не публикует, поэтому пустой массив
posts— обычное дело. Проверьте длину, прежде чем предполагать, что публикация есть.
Ошибки и сценарии сбоев
Ваш клиент почти никогда не получает HTTP-код ошибки от вызова инструмента. Слой MCP отвечает кодом 200 и помещает сбой внутрь результата: isError имеет значение true, а причина указана текстом. Агент получает сообщение там, где вы могли бы ожидать строку состояния.
Неверный ключ проявляется как результат работы инструмента, а не как сбой подключения. Получение списка инструментов принимает любой непустой ключ, клиент завершает рукопожатие и показывает зелёный индикатор. Первый вызов инструмента затем возвращает isError: true и текст HasData API error: 401 Unauthorized. Следите за этой строкой, потому что ничто ранее в процессе не сообщает о проблеме.
Единственная настоящая HTTP-ошибка — отсутствующий ключ. Авторизация выполняется до любого инструмента, и само подключение завершается ошибкой 401.
Аргумент, нарушающий схему, отклоняется до того, как станет запросом. Поиск без q возвращает isError: true и текст MCP error -32602: Input validation error, название поля в нём указано. Ничего не загружается и не списывается.
Вызов отзывов, фото или публикаций требует указания места. Все три принимают placeId или dataId, и если не передать ни одного, возвращается 422 с указанием обоих полей, потому что требование условно и схема не может выразить его обычным списком обязательных полей. Передайте один.
Идентификатор места, который не резолвится, — это чистая ошибка, а не пустые данные. Возвращается isError: true, текст HasData API error: 400 Bad Request, а requestMetadata.status имеет значение error. Проверяйте флаг, а не длину массива.
Пустой posts — это реальные данные. В большинстве карточек нет публикаций, поэтому вызов завершается успешно с status ok и пустым массивом. У места просто нет публикаций.
Результаты, которые несут данные, также несут requestMetadata.id, который полезно указать в обращении в поддержку, и ссылки html и json на сохранённый артефакт конкретного вызова.
Цены, бесплатный тариф и лимиты
Поиск, детали места, отзывы, отзывы авторов и фотографии стоят 5 кредитов за успешный вызов. Публикации — 10. Размер ответа не меняет цену. Полная страница отзывов стоит столько же, сколько страница с одним отзывом.
Бесплатный пробный период — это 1000 кредитов на 30 дней без карты, то есть 200 вызовов по тарифу 5 кредитов. После этого у активного аккаунта ежедневно пополняются 100 кредитов, когда баланс опускается ниже 100, так что агент с небольшим объёмом запросов работает на бесплатном тарифе бессрочно.
Платные тарифы начинаются с $49 в месяц за 200 000 кредитов, что составляет 40 000 вызовов по 5 кредитов. Цена кредита снижается с ростом объёма, актуальные цифры на странице с ценами.
Тариф также определяет число одновременных запросов. Бесплатный пробный период позволяет 1 запрос одновременно, Startup — 15, Business — 30, Growth — 50, а высоконагруженные тарифы — от 200 до 1500. Одновременность — единственное ограничение. Отдельного лимита запросов в минуту нет, и пробный период никак иначе не замедляется и не урезается. Будьте готовы к переполнению в любых автоматических процессах, потому что агент, рассылающий запросы по множеству мест, достигнет этого предела быстрее вас.
Постраничный просмотр стоит один вызов за каждый шаг. Отзывы приходят примерно по десять на страницу, поэтому сто отзывов — это примерно десять вызовов и 50 кредитов, фотографии — по двадцать на страницу. Пробного периода хватит надолго, прежде чем вы почувствуете его предел.
Выбор инструментов
?apis=google_maps открывает ровно эти шесть инструментов. Параметр принимает список, а ?apis=google_maps,google_serp добавляет к картам инструмент поиска Google. Уберите параметр — и вы получите всё, что предлагает HasData, а это на данный момент 57 инструментов.
Обычно лучше по умолчанию. Модель, выбирающая из шести инструментов, выбирает правильно чаще, чем модель, выбирающая из пятидесяти семи, а сами описания инструментов стоют контекста на каждом ходе.
Сравнение с альтернативами
Почти все остальные MCP-серверы Google Maps — обёртки над официальной платформой Google Maps Platform, и именно это нужно взвешивать.
Эти серверы вызывают Places, Routes и Geocoding API с вашими собственными учётными данными Google Cloud. Чтобы работать с таким сервером, нужно создать проект Google Cloud, включить биллинг с картой, активировать каждый API и управлять ключом и его квотами. Это подходящий набор, когда нужны маршруты, геокодирование и валидация адресов, чего этот сервер не делает.
Этот сервер читает то, что Google Maps показывает посетителю, и возвращает это в разобранном виде. Нет проекта Google Cloud, не нужен биллинг и квоты для каждого API. Он также обращается к данным, которых не отдаёт Places API: полной ленте отзывов, а не маленькой фиксированной выборке, истории одного автора во всех его местах, ленте фотографий и публикациям заведения.
Официальная обёртка платформы | Этот сервер | |
Что настраиваете | Проект Google Cloud, биллинг, ключи и квоты для API | Один API-ключ, один раз |
Маршруты, геокодирование, валидация адресов | Да | Не предлагается |
Отзывы | Небольшая фиксированная выбокова для каждого места | Полная лента, пагинация, тематические кластеры |
История автора отзыва | Недоступно | Да, по |
Фото и публикации | Ограниченно | Лента фотографий и публикации компании |
Вывод | JSON по схеме платформы | JSON, извлечённый из того, что видит посетитель |
Стоимость | Цены Google за вызов в вашем счёте | 5 кредитов за вызов, 10 за публикации |
Решение сводится к двум строкам. Если вам нужны маршруты или преобразование адреса в координаты — этот сервер не поможет, а платформа сможет. Если вам нужны отзывы, которые скрываются за первыми несколькими, или информация о том, кто автор отзыва, по всем местам, которые он оценил, платформе это недоступно, а этому серверу — доступно.
Чего этот сервер не делает. Никаких маршрутов, геокодирования, валидации адресов, никакой матрицы расстояний и ничего записывающего. Он читает карту.
Частые вопросы
Что такое MCP-сервер Google Maps?
Сервер, который представляет данные Google Maps как инструменты, которые AI-клиент может вызывать. Клиент отправляет вызов инструмента по соглашению Model Context Protocol, сервер получает данные и возвращает структурированный JSON, а модель работает с результатом и никогда не видит HTML-страницу. Этот сервер предоставляется шесть инструментов только для чтения с доступом. Клиент подключается к URL и не запускает локальный процесс.
Есть ли официальный MCP-сервер Google Maps?
Google не публикует универсальную версию. Есть Google Maps Platform — набор платных API, которые вы вызываете с собственным Cloud-проектом, и несколько комьюнити-обёрток для MCP. Этот сервер — хостинговая альтернатива, которой не нужен проект Cloud.
Нужен ли мне Cloud-проект Google или API-ключ Maps?
Нет. Единственный ключ доступа — это ваш ключ HasData. Не требуется создавать проект Google Cloud, включать биллинг или управлять квотами для каждого API.
В чём разница между placeId и dataId?
Это два идентификатора, которые Google использует для одного и того же места. Поиск возвращает их в каждом результате, а инструменты деталей, отзывов, фото и публикаций принимают любой из них. Возьмите любой из поисковой ребёнки и используйте повторно.
Как получить все отзывы, а не только первую страницу?
Читайте pagination.nextPageToken из каждого ответа и передавайте его обратно как nextPageToken, пока не перестанет приходить. Каждая страница — один вызов.
Нужно ли мне размещать или запускать что-то?
Нет. Это удалённый MCP-сервер, работающий по streamable HTTP. Ничего не нужно устанавливать, не нужна среда Python, не нужно перезапускать процесс.
Данные настоящие, в реальном времени, или кэш?
В реальном времени. Каждый вызов получает данные в момент запроса и содержит собственный requestMetadata.id. Два одинаковых вызова — это два отдельных получания, а не запросы одной сохранённой копии.
Могу ли я использовать один сервер для нескольких поверхностей Google?
Да. Параметр apis принимает список, и ?apis=google_maps,google_serp предоставляет агенту инструменты карт и поиска Google сразу.
Истекает ли срок действия сервера?
Нет. Ключ не истекает. Меняйте его на панели инструлингов, когда потребуется.
Связано ли это с Google?
Нет. HasData — независимый сервис, не аффилированный с Google, не одобренный и не поддерживающийся Google. Google и Google Maps — торговые знаки соответствующих павообладателей. Инструменты работают только с общедоступными данными, и вы несёте ответственность за использование результата в соответствии с условиями Google и действующим законодательством.
Ссылки HasData
Страницы продуктов | |
Документация сервера | |
Все 57 инструментов в одном сервере | |
Практические руководства для клиентов | |
Другие поверхности, которые мы парсим | |
Тарифы и стоимость кредитов | |
Ключи и использование |
Разработка
Этот репозиторий содержит конфигурацию и документацию для удалённого сервера. Здесь нет этапа сборки и нечего контейнеризировать.
В нём есть контрактный тест. README обещает шесть инструментов с определёнными параметрами, а внешний список инструментов может измениться без коммита в этот репозиторий, из-за чего этот файл молча лгал бы вам. Тест проверяет это обещание и запускается еженедельно в CI, а также при каждом пуше.
HASDATA_API_KEY=your_key_here npm testВ PowerShell:
$env:HASDATA_API_KEY = "your_key_here"; npm testПоследняя проверка делает реальный вызов и стоит 5 кредитов — это цена «канареечного» теста, который может упасть по правильной причине. Получение списка инструментов успешно проходит с любым непустым ключом, а тест, который только получает список инструментов, остаётся зелёным даже с отозванным ключом.
Вклад
Наиболее полезен вклад в виде исправлений таблиц инструментов и примеров ответов — именно эти части чаще всего устаревают. Приложите выполненный запрос и полученный ответ. Пул-реквесты из форков запускают набор тестов без ключа, а живые проверки пропускаются, а не падают.
Лицензия
MIT. См. LICENSE.
Maintenance
Related MCP Servers
- AlicenseCqualityDmaintenanceProvides access to Google Maps API functionality including geocoding, place search, direction routing, and distance calculations through a structured MCP interface.415MIT
- AlicenseAqualityDmaintenanceProvides access to Google Maps API functionality including places search, geocoding, directions, distance matrix, elevation data, and static map generation through the MCP interface.8231MIT
- AlicenseNot gradedqualityBmaintenanceProvides MCP tools for Google Maps services including directions, geocoding, distance matrix, and places search.14Apache 2.0
- AlicenseBqualityFmaintenanceProvides comprehensive access to Google Maps Platform APIs through MCP, enabling geocoding, places search, routing, and geospatial operations.151512MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/HasData/google-maps-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server