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

Meeting Point Use Case

Análisis de Vecindarios

Neighborhood Analysis Use Case

Búsqueda de Aparcamiento

Parking Search Use Case

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ón
  • location://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áficas
  • reverse_geocode: Convertir coordenadas a direcciones legibles por humanos
  • find_nearby_places: Descubrir puntos de interés cerca de una ubicación
  • get_route_directions: Obtener indicaciones paso a paso entre ubicaciones
  • search_category: Encontrar lugares de categorías específicas en un área
  • suggest_meeting_point: Encontrar puntos de encuentro óptimos para varias personas
  • explore_area: Obtener datos completos sobre un vecindario
  • find_schools_nearby: Localizar instituciones educativas cerca de una ubicación específica
  • analyze_commute: Comparar opciones de transporte entre hogar y trabajo
  • find_ev_charging_stations: Localizar infraestructura de carga para vehículos eléctricos con filtrado
  • analyze_neighborhood: Evaluar la habitabilidad de vecindarios para bienes raíces
  • find_parking_facilities: Localizar opciones de aparcamiento cerca de un destino

Pruebas Locales

Ejecutar el Servidor

Para ejecutar el servidor localmente:

  1. Instale el paquete en modo de desarrollo:
pip install -e .
  1. Inicie el servidor:
osm-mcp-server
  1. 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:

  1. Importe el cliente MCP:
from mcp.client import Client
  1. Inicialice el cliente con la URL de su servidor:
client = Client("http://localhost:8000")
  1. 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:

  1. Sincronice dependencias y actualice el archivo de bloqueo:
uv sync
  1. Compile distribuciones del paquete:
uv build

Esto creará distribuciones de código fuente y wheel en el directorio dist/.

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