Skip to main content
Glama

MCP Google Maps - stdio Edition

CONFIGURACION_CLAUDE.md16.2 kB
# 🚀 Guía Completa: Integrar MCP Google Maps con Claude Desktop ## 📋 Resumen El servidor `mcp-google-map` solo soporta **HTTP**, pero Claude Desktop requiere **stdio**. Esta guía te muestra cómo usar un **wrapper** para conectar ambos sin modificar el repositorio original. --- ## ✅ Solución: Wrapper stdio → HTTP Creamos un archivo `mcp-stdio-wrapper.js` que: 1. Se comunica con Claude Desktop por **stdin/stdout** (stdio) 2. Inicia el servidor HTTP en segundo plano 3. Traduce mensajes entre stdio y HTTP 4. Mantiene las sesiones y el estado ``` Claude Desktop (stdio) ←→ Wrapper ←→ HTTP Server ←→ Google Maps API ``` --- ## 🛠️ Instalación (Paso a Paso) ### Paso 1: Verificar que todo está compilado ```bash cd D:\mcp-demo\mcp-google-map npm install npm run build ``` Debe crear el directorio `dist/` con el archivo `cli.js` ### Paso 2: Verificar que el wrapper existe El archivo `mcp-stdio-wrapper.js` debe estar en la raíz del proyecto: ```bash dir mcp-stdio-wrapper.js # Windows ls mcp-stdio-wrapper.js # macOS/Linux ``` Si no existe, revisa que lo hayas creado correctamente. ### Paso 3: Probar el wrapper manualmente (Recomendado) Antes de configurar Claude, prueba que el wrapper funciona: ```bash node test-wrapper.js ``` Deberías ver: ``` 🧪 Testing MCP stdio wrapper... 📋 STDERR: [Wrapper] Starting MCP stdio wrapper... 📋 STDERR: [HTTP Server] ✅ [MCP-Server] MCP Server started successfully! 📥 STDOUT: {"result":{"protocolVersion":"2024-11-05",... ``` Si ves esto, ¡el wrapper funciona! ✅ ### Paso 4: Configurar Claude Desktop #### 4.1 Ubicar el archivo de configuración **Windows**: ``` C:\Users\TU_USUARIO\AppData\Roaming\Claude\claude_desktop_config.json ``` **Abrir rápidamente (PowerShell)**: ```powershell notepad "$env:APPDATA\Claude\claude_desktop_config.json" ``` **macOS**: ``` ~/Library/Application Support/Claude/claude_desktop_config.json ``` **Abrir rápidamente (Terminal)**: ```bash nano ~/Library/Application\ Support/Claude/claude_desktop_config.json ``` #### 4.2 Agregar la configuración **IMPORTANTE**: Ajusta la ruta según tu instalación. **Para Windows**: ```json { "mcpServers": { "google-maps": { "command": "node", "args": [ "D:\\mcp-demo\\mcp-google-map\\mcp-stdio-wrapper.js" ], "env": { "GOOGLE_MAPS_API_KEY": "TU_API_KEY_AQUI", "MCP_SERVER_PORT": "3000" } } } } ``` **Para macOS/Linux**: ```json { "mcpServers": { "google-maps": { "command": "node", "args": [ "/Users/tu-usuario/mcp-demo/mcp-google-map/mcp-stdio-wrapper.js" ], "env": { "GOOGLE_MAPS_API_KEY": "TU_API_KEY_AQUI", "MCP_SERVER_PORT": "3000" } } } } ``` **⚠️ Notas Importantes**: - En **Windows**, usa **doble backslash** (`\\`) - Reemplaza `D:\\mcp-demo\\mcp-google-map` con **TU ruta completa** - Usa **TU API Key** de Google Maps - Guarda el archivo como **UTF-8** #### 4.3 Validar el JSON Copia tu configuración y pégala en: https://jsonlint.com/ Asegúrate de que no tenga errores de sintaxis. ### Paso 5: Reiniciar Claude Desktop **Muy Importante**: Debes cerrar Claude **completamente**. #### En Windows: 1. Cierra todas las ventanas de Claude 2. En la **bandeja del sistema** (system tray), busca el ícono de Claude 3. **Click derecho** → **Quit** o **Salir** 4. Verifica que el proceso esté cerrado: ```powershell Get-Process -Name "Claude" -ErrorAction SilentlyContinue ``` No debe mostrar nada. #### En macOS: 1. Presiona **Cmd + Q** (no solo cerrar ventana) 2. O desde el menú: **Claude → Quit Claude** ### Paso 6: Abrir Claude Desktop Abre Claude Desktop normalmente. Cargará la configuración automáticamente. ### Paso 7: Verificar que funciona En Claude Desktop, escribe: ``` ¿Qué herramientas tienes disponibles? ``` **Respuesta esperada de Claude**: ``` Tengo acceso a varias herramientas de Google Maps: - search_nearby: Buscar lugares cercanos - get_place_details: Obtener detalles de lugares - maps_geocode: Convertir direcciones a coordenadas - maps_reverse_geocode: Convertir coordenadas a direcciones - maps_distance_matrix: Calcular distancias entre puntos - maps_directions: Obtener direcciones de navegación - maps_elevation: Obtener datos de elevación ``` Si ves esto, **¡FUNCIONA!** 🎉 --- ## 🧪 Pruebas de Funcionamiento ### Prueba 1: Geocodificación ``` Usuario: ¿Cuáles son las coordenadas del Malecón 2000 en Guayaquil? Claude: [Usa maps_geocode automáticamente] Las coordenadas del Malecón 2000 en Guayaquil son: Latitud: -2.1894 Longitud: -79.8844 ``` ### Prueba 2: Búsqueda de lugares ``` Usuario: Busca restaurantes cerca del Parque Seminario en Guayaquil Claude: [Usa search_nearby automáticamente] He encontrado varios restaurantes cerca del Parque Seminario: 1. La Canoa ⭐ 4.7 📍 200m del parque 2. Resaca ⭐ 4.5 📍 350m del parque ... ``` ### Prueba 3: Direcciones ``` Usuario: ¿Cómo llego del aeropuerto de Guayaquil al Hotel Hilton Colón? Claude: [Usa maps_directions automáticamente] Ruta desde Aeropuerto José Joaquín de Olmedo hasta Hotel Hilton Colón: 🚗 Distancia: 6.8 km ⏱️ Tiempo: 15 minutos aproximadamente ... ``` --- ## 🔍 Troubleshooting (Solución de Problemas) ### Problema 1: Claude no ve las herramientas **Síntomas**: Claude dice "No tengo herramientas disponibles" **Diagnóstico**: 1. Verifica que Claude está completamente cerrado y reabierto 2. Revisa los logs: ```powershell # Windows Get-Content "$env:APPDATA\Claude\logs\mcp*.log" -Tail 50 ``` **Soluciones**: - ✅ Verifica que la ruta en el config es correcta - ✅ Asegúrate de que el archivo wrapper existe - ✅ Revisa que el JSON no tiene errores de sintaxis - ✅ Reinicia Claude completamente (cerrar desde bandeja) ### Problema 2: Error "Cannot find module" **Error en logs**: ``` Cannot find module 'D:\mcp-demo\mcp-google-map\mcp-stdio-wrapper.js' ``` **Solución**: 1. Verifica que el archivo existe: ```powershell Test-Path "D:\mcp-demo\mcp-google-map\mcp-stdio-wrapper.js" ``` Debe devolver: `True` 2. Si no existe, verifica que lo creaste en la ubicación correcta 3. Ajusta la ruta en `claude_desktop_config.json` para que coincida ### Problema 3: Error "GOOGLE_MAPS_API_KEY not set" **Solución**: Verifica que tu `claude_desktop_config.json` tiene la API key: ```json "env": { "GOOGLE_MAPS_API_KEY": "TU_API_KEY_AQUI" } ``` ### Problema 4: Puerto ya en uso (EADDRINUSE) **Error**: `Error: listen EADDRINUSE: address already in use :::3000` **Solución**: 1. Cambia el puerto en la configuración: ```json "env": { "MCP_SERVER_PORT": "3001" } ``` 2. O mata el proceso que usa el puerto: ```powershell # Windows netstat -ano | findstr :3000 taskkill /PID <PID> /F ``` ### Problema 5: API Error 403 **Error**: "This API project is not authorized to use this API" **Solución**: 1. Ve a https://console.cloud.google.com/apis/library 2. Habilita estas APIs: - ✅ Geocoding API - ✅ Places API (New) - ✅ Directions API - ✅ Distance Matrix API - ✅ Elevation API 3. Espera 1-2 minutos para que se propaguen los cambios 4. Intenta nuevamente en Claude ### Ver Logs en Tiempo Real **Windows (PowerShell)**: ```powershell Get-Content "$env:APPDATA\Claude\logs\mcp-server-google-maps.log" -Wait -Tail 50 ``` **macOS**: ```bash tail -f ~/Library/Logs/Claude/mcp-server-google-maps.log ``` --- ## 📊 Arquitectura del Wrapper ``` ┌─────────────────────────────────────────────────────────────────┐ │ Claude Desktop │ │ (Espera comunicación stdio) │ └────────────────────────────┬────────────────────────────────────┘ │ │ stdin/stdout (JSON-RPC) │ ┌────────────────────────────▼────────────────────────────────────┐ │ mcp-stdio-wrapper.js │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ 1. Recibe JSON-RPC por stdin │ │ │ │ 2. Inicia servidor HTTP en background │ │ │ │ 3. Traduce stdio → HTTP POST │ │ │ │ 4. Parsea SSE response → JSON │ │ │ │ 5. Envía JSON por stdout │ │ │ └──────────────────────────────────────────────────────────┘ │ └────────────────────────────┬────────────────────────────────────┘ │ │ HTTP POST (JSON-RPC + SSE) │ ┌────────────────────────────▼────────────────────────────────────┐ │ mcp-google-map (HTTP Server) │ │ dist/cli.js (Original) │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ - Procesa requests HTTP │ │ │ │ - Valida parámetros con Zod │ │ │ │ - Ejecuta herramientas │ │ │ │ - Responde con SSE format │ │ │ └──────────────────────────────────────────────────────────┘ │ └────────────────────────────┬────────────────────────────────────┘ │ │ HTTPS │ ┌────────────────────────────▼────────────────────────────────────┐ │ Google Maps API │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## 💡 Ventajas de este Método ✅ **No modifica el repo original** - Todo es externo ✅ **Compatible con Claude Desktop** - Usa stdio como se requiere ✅ **Fácil de actualizar** - Si actualizas el servidor, el wrapper sigue funcionando ✅ **Debugging simple** - Logs separados para wrapper y servidor ✅ **Reutilizable** - Puedes adaptarlo para otros servidores HTTP --- ## 📝 Archivos del Proyecto ``` mcp-google-map/ ├── src/ # Código fuente original │ ├── cli.ts │ ├── core/ │ └── tools/ ├── dist/ # Compilado │ └── cli.js # Servidor HTTP (original) ├── mcp-stdio-wrapper.js # ⭐ Wrapper stdio (NUEVO) ├── test-wrapper.js # Prueba del wrapper ├── test.js # Cliente HTTP de prueba ├── DOCUMENTACION_MCP.md # Protocolo MCP ├── CONFIGURACION_CLAUDE.md # Esta guía └── package.json ``` --- ## 🎯 Ejemplos de Uso Real ### Ejemplo 1: Planificación Turística ``` Usuario: Voy a visitar Guayaquil mañana. Ayúdame a planear el día. Quiero conocer el centro histórico y probar comida local. Claude: ¡Perfecto! Te armaré un itinerario por el centro histórico: 🌅 MAÑANA (9:00 AM) 📍 Parque Seminario (Parque de las Iguanas) Coordenadas: -2.1947, -79.8812 ↓ 🚶 5 min (400m) 📍 Malecón 2000 Caminata panorámica 🍽️ ALMUERZO (12:30 PM) La Canoa - Restaurante de Mariscos ⭐ 4.7 | 📍 800m del Malecón Especialidad: Encebollado 🏛️ TARDE (3:00 PM) 📍 Barrio Las Peñas Sube los 444 escalones Vista panorámica de la ciudad 📊 Resumen: - Distancia total: ~3.5 km - Tiempo: 6-7 horas - Costo estimado: $30-40 USD ``` ### Ejemplo 2: Búsqueda de Ubicación para Negocio ``` Usuario: Necesito encontrar una ubicación para abrir un café en Guayaquil. Analiza las zonas de Urdesa, Kennedy y Samborondón. Cuéntame cuántos cafés competidores hay en cada zona. Claude: Análisis de ubicaciones para café en Guayaquil: 🔵 URDESA Cafés encontrados: 12 en radio de 1km Competencia: Alta Tipos: Cafés boutique, cadenas internacionales 🟢 KENNEDY Cafés encontrados: 8 en radio de 1km Competencia: Media Tipos: Mix de independientes y cadenas 🟡 SAMBORONDÓN Cafés encontrados: 5 en radio de 1km Competencia: Baja Tipos: Principalmente en malls Recomendación: Samborondón tiene menos saturación... ``` --- ## 🔐 Mejores Prácticas ### 1. Seguridad de API Keys ❌ **NO**: - Subir `claude_desktop_config.json` a GitHub - Compartir tu API key públicamente ✅ **SÍ**: - Mantén el archivo de config local - Usa diferentes API keys para desarrollo y producción - Configura restricciones en Google Cloud Console ### 2. Monitoreo de Uso Revisa tu uso de Google Maps API regularmente: 1. https://console.cloud.google.com/apis/dashboard 2. Configura alertas al 50%, 80% y 100% del presupuesto ### 3. Respaldo de Configuración ```powershell # Windows - Crear backup Copy-Item "$env:APPDATA\Claude\claude_desktop_config.json" "$env:APPDATA\Claude\claude_desktop_config.backup.json" # macOS cp ~/Library/Application\ Support/Claude/claude_desktop_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.backup.json ``` --- ## ❓ Preguntas Frecuentes ### ¿Puedo usar múltiples servidores MCP? Sí, agrega más servidores en la configuración: ```json { "mcpServers": { "google-maps": { "command": "node", "args": ["D:\\mcp-demo\\mcp-google-map\\mcp-stdio-wrapper.js"], "env": { "GOOGLE_MAPS_API_KEY": "KEY1" } }, "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "C:\\Documents"] } } } ``` ### ¿Necesito mantener el wrapper corriendo? No. Claude Desktop inicia y detiene el wrapper automáticamente cuando: - Abres Claude Desktop (inicia) - Cierras Claude Desktop (detiene) ### ¿Funciona sin internet? No. Necesitas internet para: - Claude Desktop (conexión a Anthropic) - Google Maps API ### ¿Cuánto cuesta? - **MCP**: Gratis (open source) - **Claude Desktop**: Según tu plan de Anthropic - **Google Maps API**: $200 USD gratis/mes, luego pago por uso --- ## 🎉 ¡Listo! Ahora tienes Claude Desktop integrado con Google Maps vía MCP. **Prueba preguntando a Claude**: - "Busca hoteles cerca del Malecón 2000" - "¿Cómo llego del aeropuerto al centro?" - "¿Cuáles son las coordenadas del Parque Histórico?" - "Planéame un día turístico en Guayaquil" --- *Documentación creada con ❤️ para la comunidad MCP* *Última actualización: Octubre 2024*

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/vicente-alvarado/mcp-google-map-stdio'

If you have feedback or need assistance with the MCP directory API, please join our Discord server