OpenStreetMap
Mejora los LLMs con servicios basados en ubicación y datos geoespaciales de OpenStreetMap.
Documentación
Servidor MCP de OpenStreetMap (OSM)
Una implementación de servidor MCP de OpenStreetMap que mejora las capacidades de los LLM con servicios basados en ubicación y datos geoespaciales.
Demo
Optimización de Puntos de Encuentro

Análisis de Vecindarios

Búsqueda de Aparcamiento

Instalación
En Hosts MCP como Claude Desktop, Cursor, Windsurf, etc.
-
osm-mcp-server: El servidor principal, disponible para uso público."mcpServers": { "osm-mcp-server": { "command": "uvx", "args": [ "osm-mcp-server" ] } }
Características
Este servidor proporciona a los LLM herramientas para interactuar con datos de OpenStreetMap, permitiendo aplicaciones basadas en ubicación para:
- Geocodificar direcciones y nombres de lugares a coordenadas
- Geocodificación inversa de coordenadas a direcciones
- Encontrar puntos de interés cercanos
- Obtener indicaciones de ruta entre ubicaciones
- Buscar lugares por categoría dentro de un cuadro delimitador
- Sugerir puntos de encuentro óptimos para varias personas
- Explorar áreas y obtener información completa de ubicación
- Encontrar escuelas e instituciones educativas cerca de una ubicación
- Analizar opciones de desplazamiento entre hogar y trabajo
- Localizar estaciones de carga para vehículos eléctricos con filtrado por conector y potencia
- Realizar análisis de habitabilidad de vecindarios para bienes raíces
- Encontrar instalaciones de aparcamiento con información de disponibilidad y tarifas
Componentes
Recursos
El servidor implementa recursos basados en ubicación:
location://place/{query}: Obtener información sobre lugares por nombre o direcciónlocation://map/{style}/{z}/{x}/{y}: Obtener mosaicos de mapas estilizados en coordenadas especificadas
Herramientas
El servidor implementa varias herramientas geoespaciales:
geocode_address: Convertir texto a coordenadas geográficasreverse_geocode: Convertir coordenadas a direcciones legibles por humanosfind_nearby_places: Descubrir puntos de interés cerca de una ubicaciónget_route_directions: Obtener indicaciones paso a paso entre ubicacionessearch_category: Encontrar lugares de categorías específicas en un áreasuggest_meeting_point: Encontrar puntos de encuentro óptimos para varias personasexplore_area: Obtener datos completos sobre un vecindariofind_schools_nearby: Localizar instituciones educativas cerca de una ubicación específicaanalyze_commute: Comparar opciones de transporte entre hogar y trabajofind_ev_charging_stations: Localizar infraestructura de carga para vehículos eléctricos con filtradoanalyze_neighborhood: Evaluar la habitabilidad de vecindarios para bienes raícesfind_parking_facilities: Localizar opciones de aparcamiento cerca de un destino
Pruebas Locales
Ejecutar el Servidor
Para ejecutar el servidor localmente:
- Instale el paquete en modo de desarrollo:
pip install -e .
- Inicie el servidor:
osm-mcp-server
- El servidor se iniciará y escuchará solicitudes MCP en la entrada/salida estándar.
Pruebas con Clientes de Ejemplo
El repositorio incluye dos clientes de ejemplo en el directorio examples/:
Ejemplo de Cliente Básico
client.py demuestra el uso básico del servidor MCP de OSM:
python examples/client.py
Esto:
- Se conectará al servidor que se ejecuta localmente
- Obtendrá información sobre San Francisco
- Buscará restaurantes en el área
- Recuperará datos completos del mapa con seguimiento de progreso
Ejemplo de Integración con LLM
llm_client.py proporciona una clase auxiliar diseñada para la integración con LLM:
python examples/llm_client.py
Este ejemplo muestra cómo un LLM puede usar el Asistente de Ubicación para:
- Obtener información de ubicación a partir de consultas de texto
- Encontrar puntos de interés cercanos
- Obtener indicaciones entre ubicaciones
- Encontrar puntos de encuentro óptimos
- Explorar vecindarios
Escribir su Propio Cliente
Para crear su propio cliente:
- Importe el cliente MCP:
from mcp.client import Client
- Inicialice el cliente con la URL de su servidor:
client = Client("http://localhost:8000")
- Invoque herramientas o acceda a recursos:
# Example: Geocode an address
results = await client.invoke_tool("geocode_address", {"address": "New York City"})
Configuración de Claude Desktop para servidor local
En MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
En Windows: %APPDATA%/Claude/claude_desktop_config.json
Development/Unpublished Servers Configuration
"mcpServers": {
"osm-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/osm-mcp-server",
"run",
"osm-mcp-server"
]
}
}
Desarrollo
Compilación y Publicación
Para preparar el paquete para distribución:
- Sincronice dependencias y actualice el archivo de bloqueo:
uv sync
- Compile distribuciones del paquete:
uv build
Esto creará distribuciones de código fuente y wheel en el directorio dist/.
- Publique en PyPI:
uv publish
Nota: Necesitará configurar las credenciales de PyPI mediante variables de entorno o banderas de comando.
Depuración
Dado que los servidores MCP se ejecutan sobre stdio, la depuración puede ser desafiante. Para la mejor experiencia de depuración, recomendamos encarecidamente usar el Inspector MCP.
Puede lanzar el Inspector MCP a través de npm con este comando:
npx @modelcontextprotocol/inspector uv --directory /path/to/osm-mcp-server run osm-mcp-server
Al lanzarlo, el Inspector mostrará una URL a la que puede acceder en su navegador para comenzar a depurar.