HasData Google Maps MCP Server

Lugares de Google Maps, reseñas, historial de contribuyentes, fotos y publicaciones como JSON, sin proyecto de Google Cloud.

Documentación

Servidor MCP de Google Maps

Un servidor de Protocolo de Contexto de Modelo (MCP) alojado que brinda a Claude, Cursor, Windsurf y cualquier otro cliente MCP seis herramientas de solo lectura de Google Maps. Busca lugares, lee un lugar completo, obtén sus reseñas, fotos y publicaciones, y recorre el historial de un solo reseñador, 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

Lo que necesitas

Un cliente MCP que hable HTTP transmisible con encabezados personalizados. Una clave de API de HasData desde el panel de control, gratuita de crear sin tarjeta, y la prueba cubre alrededor de 200 llamadas a la tarifa de 5 créditos. Nada más. Este es un servidor remoto, por lo que la ruta más simple es una URL y un encabezado, sin contenedor que ejecutar y sin proyecto de Google Cloud ni clave de API en ningún lugar 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

URLhttps://mcp.hasdata.com/api/mcp?apis=google_maps
TransporteHTTP, transmisible
Encabezado de autenticaciónx-api-key: HASDATA_API_KEY

La URL del servidor es la misma para cada cliente. Lo ejecutamos de forma práctica en Claude Code y Claude Desktop. Los otros bloques siguen el formato documentado de cada cliente para un servidor remoto.

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

Claude Code
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

Claude Desktop carga solo servidores locales (stdio) desde su archivo de configuración, por lo que llega a un servidor remoto a través de un lanzador stdio. El paquete @hasdata/google-maps-mcp es ese lanzador, y lee la clave del 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 agregar la URL como un conector personalizado y omitir el lanzador.

Cursor

.cursor/mcp.json:

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

~/.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" }
    }
  }
}
Cline
{
  "mcpServers": {
    "google-maps": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_maps",
      "type": "streamableHttp",
      "headers": { "x-api-key": "HASDATA_API_KEY" },
      "disabled": false
    }
  }
}
VS Code

.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 CLI

~/.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 indicaciones

Cada una de estas es una llamada a una herramienta, a menos que el recuento indique lo contrario.

Busca en Google Maps café cerca del centro de Seattle y dame los diez mejores con su calificació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 los seguimientos a continuación no necesitan paso de búsqueda.

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

Una llamada, 5 créditos.

Lee las reseñas más recientes de ese lugar, ordenadas de más nuevas a más antiguas, y dime qué temas aparecen con más frecuencia.

Una llamada, 5 créditos. La respuesta incluye los grupos de temas propios de Google con un recuento de menciones cada uno, 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 calificación que dejó.

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

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 cuestan 10.

Dos cosas hacen que estas cadenas sean económicas. La búsqueda devuelve placeId y dataId en cada resultado, y las llamadas de detalle, reseña, foto y publicación no necesitan un paso de resolución separado. Y una reseña lleva el contributorId del autor, lo que convierte "quién dejó esta reseña" en un salto de una llamada al historial completo de esa persona.

Herramientas

Seis herramientas, todas de solo lectura. Las muestras a continuación están recortadas de llamadas reales, y los números en ellas cambian a medida que los lugares ganan reseñas. Léelas como formas. El nombre de cada herramienta enlaza a su referencia de endpoint.

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

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ña, foto o publicación que reutilizan el id que conservaste.

Buscar en Google Maps

hasdata_google_maps_search_performMapSearch

Lugares para una consulta, clasificados como Google Maps los clasifica.

ParámetroTipoRequeridoNotas
qstringConsulta de texto libre, por ejemplo coffee o plumber
llstringCentro del mapa y zoom como @lat,lng,zoomz, por ejemplo @47.6062,-122.3321,14z. Así es como fijas la búsqueda a un lugar
gl / hlstringCódigos de país de dos letras y de idioma
domainstringDominio de Google a consultar, por ejemplo google.com
startnumberDesplazamiento de resultados para paginación, en pasos de 20. Requiere que ll también esté configurado

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

La ubicación vive en ll, no en la consulta. Pon el centro del mapa y el zoom allí, porque "café" solo devuelve donde sea que Google decida que estás. El dígito de 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 por placeId.

ParámetroTipoRequeridoNotas
placeIdstringEl placeId de un resultado de búsqueda
hlstringCódigo de idioma
domainstringDominio de Google

Devuelve un solo objeto placeResults con los mismos campos que lleva 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 del lugar

hasdata_google_maps_reviews_getMapReviews

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

ParámetroTipoRequeridoNotas
placeIdstringEl lugar. Debe estar presente placeId o dataId
dataIdstringEl lugar como dataId en su lugar
sortBystringmostRelevant por defecto, más newestFirst, ratingHigh y ratingLow
topicIdstringFiltrar a un tema, usando un id del array topics
hlstringCódigo de idioma
nextPageTokenstringEl pagination.nextPageToken de la respuesta anterior

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

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

El user de cada reseña lleva un contributorId. Ese es el dato que toma la herramienta de contribuyente, por lo que "quién escribió esto" está a una llamada de distancia 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 reseñas de un contribuyente

hasdata_google_maps_contributor_reviews_getMapReviews

Cada reseña que una persona ha escrito, en todos los lugares que calificó.

ParámetroTipoRequeridoNotas
contributorIdstringEl contributorId del objeto user de una reseña
numnumberCuántas reseñas devolver
gl / hlstringCódigos de país e idioma
nextPageTokenstringToken de la respuesta anterior

Devuelve un objeto contributor con name, level, points y un desglose contributions, y un array reviews donde cada entrada lleva su propio placeInfo, y ves de qué lugar trata cada reseña sin una segunda búsqueda. Esta es la herramienta detrás del trabajo de credibilidad de reseñadores y redes de reseñas que el feed de reseñas 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 aplica.

Obtener fotos del lugar

hasdata_google_maps_photos_getMapPhotos

El feed de fotos de un lugar.

ParámetroTipoRequeridoNotas
placeIdstringEl lugar. Debe estar presente placeId o dataId
dataIdstringEl lugar como dataId en su lugar
categoryIdstringFiltrar a una categoría, usando un id del array categories
hlstringCódigo de idioma
nextPageTokenstringToken de la respuesta anterior

Devuelve un array categories (All, Latest, Videos, Menu y 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 del negocio en su ficha de Google.

ParámetroTipoRequeridoNotas
placeIdstringEl lugar. Debe estar presente placeId o dataId
dataIdstringEl lugar como dataId en su lugar
hlstringCódigo de idioma
nextPageTokenstringToken de la respuesta anterior

Devuelve un array posts.

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

Errores y rutas de fallo

Su cliente casi nunca ve un código de error HTTP de una llamada a 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 herramienta, no como una conexión fallida. Listar herramientas acepta cualquier clave no vacía, y el cliente completa el protocolo de enlace y muestra verde. La primera llamada a herramienta regresa entonces con isError: true y el texto HasData API error: 401 Unauthorized. Presta atención a esa cadena, porque nada antes en el flujo informa del problema.

El único error HTTP real es una clave faltante. La autorización se ejecuta antes de cualquier herramienta, y la conexión misma falla con 401.

Un argumento que rompe el esquema se rechaza antes de convertirse en una solicitud. Una búsqueda sin q regresa con isError: true y el texto MCP error -32602: Input validation error, nombrando 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 enviar ninguna devuelve 422 nombrando ambos campos, porque el requisito es condicional y el esquema no puede expresarlo como una lista obligatoria simple. 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 establecidos en error. Prueba la bandera en lugar de la longitud del arreglo.

Un posts vacío son datos reales. La mayoría de los listados no tienen publicaciones, por lo que la llamada tiene éxito con status ok y un arreglo vacío. El lugar simplemente no tiene nada publicado.

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

Precios, nivel gratuito y límites

Búsqueda, detalles de lugar, reseñas, reseñas de colaboradores y fotos cuestan 5 créditos por llamada exitosa. 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 de eso, una cuenta activa sigue recibiendo 100 créditos recargados cada día cuando su saldo baja de 100, por lo que un agente de bajo volumen funciona en el nivel gratuito indefinidamente.

Los planes de pago comienzan 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 solicitud 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 solicitudes por minuto, y la prueba no se ralentiza ni se recorta de ninguna otra manera. Maneja el caso de desbordamiento de forma defensiva en cualquier proceso desatendido, porque un agente que se expande entre lugares alcanzará el techo antes que tú.

Paginación cuesta una llamada cada vez. Las reseñas vienen aproximadamente diez por página, así que cien reseñas son aproximadamente diez llamadas y 50 créditos, mientras que las fotos vienen veinte por página. La prueba rinde mucho antes de que lo notes.

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. Omite el parámetro y obtienes todo lo que HasData expone, que actualmente son 57 herramientas.

Una lista reducida suele ser el mejor valor predeterminado. Un modelo que elige entre seis herramientas acierta más a menudo que uno que elige entre cincuenta y siete, y las descripciones de las herramientas cuestan contexto en cada turno.

Cómo se compara

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

Esos servidores llaman a las APIs 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 enrutamiento, 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 analizado. 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 muestra fija pequeña, el historial completo de un solo reseñador, el feed de fotos y las publicaciones del negocio.

Envoltorio oficial de la PlataformaEste servidor
Qué configurasUn proyecto de Google Cloud, facturación, claves y cuotas por APIUna clave de API, una vez
Enrutamiento, geocodificación, validación de direccionesNo ofrecido
ReseñasUna muestra fija pequeña por lugarEl feed, paginado, con grupos de temas
El historial de un reseñadorNo disponibleSí, por contributorId
Fotos y publicacionesLimitadoFeed de fotos y publicaciones del negocio
SalidaJSON según el esquema de la PlataformaJSON analizado de lo que ve un visitante
CostoPrecio por llamada de Google en tu factura5 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 más allá de las primeras, o quién es un reseñador en todos los lugares que calificó, la Plataforma no puede ayudarte y esto sí.

Lo que este servidor no hace. Sin enrutamiento, sin geocodificación, sin validación de direcciones, sin matriz de distancias y 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 de herramienta a través del Protocolo de Contexto de Modelo, el servidor obtiene los datos y devuelve JSON estructurado, y el modelo trabaja con el resultado y nunca ve 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á la Plataforma de Google Maps, un conjunto de APIs de pago 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 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ña, foto y publicación aceptan cualquiera. 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 vuelta como nextPageToken hasta que deje de aparecer. Cada página es una llamada.

¿Necesito alojar o ejecutar algo?

No. Este es un servidor MCP remoto en HTTP transmisible. Nada que instalar, sin entorno de Python, sin proceso que reiniciar.

¿Los datos son en vivo o en caché?

En vivo. Cada llamada obtiene datos en el momento de la solicitud 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 más la búsqueda de Google a la vez.

¿La clave de API caduca?

No. La clave no caduca. Rótala en el panel cuando lo necesites.

¿Esto está afiliado a Google?

No. HasData es un servicio independiente y no está afiliado, respaldado ni patrocinado por Google. Google y Google Maps son marcas comerciales de sus respectivos propietarios. Las herramientas trabajan solo con datos disponibles públicamente, y eres responsable de usar los resultados de acuerdo con los términos de Google y la ley que te aplica.

Enlaces de HasData

Páginas de productoBúsqueda, Reseñas, Fotos y Publicaciones
Documentación del servidorDocs del servidor MCP
Las 57 herramientas en un servidorHasData/hasdata-mcp
Guías de clientesClientes e integraciones MCP
Las otras superficies que analizamos53 APIs de scraping más
Planes y costos de créditosPlanes y costos de créditos
Claves y usoPanel de HasData
Lanzador de Node en npm@hasdata/google-maps-mcp
Lanzador de Python en PyPIhasdata-google-maps-mcp

Desarrollo

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

Sí incluye una prueba de contrato. El README promete seis herramientas con parámetros específicos, y la lista de herramientas ascendente puede cambiar sin un commit aquí, lo que dejaría este archivo mintiéndote silenciosamente. La prueba afirma la promesa y se ejecuta semanalmente en CI, además de 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 hace 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 tiene éxito con cualquier clave no vacía, y una prueba que solo lista herramientas permanece verde con una clave revocada.

Contribuciones

Las correcciones a las tablas de herramientas y a los ejemplos de respuesta son la contribución más útil, porque esas son las partes que se desvían. Incluye la llamada que hiciste y la respuesta que obtuviste. Las solicitudes de extracción desde bifurcaciones ejecutan la suite sin clave, y las verificaciones en vivo se omiten en lugar de ponerse rojas.

Licencia

MIT. Ver LICENCIA.