Skip to main content
Glama
HasData

Google Maps MCP Server

Google Maps MCP Server

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

Contenido

Related MCP server: MCP Google Maps

Lo que necesitas

Un cliente MCP que hable HTTP transmisible con cabeceras personalizadas. Una clave de API de HasData desde el panel de control, gratuita de crear sin tarjeta, y la prueba cubre unas 200 llamadas a la tarifa de 5 créditos. Nada más. Este es un servidor remoto, así que el camino más simple 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, transmisible

Cabecera de autenticación

x-api-key: HASDATA_API_KEY

La URL del servidor es la misma para todos los clientes. Lo ejecutamos de forma práctica en Claude Code y Claude Desktop. Los demás 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, 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" }
    }
  }
}

¿Prefieres Python en lugar de Node? Cambia el lanzador por el paquete 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 café cerca del centro de Seattle y dame los diez primeros 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 los seguimientos siguientes no necesitan paso de búsqueda.

Obtén los detalles completos de ChIJAb0KE0RrkFQRuI4X0By5Mcw: horarios, opciones de servicio, nivel de precio y el enlace al 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 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 lista todos los demás lugares que ha reseñado, con la valoración que dejó.

Una llamada, 5 créditos. Una reseña lleva el contributorId de su autor, que es exactamente lo que acepta 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 hacen que estas cadenas sean baratas. 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 a todo su historial.

Herramientas

Seis herramientas, todas de solo lectura. Los ejemplos siguientes están recortados de llamadas reales, y los números en ellos cambian a medida que los lugares ganan reseñas. Léelos como formas. Cada nombre de herramienta enlaza a su referencia de endpoint.

Los ejemplos son el payload, no la respuesta completa. Un resultado de 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, analizado, luego .json. Un cliente de chat lo desenvuelve por ti, y el código que habla directamente con el endpoint 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 hayas conservado.

Buscar en Google Maps

hasdata_google_maps_search_performMapSearch

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

Parámetro

Tipo

Obligatorio

Notas

q

string

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 fijas la búsqueda a un lugar

gl / hl

string

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

domain

string

Dominio de Google a consultar, por ejemplo google.com

start

number

Desplazamiento de resultados para paginar, 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 "coffee" solo devuelve donde 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 mediante placeId.

Parámetro

Tipo

Obligatorio

Notas

placeId

string

El placeId de un resultado de búsqueda

hl

string

Código de idioma

domain

string

Dominio de Google

Devuelve un 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 a página.

Parámetro

Tipo

Obligatorio

Notas

placeId

string

El lugar. Debe estar presente placeId o dataId

dataId

string

El lugar como dataId en su lugar

sortBy

string

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

topicId

string

Filtrar a 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 lleva reviewId, rating, snippet, date, isoDate, link, images, un objeto user y, donde el propietario respondió, un response.

topics es la agrupación de Google de lo que mencionan las reseñas, cada una con un keyword y un recuento de mentions, y los temas vienen precontados en lugar de requerir 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 input que acepta 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 reseñas de un contribuidor

hasdata_google_maps_contributor_reviews_getMapReviews

Todas las reseñas que una persona ha escrito, en todos los lugares que ha valorado.

Parámetro

Tipo

Obligatorio

Notas

contributorId

string

El contributorId del objeto user de una reseña

num

number

Cuántas reseñas devolver

gl / hl

string

Códigos de país y de idioma

nextPageToken

string

Token de la respuesta anterior

Devuelve un objeto contributor con name, level, points y un desglose de 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 revisores 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á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 de 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 habitual. Lee 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 de una llamada a herramienta. La capa MCP responde con 200 y coloca el fallo dentro del resultado, con isError establecido en true y el motivo como texto. El agente lee un mensaje donde cabría esperar una línea de estado.

Una clave incorrecta aparece como salida de herramienta, no como conexión fallida. Enumerar herramientas acepta cualquier clave no vacía, y el cliente completa su handshake y muestra verde. La primera llamada a herramienta devuelve entonces 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 ausente. La autorización se ejecuta antes que cualquier herramienta, y la conexión en sí falla con 401.

Un argumento que rompe el esquema se rechaza antes de convertirse en petición. Una búsqueda sin q devuelve 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ñas, fotos o publicaciones necesita un lugar. Esas tres aceptan placeId o dataId, y enviar ninguno 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 establecido en error. Comprueba el indicador en lugar de la longitud del array.

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

Los resultados que contienen datos también llevan 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

La búsqueda, los detalles del lugar, las reseñas, las reseñas de colaboradores y las fotos cuestan 5 créditos por llamada con éxito. 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 diaria siempre que su saldo baje de 100, así 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 las cifras actuales están en la página de precios.

Tu plan también fija 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. Gestiona el desbordamiento de forma defensiva en cualquier proceso desatendido, porque un agente que se despliegue en paralelo por varios lugares alcanzará el techo antes que tú.

Paginación cuesta una llamada cada vez. 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 llega lejos 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. Elimina el parámetro y 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 cuestan contexto en cada turno.

Comparativa

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

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, activas cada API y gestionas una clave y sus cuotas. Esa es la herramienta adecuada cuando necesitas 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, el historial completo de un solo reseñador, el feed de fotos y las publicaciones de la empresa.

Envoltorio 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 vez

Rutas, geocodificación, validación de direcciones

No se ofrece

Reseñas

Una pequeña muestra fija por lugar

El feed, paginado, con grupos de temas

El historial de un reseñador

No disponible

Sí, mediante 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

Precios por llamada de Google 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 más allá de las primeras, o saber quién es un reseñador en todos los lugares que ha valorado, la plataforma no puede ayudarte y este sí.

Lo que este servidor no hace. Sin rutas, 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 a herramienta a través del 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 APIs de pago a las que llamas con tu propio proyecto de Cloud, y varios servidores MCP de la comunidad lo 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ñ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 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 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 da a tu agente las herramientas de mapas más la búsqueda de Google a la vez.

¿Caduca la clave de API?

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

¿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 su respectivo propietario. 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 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

Tutoriales para clientes

Clientes e integraciones MCP

Las otras superficies que analizamos

53 APIs de scraping más

Planes y costes de créditos

Planes y costes de créditos

Claves y uso

Panel de HasData

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 upstream puede cambiar sin un commit aquí, lo que dejaría este archivo mintiéndote en silencio. La prueba verifica la 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 comprobació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 permanece en verde con una revocada.

Contribuciones

Las correcciones a las tablas de herramientas y a los ejemplos de respuestas son la contribución más útil, porque son las partes que se desvían. Incluye la llamada que hiciste y la respuesta que obtuviste. Las pull requests de forks ejecutan la suite sin clave, y las comprobaciones en vivo se omiten en lugar de ponerse en rojo.

Licencia

MIT. Consulta 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