Skip to main content
Glama
HasData

Google Maps MCP Server

Google Maps MCP Server

Un servidor alojado del Model Context Protocol (MCP) que ofrece a Claude, Cursor, Windsurf y cualquier otro cliente MCP seis herramientas de solo lectura de Google Maps. Busca lugares, lee un lugar al completo, obtén sus reseñas, fotos y publicaciones, y recorre el historial de un único revisor, todo como JSON estructurado, sin proyecto de Google Cloud y sin facturación que activar.

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

Glama score tool contract MCP Tools npm PyPI License

Contenido

Related MCP server: MCP Google Maps

Qué necesitas

Un cliente MCP que admita HTTP streamable con cabeceras personalizadas. Una clave de API de HasData desde el panel de control, que se crea gratis y sin tarjeta, y la prueba cubre unas 200 llamadas a la tarifa de 5 créditos. Nada más. Es un servidor remoto, así que el camino más sencillo es una URL y una cabecera, sin contenedor que ejecutar y sin proyecto de Google Cloud ni clave de API en ningún punto del flujo. Un cliente solo stdio puede usar el lanzador @hasdata/google-maps-mcp (npm) o hasdata-google-maps-mcp (PyPI) en su lugar.

Inicio rápido

URL

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

Transporte

HTTP, streamable

Cabecera de autenticación

x-api-key: HASDATA_API_KEY

La URL del servidor es la misma para todos los clientes. Lo probamos de primera mano con Claude Code y Claude Desktop. El resto de bloques siguen el formato documentado de cada cliente para un servidor remoto.

Los clientes con soporte OAuth pueden añadir la misma URL como conector e iniciar sesión sin poner una clave en un archivo de configuración.

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 solo carga servidores locales (stdio) desde su archivo de configuración, así que accede a un servidor remoto a través de un lanzador stdio. El paquete @hasdata/google-maps-mcp es ese lanzador, y lee la clave desde el entorno.

claude_desktop_config.json:

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

¿Python en lugar de Node? Cambia el lanzador por el paquete de PyPI, que uvx ejecuta sin instalación manual:

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

Un cliente con soporte OAuth puede, en su lugar, añadir la URL como conector personalizado y omitir el lanzador.

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

Ejemplos de prompts

Cada uno de estos es una llamada a una herramienta, salvo que el recuento indique lo contrario.

Busca en Google Maps cafeterías cerca del centro de Seattle y dame las diez mejores con su valoración, número de reseñas y sitio web.

Una llamada, 5 créditos. La búsqueda devuelve los lugares con placeId y dataId ya adjuntos, y las consultas posteriores no necesitan ningún paso de búsqueda adicional.

Obtén los detalles completos de ChIJAb0KE0RrkFQRuI4X0By5Mcw: horario, opciones de servicio, nivel de precio y el enlace al menú.

Una llamada, 5 créditos.

Lee las últimas reseñas de ese lugar, ordenadas de más reciente a más antigua, y dime qué temas aparecen más.

Una llamada, 5 créditos. La respuesta incluye las agrupaciones de temas propias de Google, cada una con un recuento de menciones, y la clasificación está en los datos.

Toma al autor de la reseña principal y enumera todos los demás lugares que ha reseñado, con la valoración que dejó.

Una llamada, 5 créditos. Una reseña incluye el contributorId de su autor, que es exactamente lo que toma la herramienta de contribuidores.

Obtén el feed de fotos de ese lugar y las publicaciones recientes del negocio.

Dos llamadas. Las fotos cuestan 5 créditos; las publicaciones, 10.

Dos cosas abaratan estas cadenas. La búsqueda devuelve placeId y dataId en cada resultado, y las llamadas de detalle, reseñas, fotos y publicaciones no necesitan un paso de resolución aparte. Y una reseña incluye el contributorId del autor, lo que convierte «quién dejó esta reseña» en un salto de una sola llamada a todo el historial de esa persona.

Herramientas

Seis herramientas, todas de solo lectura. Las muestras siguientes están recortadas de llamadas reales, y las cifras cambian a medida que los lugares acumulan reseñas. Léelas como esquemas. Cada nombre de herramienta enlaza a su referencia de endpoint.

Las muestras son el payload, no la respuesta completa. El resultado de tools/call contiene un bloque de texto, y ese texto es en sí mismo JSON con url, status, text y json, con los datos extraídos bajo json. En una respuesta JSON-RPC cruda, la ruta es result.content[0].text, parseado, y luego .json. Un cliente de chat lo desempaqueta por ti; el código que habla directamente con el endpoint no.

Cuatro de las herramientas aceptan un lugar mediante placeId o dataId. La búsqueda devuelve ambos en cada resultado. El flujo habitual es una búsqueda seguida de llamadas de detalle, reseñas, fotos o publicaciones que reutilizan el id que hayas conservado.

Buscar en Google Maps

hasdata_google_maps_search_performMapSearch

Lugares para una consulta, ordenados como los ordena Google Maps.

Parámetro

Tipo

Requerido

Notas

q

string

sí

Consulta de texto libre, por ejemplo coffee o plumber

ll

string

Centro del mapa y zoom como @lat,lng,zoomz, por ejemplo @47.6062,-122.3321,14z. Así es como anclas la búsqueda a un lugar

gl / hl

string

Códigos de país e idioma de dos letras

domain

string

Dominio de Google para la consulta, por ejemplo google.com

start

number

Desplazamiento de resultados para paginar, en pasos de 20. Requiere que ll también esté configurado

Cada resultado incluye position, title, placeId, dataId, address, gpsCoordinates, rating, reviews, type, types, price, website, thumbnail, openState, workingHours, serviceOptions y, cuando Google muestra uno, un enlace menu.

La ubicación se indica en ll, no en la consulta. Pon ahí el centro del mapa y el zoom, porque «coffee» por sí solo devuelve donde sea que Google decida que estás. El dígito del zoom amplía o reduce el área de la que se extraen los resultados.

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

Obtener detalles del lugar

hasdata_google_maps_place_getPlaceDetails

Un lugar completo mediante placeId.

Parámetro

Tipo

Requerido

Notas

placeId

string

sí

El placeId de un resultado de búsqueda

hl

string

Código de idioma

domain

string

Dominio de Google

Devuelve un único objeto placeResults con los mismos campos que un resultado de búsqueda, más un array images. Es la forma de obtener el registro completo de un lugar sin ejecutar una búsqueda que no necesitas.

Obtener reseñas de un lugar

hasdata_google_maps_reviews_getMapReviews

El feed de reseñas de un lugar, página a página.

Parámetro

Tipo

Requerido

Notas

placeId

string

El lugar. Debe estar presente placeId o dataId

dataId

string

El lugar mediante dataId en su lugar

sortBy

string

mostRelevant por defecto, más newestFirst, ratingHigh y ratingLow

topicId

string

Filtrar por un tema, usando un id del array topics

hl

string

Código de idioma

nextPageToken

string

El pagination.nextPageToken de la respuesta anterior

Devuelve placeInfo, un array topics, un array reviews y pagination. Cada reseña incluye reviewId, rating, snippet, date, isoDate, link, images, un objeto user y, cuando el propietario respondió, una response.

topics es la agrupación propia de Google de lo que mencionan las reseñas, cada uno con una keyword y un recuento de mentions; los temas vienen ya contados, en lugar de necesitar que leas cada reseña. Vuelve a pasar el id de un tema como topicId para leer solo las reseñas que lo mencionan.

El user de cada reseña incluye un contributorId. Esa es la entrada que toma la herramienta de contribuidores, así que «quién escribió esto» está a una llamada de «todo lo que escribieron».

{
  "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": "…" }
}

Obtener las reseñas

Devuelve un objeto contributor con name, level, points y un desglose de contributions, y un array reviews donde cada entrada lleva su propio placeInfo, de modo que ves a qué lugar se refiere cada reseña sin una segunda consulta. Esta es la herramienta que hay detrás del trabajo de credibilidad de revisores y de redes de reseñas que el feed de reseñas por sí solo no puede hacer. Lee el historial público de reseñas de una persona, así que usa los resultados dentro de los términos de Google y la ley que te sea aplicable.

Obtener fotos del lugar

hasdata_google_maps_photos_getMapPhotos

El feed de fotos de un lugar.

Parámetro

Tipo

Obligatorio

Notas

placeId

string

El lugar. Debe estar presente placeId o dataId

dataId

string

El lugar como dataId en su lugar

categoryId

string

Filtrar a una categoría usando un id del array categories

hl

string

Código de idioma

nextPageToken

string

Token de la respuesta anterior

Devuelve un array categories (All, Latest, Videos, Menu y otros específicos del lugar), un array photos donde cada entrada tiene URLs image y thumbnail, y pagination.

Obtener publicaciones del lugar

hasdata_google_maps_posts_getMapPosts

Las publicaciones y actualizaciones propias de la empresa en su ficha de Google.

Parámetro

Tipo

Obligatorio

Notas

placeId

string

El lugar. Debe estar presente placeId o dataId

dataId

string

El lugar como dataId en su lugar

hl

string

Código de idioma

nextPageToken

string

Token de la respuesta anterior

Devuelve un array posts.

La mayoría de los lugares no publican nada, así que un array posts vacío es el caso más común. Comprueba la longitud antes de asumir que hay una publicación.

Errores y rutas de fallo

Tu cliente casi nunca ve un código de error HTTP en una llamada a una herramienta. La capa MCP responde 200 y coloca el fallo dentro del resultado, con isError establecido en true y el motivo como texto. El agente lee un mensaje donde podrías esperar una línea de estado.

Una clave incorrecta aparece como salida de la herramienta, no como una conexión fallida. El listado de herramientas acepta cualquier clave no vacía, y el cliente completa su handshake y muestra verde. La primera llamada a una herramienta devuelve entonces isError: true y el texto HasData API error: 401 Unauthorized. Vigila esa cadena, porque nada anterior en el flujo informa del problema.

Un argumento que incumple el esquema se rechaza antes de convertirse en una petición. Una búsqueda sin q devuelve isError: true y el texto MCP error -32602: Input validation error, indicando el campo. No se obtiene nada y no se cobra nada.

Una llamada de reseña, foto o publicación necesita un lugar. Esas tres aceptan placeId o dataId, y si no se envía ninguno devuelve 422 mencionando ambos campos, porque el requisito es condicional y el esquema no puede expresarlo como una simple lista de obligatorios. Pasa uno.

Un id de lugar que no se resuelve es un error limpio, no datos vacíos. Devuelve isError: true con HasData API error: 400 Bad Request y requestMetadata.status establecido en error. Comprueba el indicador en lugar de la longitud del array.

posts vacío son datos reales. La mayoría de las fichas no tienen publicaciones, así que la llamada se completa con status ok y un array vacío. El lugar simplemente no tiene nada publicado.

Los resultados que contienen datos también incluyen un requestMetadata.id que merece la pena citar en soporte, además de enlaces html y json al artefacto almacenado de esa llamada exacta.

Precios, plan gratuito y límites

Las búsquedas, los detalles de lugar, las reseñas, las reseñas de contribuidores y las fotos cuestan 5 créditos por llamada correcta. Las publicaciones cuestan 10. El tamaño de la respuesta no cambia el precio. Una página completa de reseñas cuesta lo mismo que una página con una sola.

La prueba gratuita es de 1,000 créditos durante 30 días sin tarjeta, lo que equivale a 200 llamadas a la tarifa de 5 créditos. Después, una cuenta activa sigue recibiendo 100 créditos de recarga cada día siempre que su saldo baje de 100, de modo que un agente de bajo volumen funciona con el plan gratuito indefinidamente.

Los planes de pago empiezan en $49 al mes por 200,000 créditos, lo que equivale a 40,000 llamadas de cinco créditos. El precio por crédito baja con el volumen, y los números actuales están en la página de precios.

Tu plan también establece la concurrencia. La prueba gratuita permite 1 petición a la vez, Startup 15, Business 30, Growth 50, y los planes de alto volumen van de 200 a 1,500. La concurrencia es el único límite. No hay un tope separado de peticiones por minuto, y la prueba no se ralentiza ni se recorta de ninguna otra forma. Trata el caso de desbordamiento de forma defensiva en cualquier proceso desatendido, porque un agente que se reparte entre lugares alcanzará el techo antes que tú.

Cada paginación cuesta una llamada. Las reseñas vienen de unas diez por página, así que cien reseñas son aproximadamente diez llamadas y 50 créditos, mientras que las fotos vienen de veinte por página. La prueba da mucho de sí antes de que notes el gasto.

Selección de herramientas

?apis=google_maps expone exactamente estas seis herramientas. El parámetro acepta una lista, y ?apis=google_maps,google_serp añade la búsqueda de Google junto a las herramientas de mapas. Si eliminas el parámetro, obtienes todo lo que HasData expone, que actualmente son 57 herramientas.

Una lista reducida suele ser la mejor opción por defecto. Un modelo que elige entre seis herramientas acierta más a menudo que uno que elige entre cincuenta y siete, y las propias descripciones de las herramientas consumen contexto en cada turno.

Cómo se compara

Casi todos los demás servidores MCP de Google Maps envuelven la plataforma oficial Google Maps Platform, y esa es la decisión real que hay que sopesar.

Esos servidores llaman a las API de Places, Routes y Geocoding con tus propias credenciales de Google Cloud. Para ejecutar uno, creas un proyecto de Google Cloud, activas la facturación con una tarjeta, habilitas cada API y gestionas una clave y sus cuotas. Esa es la herramienta adecuada cuando quieres cálculo de rutas, geocodificación y validación de direcciones, que este servidor no hace.

Este servidor lee lo que Google Maps muestra a un visitante y lo devuelve parseado. No hay proyecto de Google Cloud, ni facturación que activar, ni cuota por API que gestionar. También accede a datos que la API de Places no entrega: el feed completo de reseñas en lugar de una pequeña muestra fija, todo el historial de un solo revisor, el feed de fotos y las publicaciones de la empresa.

Wrapper de la plataforma oficial

Este servidor

Qué configuras

Un proyecto de Google Cloud, facturación, claves y cuotas por API

Una clave de API, una sola vez

Cálculo de rutas, geocodificación, validación de direcciones

Sí

No se ofrece

Reseñas

Una pequeña muestra fija por lugar

El feed paginado, con grupos de temas

El historial de un revisor

No disponible

Sí, por contributorId

Fotos y publicaciones

Limitado

Feed de fotos y publicaciones de la empresa

Salida

JSON según el esquema de la Plataforma

JSON parseado de lo que ve un visitante

Coste

Precio de Google por llamada en tu factura

5 créditos por llamada, 10 por publicaciones

La decisión se reduce a dos filas. Si necesitas indicaciones o convertir una dirección en coordenadas, este servidor no puede ayudarte y la Plataforma sí. Si necesitas las reseñas que hay detrás de las primeras, o saber quién es un revisor en todos los lugares que ha valorado, la Plataforma no puede ayudarte y esto sí.

Lo que este servidor no hace. Ni cálculo de rutas, ni geocodificación, ni validación de direcciones, ni matriz de distancias, ni nada que escriba. Lee el mapa.

Preguntas frecuentes

¿Qué es un servidor MCP de Google Maps?

Un servidor que expone datos de Google Maps como herramientas que un cliente de IA puede llamar. El cliente envía una llamada a una herramienta mediante el Model Context Protocol, el servidor obtiene los datos y devuelve JSON estructurado, y el modelo trabaja con el resultado sin ver nunca una página de HTML. Este expone seis herramientas de solo lectura y se ejecuta de forma remota. El cliente se conecta a una URL y no inicia ningún proceso local.

¿Existe un servidor MCP oficial de Google Maps?

Google no publica uno de propósito general. Está Google Maps Platform, un conjunto de API de pago a las que llamas con tu propio proyecto de Cloud, y varios servidores MCP de la comunidad la envuelven. Este servidor es una alternativa alojada que no necesita proyecto de Cloud.

¿Necesito un proyecto de Google Cloud o una clave de API de Maps?

No. La única credencial es tu clave de HasData. No hay ningún proyecto de Google Cloud que crear, ni facturación que activar, ni cuota por API que gestionar.

¿Cuál es la diferencia entre placeId y dataId?

Son dos ids que Google usa para el mismo lugar. La búsqueda devuelve ambos en cada resultado, y las herramientas de detalle, reseñas, fotos y publicaciones aceptan cualquiera de los dos. Guarda el que prefieras del resultado de búsqueda y reutilízalo.

¿Cómo obtengo todas las reseñas, no solo la primera página?

Lee pagination.nextPageToken de cada respuesta y pásalo de nuevo como nextPageToken hasta que deje de venir. Cada página es una llamada.

¿Necesito alojar o ejecutar algo?

No. Es un servidor MCP remoto sobre HTTP streamable. Nada que instalar, sin entorno de Python, sin proceso que reiniciar.

¿Los datos son en vivo o en caché?

En vivo. Cada llamada obtiene los datos en el momento de la petición y lleva su propio requestMetadata.id. Dos llamadas idénticas son dos obtenciones separadas y no una reproducción de una copia almacenada.

¿Puedo usar un servidor para varias superficies de Google?

Sí. El parámetro apis acepta una lista, y ?apis=google_maps,google_serp le da a tu agente las herramientas de mapas y además la búsqueda de Google a la vez.

¿Caduca la clave de API?

No. La clave no caduca. Rota la clave en el panel siempre que lo necesites.

¿Está afiliado a Google?

No. HasData es un servicio independiente y no está afiliado a Google, ni respaldado ni patrocinado por Google. Google y Google Maps son marcas comerciales de su respectivo propietario. Las herramientas trabajan únicamente con datos disponibles públicamente, y tú eres responsable de usar los resultados de acuerdo con los términos de Google y la ley que te sea aplicable.

Enlaces de HasData

Páginas de producto

Search, Reviews, Photos y Posts

Documentación del servidor

Documentación del servidor MCP

Las 57 herramientas en un solo servidor

HasData/hasdata-mcp

Guías para clientes

Clientes e integraciones MCP

Las otras superficies que analizamos

53 APIs de scraping más

Planes y costes de crédito

Planes y costes de crédito

Claves y uso

Panel de HasData

Lanzador de Node en npm

@hasdata/google-maps-mcp

Lanzador de Python en PyPI

hasdata-google-maps-mcp

Desarrollo

Este repositorio es la configuración y documentación de un servidor remoto. No hay ningún paso de compilación ni nada que contenerizar.

No obstante, incluye una prueba de contrato. El README promete seis herramientas con parámetros específicos, y la lista de herramientas upstream puede cambiar sin un commit aquí, lo que haría que este archivo te mintiera en silencio. La prueba verifica esa promesa y se ejecuta semanalmente en CI, así como en cada push.

HASDATA_API_KEY=your_key_here npm test

En PowerShell:

$env:HASDATA_API_KEY = "your_key_here"; npm test

La última verificación realiza una llamada real y cuesta 5 créditos, que es el precio de un canario que puede fallar por la razón correcta. Listar herramientas funciona con cualquier clave no vacía, y una prueba que solo lista herramientas se mantiene en verde con una clave revocada.

Contribuciones

Las correcciones de las tablas de herramientas y de los ejemplos de respuestas son la contribución más útil, porque esas son las partes que se desactualizan. Incluye la llamada que hiciste y la respuesta que obtuviste. Las solicitudes de extracción de los forks ejecutan el conjunto de pruebas sin clave, y las comprobaciones en vivo se omiten en lugar de ponerse en rojo.

Licencia

MIT. Ver LICENSE.

Available Tools

6 tools
hasdata_google_maps_contributor_reviews_getMapReviewsgoogle_maps_contributor_reviews: GET /AInspect

Get Map Contributor Reviews

Lists all Google Maps reviews authored by a specific Local Guide / contributor by contributorId, with language/country targeting and nextPageToken pagination. Returns per-review rating, text, date, place name, place address, placeId, photos, and owner responses. Use for reviewer reputation checks, detecting fake/bot review patterns, local-guide activity analysis, and building review-author profiles for trust scoring.

ParametersJSON Schema
NameRequiredDescriptionDefault
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
numNoNumber of results per page, ranging from 10 to 200.
contributorIdYesGoogle Maps Contributor ID.
nextPageTokenNoDefines the next page token. It is used for retrieving the next page results.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the return fields and pagination but does not mention rate limits, errors, or authentication. It implies read-only via the GET method in the title but not explicitly in the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear verb, resource, and use-case sentence. It avoids fluff and is well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description lists the return fields (rating, text, date, place name, place address, placeId, photos, owner responses) and mentions pagination. It does not cover error handling or limitations, but for a simple GET endpoint it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All five parameters are described in the schema, and the description adds extra details such as the valid range for 'num' (10-200) and the purpose of 'nextPageToken'. This goes beyond simply restating the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: listing Google Maps reviews authored by a specific contributor. It uses a specific verb ('Lists') and resource ('reviews authored by a specific Local Guide / contributor'), distinguishing it from the sibling tool for place reviews (hasdata_google_maps_reviews_getMapReviews).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases ('Use for reviewer reputation checks, detecting fake/bot review patterns, local-guide activity analysis, and building review-author profiles for trust scoring'). It does not explicitly compare with sibling tools, but the contributor focus makes the intended scenario clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_google_maps_photos_getMapPhotosgoogle_maps_photos: GET /AInspect

Get Place Photos

Fetches the photo gallery of a Google Maps place by dataId or placeId, paginated with nextPageToken and filterable by categoryId (all, latest, menu, by owner, videos, street view). Returns each photo with image URL, thumbnail, upload date, uploader, and photoId. Use for restaurant-menu extraction, venue/ambience visual audits, building rich place detail pages, and sourcing up-to-date imagery for POI listings.

ParametersJSON Schema
NameRequiredDescriptionDefault
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
dataIdNoGoogle Maps data ID. Either dataId or placeId should be set.
placeIdNoUnique reference to a place on Google Maps. Either dataId or placeId should be set.
categoryIdNoFilters photos by category.
nextPageTokenNoToken for fetching the next page of photos.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the disclosure burden. It discloses pagination via nextPageToken, filtering by categoryId, and the per-photo return fields (image URL, thumbnail, upload date, uploader, photoId). It does not cover auth, rate limits, or error behavior, but the read-only fetch semantics are clear from 'Fetches.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with the core fetch behavior first and use cases last. The opening heading duplicates the tool title slightly, but the remaining sentences are information-dense and each earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description compensates by listing return fields and pagination behavior. It covers the main parameters (dataId/placeId, categoryId, nextPageToken) and provides use cases; only the optional hl parameter and required-parameter rules are left to the schema, which documents them adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning by enumerating categoryId values ('all, latest, menu, by owner, videos, street view'), clarifying the dataId/placeId alternative, and tying nextPageToken to pagination. This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Fetches the photo gallery of a Google Maps place.' It clearly distinguishes this tool from sibling Google Maps tools such as reviews, posts, and place details by centering on photos. The scope (by dataId or placeId) is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete use cases: 'restaurant-menu extraction, venue/ambience visual audits, building rich place detail pages, and sourcing up-to-date imagery for POI listings.' This tells an agent when the tool is valuable, but it does not explicitly name alternatives or state when not to use it, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_google_maps_place_getPlaceDetailsgoogle_maps_place: GET /AInspect

Get Place Details

Fetches full Google Maps place data by placeId with optional domain/language localization. Returns name, address, coordinates, phone, website, categories, hours, rating, review count, price level, photos, popular times, attributes/amenities, plus_code, and map URL. Use for local SEO audits, POI enrichment, lead generation, competitor mapping, and building location-aware agents.

ParametersJSON Schema
NameRequiredDescriptionDefault
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
domainNoGoogle domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`.
placeIdYesA unique identifier for the place. This ID can be obtained from Google Maps search results.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the transparency burden. It clearly states that the operation fetches (read-only) and enumerates the returned data fields, while also noting optional domain/language localization. It does not mention rate limits, error behavior, or response format, but for a simple GET-by-ID endpoint the core behavior is adequately disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient and front-loaded: it states the action first, then the returned payload, then the use cases. The field list is long but earns its place because there is no output schema. The redundant heading 'Get Place Details' is a minor blemish.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three parameters, no output schema, and no annotations, the description supplies the essential return-value list and use cases, so an agent can judge when to call it and what to expect. It could be more complete by pointing to performMapSearch as the way to obtain a placeId or by noting response formatting, but these are not blocking gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters with 100% coverage, so the baseline is 3. The description adds only a small amount of context by saying the localization parameters are optional and by framing placeId as the lookup key; it does not provide additional parameter-level detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and resource: it 'Fetches full Google Maps place data by placeId', immediately distinguishing this details-by-ID tool from sibling tools like performMapSearch, getMapReviews, getMapPhotos, and getMapPosts. The explicit field list (name, address, coordinates, phone, categories, hours, etc.) reinforces that this is the comprehensive place-details endpoint, not a focused sub-resource tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete application context—'local SEO audits, POI enrichment, lead generation, competitor mapping, and building location-aware agents'—which tells an agent when this enrichment tool is appropriate. It does not explicitly name sibling tools or state when not to use it, so it falls short of full 5-level guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_google_maps_posts_getMapPostsgoogle_maps_posts: GET /AInspect

Get Map Posts

Paginated fetch of Google Maps Posts (timeline-style updates such as offers, events, announcements, and notices) for a place by dataId or placeId, with language targeting and nextPageToken pagination. Returns per-post title, description, image, posted_at, link, and source/business name. Use for small-business intelligence, local-marketing monitoring, competitor activity tracking, and surfacing current promotions and events from local merchants.

ParametersJSON Schema
NameRequiredDescriptionDefault
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
dataIdNoGoogle Maps data ID.
placeIdNoUnique reference to a place on a Google Map. Either dataId or placeId should be set.
nextPageTokenNoDefines the next page token. It is used for retrieving the next page results.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the operation is a paginated fetch and enumerates the returned data. However, with no annotations provided, it does not mention authentication requirements, rate limits, or potential side effects, so it does not fully carry the behavioral transparency burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. It covers what the tool does, what it returns, and relevant use cases in a compact two-paragraph format without unnecessary filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is fairly complete for a read-only fetch tool: it names the resource, the identifier options, the pagination mechanism, the return fields, and practical use cases. It could be slightly stronger by explicitly addressing parameter precedence or edge cases, but it is adequate for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all four parameters with descriptions, so the baseline is 3. The tool description adds minor context by mentioning 'by dataId or placeId' and 'nextPageToken pagination,' but it does not significantly enhance what the schema already conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation: fetch Google Maps Posts for a place by dataId or placeId. It also specifies the resource type and outlines returned fields, making it easily distinguishable from sibling tools like reviews or photos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear use cases such as small-business intelligence, local-marketing monitoring, and competitor activity tracking. It does not explicitly mention when not to use it or name alternative sibling tools, but the stated use cases give solid contextual guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_google_maps_reviews_getMapReviewsgoogle_maps_reviews: GET /AInspect

Get Map Reviews

Paginated fetch of Google Maps reviews for a place by dataId or placeId, with sort (mostRelevant, newestFirst, ratingHigh, ratingLow), topicId filter, and language. Returns per-review author name and profile link, star rating, text, published/relative date, likes count, owner response, attached photos, and local-guide flag. Use for reputation management, sentiment and topic mining, competitor review benchmarking, and feeding review data into summarization or trust-score LLMs.

ParametersJSON Schema
NameRequiredDescriptionDefault
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
dataIdNoGoogle Maps data ID.
sortByNoParameter used for sorting and refining results.
placeIdNoUnique reference to a place on a Google Map. Either dataId or placeId should be set.
topicIdNoDefines the ID of the topic you want to use for filtering reviews.
nextPageTokenNoDefines the next page token. It is used for retrieving the next page results.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the transparency burden. It discloses pagination behavior, sort/filter options, mutually exclusive identifiers, and the per-review fields returned. It does not mention rate limits, errors, or read-only guarantees, but the core behavior is adequately described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well structured: a short title, a functional summary, a list of returned fields, and use cases. It is slightly repetitive in listing parameter names that already appear in the schema, but it remains appropriately sized and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides enough context for an agent to select and invoke the tool correctly: purpose, key parameters, pagination token, and expected output fields. It is not exhaustive (no output schema or error scenarios), but it is adequate for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover 100% of parameters, so the baseline is 3. The description adds meaningful context beyond the schema, particularly that either dataId or placeId should be set and that pagination is handled via nextPageToken, which improves parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches Google Maps reviews, with resource, operation, and key refinements (dataId/placeId, sorting, topic, language). It is clearly distinguished from sibling tools for photos, posts, place details, and search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit use cases such as reputation management, sentiment analysis, competitor review benchmarking, and feeding summarization/trust-score LLMs. It does not explicitly say when not to use it versus a sibling, but the resource-specific language makes the context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_google_maps_search_performMapSearchgoogle_maps_search: GET /AInspect

Get Google Maps Search Results

Runs a Google Maps search by keyword plus optional GPS coordinates (@lat,lng,zoomz via ll) with language, country, domain, and offset-based pagination (start). Returns the local pack list with placeId, name, address, coordinates, rating, review count, price level, categories, phone, website, hours, and thumbnail. Use for local lead generation, competitor density mapping, market expansion research, hyperlocal directories, and feeding placeIds into the Maps Place, Reviews, or Photos endpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch query term or phrase.
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
llNoGPS coordinates of the location where the search query is to be performed. This parameter is required if the 'start' parameter is present. The format for the `ll` parameter is `@` followed by latitude, longitude, and zoom level, separated by commas. The latitude and longitude should be in decimal degrees, and the zoom level is an integer. Example: `@40.7455096,-74.0083012,14z`.
startNoSpecifies the result offset for pagination purposes. The offset dictates the number of rows to skip from the beginning of the results. This is useful for accessing subsequent pages of search results. For example, an offset of 0 (the default value) returns the first page of results, 20 returns the second page, 40 returns the third page, and so on. This parameter is especially relevant when used in conjunction with the 'll' parameter for location-based searches.
domainNoGoogle domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains the search behavior, return fields, pagination via start, and the dependency between ll and start. It does not mention rate limits or error handling, but for a read-only search API this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, and structured into three clear sentences: what it does, what it returns, and when to use it. It avoids unnecessary verbosity while covering essential details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description compensates by enumerating the exact fields returned in the local pack list. It also covers pagination behavior, language/country/domain options, and practical use cases, making it complete for an agent to decide invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Every parameter in the schema has a description that adds significant meaning beyond the type. The ll parameter includes a format example and a conditional requirement, start explains pagination with concrete offsets, and gl/hl/domain include value ranges and examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs a Google Maps search and returns the local pack list with specific fields. It distinguishes itself from sibling tools like place details, reviews, and photos by focusing on the search entry point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists concrete use cases (local lead generation, competitor density mapping, market expansion research) and hints at follow-up tools by mentioning feeding placeIds into Maps Place, Reviews, or Photos endpoints. It does not explicitly say 'when not to use', but the use-case list is strong enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedhasdata_google_maps_contributor_reviews_getMapReviews
    • First observedhasdata_google_maps_photos_getMapPhotos
    • First observedhasdata_google_maps_place_getPlaceDetails
    • First observedhasdata_google_maps_posts_getMapPosts
    • First observedhasdata_google_maps_reviews_getMapReviews
    • First observedhasdata_google_maps_search_performMapSearch

TDQS

A4.3/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct data type: search for places, place details, reviews for a place, reviews by a contributor, photos, and posts. There is no ambiguity between them, even though search and place details both return place info — search is for discovery, place details is for a specific known place.

Naming Consistency5/5

All tool names follow a consistent pattern: hasdata_google_maps_<resource>_get<Action> (or performMapSearch for search). The resource is always a clear noun (search, place, reviews, contributor_reviews, photos, posts), and the action verb is consistent (get) or explicit (performMapSearch). This is highly predictable.

Tool Count5/5

Six tools is a well-scoped count for a Google Maps data extraction server. Each tool covers a distinct endpoint needed for local business intelligence, and none are redundant or trivial. This is within the ideal range and feels complete for the stated purpose.

Completeness5/5

The tool set covers the core lifecycle of Google Maps data: search for places, fetch details for a place, retrieve reviews (both for a place and by a contributor), get photos, and get posts/updates. This is a comprehensive read-only surface for building location-aware agents, lead generation, and reputation management, with no obvious gaps.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers