MCP Google Map Server

Integra la API de Google Maps para consultas basadas en ubicación y procesamiento de datos.

Documentación

npm version npm downloads GitHub stars license

MCP Google Maps — AI-Powered Geospatial Tools

Dale a tu agente de IA la capacidad de entender el mundo físico —
geocodifica, traza rutas, busca y razona sobre ubicaciones.

English | 繁體中文

Travel planning demo — Kyoto 2-day, Tokyo outdoor, Japan 5-day, Bangkok budget

  • 18 herramientas — 14 atómicas + 4 compuestas (explore-area, plan-route, compare-places, local-rank-tracker)
  • 3 modos — stdio, StreamableHTTP, CLI ejecutable independiente
  • Agent Skill — definición de habilidad integrada que enseña a la IA cómo encadenar herramientas geo (skills/google-maps/)

vs Google Grounding Lite

Este proyectoGrounding Lite
Herramientas183
GeocodificaciónNo
Indicaciones paso a pasoNo
ElevaciónNo
Matriz de distanciasNo
Detalles de lugaresNo
Zona horariaNo
Clima
Calidad del aireNo
Imágenes de mapasNo
Herramientas compuestas (explore, plan, compare)No
Código abiertoMITNo
AutohospedadoSolo gestionado por Google
Agent SkillNo

Inicio rápido

# stdio (Claude Desktop, Cursor, etc.)
npx @cablate/mcp-google-map --stdio

# exec CLI — no server needed
npx @cablate/mcp-google-map exec geocode '{"address":"Tokyo Tower"}'

# HTTP server
npx @cablate/mcp-google-map --port 3000 --apikey "YOUR_API_KEY"

Agradecimientos especiales

Agradecimientos especiales a @junyinnnn por ayudar a añadir soporte para streamablehttp.

Herramientas disponibles

HerramientaDescripción
maps_search_nearbyEncuentra lugares cerca de una ubicación por tipo (restaurante, cafetería, hotel, etc.). Admite filtrado por radio, calificación y estado de apertura.
maps_search_placesBúsqueda de lugares por texto libre (p. ej., «restaurantes de sushi en Tokio»). Admite sesgo de ubicación, calificación y filtros de abierto ahora.
maps_place_detailsObtén detalles completos de un lugar por su place_id — reseñas, teléfono, sitio web, horarios. El parámetro opcional maxPhotos devuelve URLs de fotos.
maps_geocodeConvierte una dirección o nombre de punto de referencia en coordenadas GPS.
maps_reverse_geocodeConvierte coordenadas GPS en una dirección postal.
maps_distance_matrixCalcula distancias y tiempos de viaje entre múltiples orígenes y destinos. El modo de conducción admite avoid_tolls y avoid_highways.
maps_directionsObtén navegación paso a paso entre dos puntos con detalles de la ruta. El modo de conducción admite avoid_tolls y avoid_highways.
maps_elevationObtén la elevación (metros sobre el nivel del mar) para coordenadas geográficas.
maps_timezoneObtén ID de zona horaria, nombre, desfases UTC/DST y hora local para coordenadas.
maps_weatherObtén condiciones climáticas actuales o pronóstico — temperatura, humedad, viento, UV, precipitación.
maps_air_qualityObtén índice de calidad del aire, concentraciones de contaminantes y recomendaciones de salud por grupo demográfico.
maps_static_mapGenera una imagen de mapa con marcadores, rutas o trayectos — devuelta en línea para que el usuario la vea directamente.
maps_batch_geocodeGeocodifica hasta 50 direcciones en una sola llamada — devuelve coordenadas para cada una.
maps_search_along_routeBusca lugares a lo largo de una ruta entre dos puntos — clasificados por tiempo mínimo de desvío.
Herramientas compuestas
maps_explore_areaExplora lo que hay alrededor de una ubicación — busca múltiples tipos de lugares y obtiene detalles en una sola llamada.
maps_plan_routePlanifica una ruta optimizada de múltiples paradas — utiliza la optimización de waypoints de Routes API (hasta 25 paradas) para un orden eficiente. El modo de conducción admite avoid_tolls y avoid_highways.
maps_compare_placesCompara lugares lado a lado — busca, obtiene detalles y opcionalmente calcula distancias.
maps_local_rank_trackerRealiza seguimiento del ranking de búsqueda local de un negocio en una cuadrícula geográfica — como LocalFalcon. Admite hasta 3 palabras clave para escaneo por lotes. Devuelve el ranking en cada punto, los 3 principales competidores y métricas (ARP, ATRP, SoLV).

Todas las herramientas están anotadas con readOnlyHint: true y destructiveHint: false — los clientes MCP pueden aprobarlas automáticamente sin confirmación del usuario.

Requisito previo: Habilita Places API (New) y Routes API en Google Cloud Console antes de usar herramientas relacionadas con lugares y enrutamiento.

Instalación

Método 1: stdio (Recomendado para la mayoría de los clientes)

Funciona con Claude Desktop, Cursor, VS Code y cualquier cliente MCP que admita stdio:

{
  "mcpServers": {
    "google-maps": {
      "command": "npx",
      "args": ["-y", "@cablate/mcp-google-map", "--stdio"],
      "env": {
        "GOOGLE_MAPS_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Reduce el uso de contexto — Si solo necesitas un subconjunto de herramientas, establece GOOGLE_MAPS_ENABLED_TOOLS para limitar qué herramientas se registran:

{
  "env": {
    "GOOGLE_MAPS_API_KEY": "YOUR_API_KEY",
    "GOOGLE_MAPS_ENABLED_TOOLS": "maps_geocode,maps_directions,maps_search_places"
  }
}

Omite o establece * para las 18 herramientas (predeterminado).

Método 2: Servidor HTTP

Para implementaciones de múltiples sesiones, aislamiento de clave API por solicitud o acceso remoto:

npx @cablate/mcp-google-map --port 3000 --apikey "YOUR_API_KEY"

# Bind to all interfaces for remote access (e.g. Docker, LAN)
npx @cablate/mcp-google-map --host 0.0.0.0 --port 3000 --apikey "YOUR_API_KEY"

Luego configura tu cliente MCP:

{
  "mcpServers": {
    "google-maps": {
      "type": "http",
      "url": "http://localhost:3000/mcp"
    }
  }
}

Información del servidor

  • Transporte: stdio (--stdio) o Streamable HTTP (predeterminado)
  • Herramientas: 18 herramientas de Google Maps (14 atómicas + 4 compuestas) — filtrables mediante GOOGLE_MAPS_ENABLED_TOOLS

Modo CLI Exec (Agent Skill)

Usa las herramientas directamente sin ejecutar el servidor MCP:

npx @cablate/mcp-google-map exec geocode '{"address":"Tokyo Tower"}'
npx @cablate/mcp-google-map exec search-places '{"query":"ramen in Tokyo"}'

Las 18 herramientas disponibles: geocode, reverse-geocode, search-nearby, search-places, place-details, directions, distance-matrix, elevation, timezone, weather, air-quality, static-map, batch-geocode-tool, search-along-route, explore-area, plan-route, compare-places, local-rank-tracker. Consulta skills/google-maps/ para la definición de la habilidad del agente y la documentación completa de parámetros.

Geocodificación por lotes

Geocodifica cientos de direcciones desde un archivo:

npx @cablate/mcp-google-map batch-geocode -i addresses.txt -o results.json
cat addresses.txt | npx @cablate/mcp-google-map batch-geocode -i -

Entrada: una dirección por línea. Salida: JSON con { total, succeeded, failed, results[] }. Concurrencia predeterminada: 20 solicitudes paralelas.

Configuración de la clave API

Las claves API se pueden proporcionar de tres maneras (en orden de prioridad):

  1. Encabezados HTTP (Prioridad más alta)

    {
      "mcp-google-map": {
        "transport": "streamableHttp",
        "url": "http://localhost:3000/mcp",
        "headers": {
          "X-Google-Maps-API-Key": "YOUR_API_KEY"
        }
      }
    }
    
  2. Línea de comandos

    mcp-google-map --apikey YOUR_API_KEY
    
  3. Variable de entorno (archivo .env o línea de comandos)

    GOOGLE_MAPS_API_KEY=your_api_key_here
    MCP_SERVER_PORT=3000
    MCP_SERVER_HOST=0.0.0.0
    

Desarrollo

Desarrollo local

# Clone the repository
git clone https://github.com/cablate/mcp-google-map.git
cd mcp-google-map

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Edit .env with your API key

# Build the project
npm run build

# Start the server
npm start

# Or run in development mode
npm run dev

Pruebas

# Run smoke tests (no API key required for basic tests)
npm test

# Run full E2E tests (requires GOOGLE_MAPS_API_KEY)
npm run test:e2e

Estructura del proyecto

src/
├── cli.ts                        # CLI entry point
├── config.ts                     # Tool registration and server config
├── index.ts                      # Package exports
├── core/
│   └── BaseMcpServer.ts          # MCP server with streamable HTTP transport
├── services/
│   ├── NewPlacesService.ts       # Google Places API (New) client
│   ├── PlacesSearcher.ts         # Service facade layer
│   ├── RoutesService.ts          # Google Routes API client (directions, distance matrix, waypoint optimization)
│   └── toolclass.ts              # Google Maps API client (geocoding, timezone, elevation, static map)
├── tools/
│   └── maps/
│       ├── searchNearby.ts       # maps_search_nearby tool
│       ├── searchPlaces.ts       # maps_search_places tool
│       ├── placeDetails.ts       # maps_place_details tool
│       ├── geocode.ts            # maps_geocode tool
│       ├── reverseGeocode.ts     # maps_reverse_geocode tool
│       ├── distanceMatrix.ts     # maps_distance_matrix tool
│       ├── directions.ts         # maps_directions tool
│       ├── elevation.ts          # maps_elevation tool
│       ├── timezone.ts           # maps_timezone tool
│       ├── weather.ts            # maps_weather tool
│       ├── airQuality.ts         # maps_air_quality tool
│       ├── staticMap.ts          # maps_static_map tool
│       ├── batchGeocode.ts       # maps_batch_geocode tool
│       ├── searchAlongRoute.ts   # maps_search_along_route tool
│       ├── exploreArea.ts        # maps_explore_area (composite)
│       ├── planRoute.ts          # maps_plan_route (composite)
│       ├── comparePlaces.ts      # maps_compare_places (composite)
│       └── localRankTracker.ts   # maps_local_rank_tracker (composite)
└── utils/
    ├── apiKeyManager.ts          # API key management
    └── requestContext.ts         # Per-request context (API key isolation)
tests/
└── smoke.test.ts                 # Smoke + E2E test suite
skills/
├── google-maps/                  # Agent Skill — how to USE the tools
│   ├── SKILL.md                  # Tool map, recipes, invocation
│   └── references/
│       ├── tools-api.md          # Tool parameters + scenario recipes
│       ├── travel-planning.md    # Travel planning methodology
│       └── local-seo.md          # Local SEO / Google Business Profile ranking analysis
└── project-docs/                 # Project Skill — how to DEVELOP/MAINTAIN
    ├── SKILL.md                  # Architecture overview + onboarding
    └── references/
        ├── architecture.md       # System design, code map, 9-file checklist
        ├── google-maps-api-guide.md  # API endpoints, pricing, gotchas
        ├── geo-domain-knowledge.md   # GIS fundamentals, Japan context
        └── decisions.md          # 10 ADRs (design decisions + rationale)

Pila tecnológica

  • TypeScript - Desarrollo con seguridad de tipos
  • Node.js - Entorno de ejecución
  • @googlemaps/places - Google Places API (New) para búsqueda y detalles de lugares
  • Google Routes API - Indicaciones, matriz de distancias y optimización de waypoints vía REST
  • @googlemaps/google-maps-services-js - Geocodificación, zona horaria, elevación
  • @modelcontextprotocol/sdk - Implementación del protocolo MCP (v1.27+)
  • Express.js - Framework de servidor HTTP
  • Zod - Validación de esquemas

Seguridad

  • Las claves API se gestionan en el lado del servidor
  • Aislamiento de clave API por sesión para implementaciones multiinquilino
  • Protección contra DNS rebinding disponible para producción
  • Validación de entrada mediante esquemas Zod

Para revisiones de seguridad empresarial, consulta Security Assessment Clarifications — una lista de verificación de 23 elementos que cubre licencias, protección de datos, gestión de credenciales, contaminación de herramientas y verificación del entorno de ejecución del agente de IA.

Para informar una vulnerabilidad, consulta SECURITY.md.

Hoja de ruta

Adiciones recientes

Herramienta / FunciónQué desbloqueaEstado
maps_static_mapImágenes de mapas con pines/rutas — la IA multimodal puede «ver» el mapaHecho
maps_air_qualityAQI, contaminantes — viajes conscientes de la salud, planificación al aire libreHecho
maps_batch_geocodeGeocodifica hasta 50 direcciones en una sola llamada — enriquecimiento de datosHecho
maps_search_along_routeEncuentra lugares a lo largo de una ruta clasificados por tiempo de desvío — planificación de viajesHecho
maps_explore_areaResumen de vecindario en una sola llamada (compuesto)Hecho
maps_plan_routeItinerario optimizado de múltiples paradas (compuesto)Hecho
maps_compare_placesComparación de lugares lado a lado (compuesto)Hecho
maps_local_rank_trackerSeguimiento de ranking en cuadrícula geográfica — análisis SEO local (compuesto)Hecho
GOOGLE_MAPS_ENABLED_TOOLSFiltra herramientas para reducir el uso de contextoHecho

Planificado

FunciónQué desbloqueaEstado
maps_place_photoFotos de lugares para IA multimodal — «ver» el ambiente del restaurantePlanificado
Parámetro de idiomaRespuestas multilingües (ISO 639-1) en todas las herramientasPlanificado
Plantillas de prompt MCPComandos de barra /travel-planner, /neighborhood-scout en Claude DesktopPlanificado
Benchmark de razonamiento geoSuite de pruebas de 10 escenarios que mide la precisión del razonamiento geoespacial de LLMInvestigación

Casos de uso que estamos desarrollando

Estos son los escenarios del mundo real que impulsan nuestras decisiones de herramientas:

  • Planificación de viajes — «Planifica una excursión de un día en Tokio» (geocode → search → directions → weather)
  • Análisis inmobiliario — «Analiza este vecindario: escuelas, desplazamientos, riesgo de inundación» (search-nearby × N + elevation + distance-matrix)
  • Optimización logística — «Enruta estas 12 entregas de manera eficiente desde el almacén» (plan-route)
  • Ventas de campo — «Visita 6 clientes en Chicago, minimiza el tiempo de conducción, encuentra lugares para almorzar» (plan-route + search-nearby)
  • Respuesta ante desastres — «¿Hospitales abiertos más cercanos? ¿Estoy en una zona de inundación?» (search-nearby + elevation)
  • Creación de contenido — «Los 5 mejores vecindarios en Austin con densidad de restaurantes y distancia al aeropuerto» (explore-area + distance-matrix)
  • Accesibilidad — «Restaurantes accesibles en silla de ruedas, evita rutas empinadas» (search-nearby + place-details + elevation)
  • SEO local — «Audita el ranking de mi restaurante frente a competidores en un radio de 1 km» (search-places + compare-places + explore-area)

Registro de cambios

Consulta CHANGELOG.md para el historial de versiones.

Licencia

MIT

Contribuciones

¡La participación y las contribuciones de la comunidad son bienvenidas! Lee CONTRIBUTING.md para la configuración de desarrollo, las pautas de codificación y el proceso de pull requests.

  • Envía Issues: Reporta errores o proporciona sugerencias
  • Crea Pull Requests: Envía mejoras de código
  • Documentación: Ayuda a mejorar la documentación

Contacto

Historial de estrellas

Google Map Server MCP server

Star History Chart