Skip to main content
Glama
HasData

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

Glama score tool contract MCP Tools License

Содержание

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

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" }
    }
  }
}

Ниже 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 базы.

Параметр

Тип

Обязательный

Описание

q

string

да

Произвольный запрос, например coffee или plumber

ll

string

Центр карты и масштаб в формате @lat,lng,zoomz, например @47.6062,-122.3321,14z — так поиск привязывается к месту

gl / hl

string

Двухбуквенные коды страны и языка

domain

string

Домен Google для запроса, например google.com

start

number

Смещение результата для постраничности, шаг 20. Требует также указать ll

Каждый результат содержит 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.

Параметр

Тип

Обязательный

Примечание

placeId

string

да

placeId из результата поиска

hl

string

Код языка

domain

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

Все отзывы одного человека по всем местам, которые он оценил.

Параметр

Тип

Обязательный

Примечание

contributorId

string

true

contributorId из объекта user в отзыве

num

number

Сколько отзывов вернуть

gl / hl

string

Код страны и языка

nextPageToken

string

Токен из предыдущего ответа

Возвращает объект contributor с name, level, points и детализацией contributions, а также массив reviews, где каждый элемент содержит вложенный placeInfo, чтобы было понятно, к какому месту относится отзыв, без отдельного lookup. Это инструмент для проверки авторов и работы с сетью отзывов, чего лента отзывов не даёт. Он читает публичную историю отзывов одного человека, поэтому использовать результаты нужно в рамках правил Google и законодательства.

Фотографии места

hasdata_google_maps_photos_getMapPhotos

Лента фотографий для места.

Параметр

Тип

Обязательный

Примечания

placeId

string

Место. Должен присутствовать либо placeId, либо dataId

dataId

string

Место в виде dataId вместо этого

categoryId

string

Фильтр до одной категории с помощью id из массива categories

hl

string

Код языка

nextPageToken

string

Токен из предыдущего ответа

Возвращает массив categories (All, Latest, Videos, Menu и специфические для места), массив photos, где каждая запись содержит URL image и thumbnail, а также pagination.

Получить публикации места

hasdata_google_maps_posts_getMapPosts

Собственные публикации и обновления компании в её карточке Google.

Параметр

Тип

Обязательный

Примечания

placeId

string

Место. Должен присутствовать либо placeId, либо dataId

dataId

string

Место в виде dataId вместо этого

hl

string

Код языка

nextPageToken

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-ключ, один раз

Маршруты, геокодирование, валидация адресов

Да

Не предлагается

Отзывы

Небольшая фиксированная выбокова для каждого места

Полная лента, пагинация, тематические кластеры

История автора отзыва

Недоступно

Да, по contributorId

Фото и публикации

Ограниченно

Лента фотографий и публикации компании

Вывод

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

Страницы продуктов

Поиск, Отзывы, Фото и Посты

Документация сервера

Документация MCP-сервера

Все 57 инструментов в одном сервере

HasData/hasdata-mcp

Практические руководства для клиентов

MCP-клиенты и интеграции

Другие поверхности, которые мы парсим

Ещё 53 API для парсинга

Тарифы и стоимость кредитов

Тарифы и стоимость кредитов

Ключи и использование

Панель управления HasData

Разработка

Этот репозиторий содержит конфигурацию и документацию для удалённого сервера. Здесь нет этапа сборки и нечего контейнеризировать.

В нём есть контрактный тест. README обещает шесть инструментов с определёнными параметрами, а внешний список инструментов может измениться без коммита в этот репозиторий, из-за чего этот файл молча лгал бы вам. Тест проверяет это обещание и запускается еженедельно в 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