OpenStreetMap MCP Server

by jagan-shanmugam
Verified
MIT License
  • Apple

Integrations

  • Supports debugging via the MCP Inspector which can be launched using npm to monitor and troubleshoot the MCP server communications.

  • Provides geospatial tools for interacting with OpenStreetMap data, including geocoding, reverse geocoding, finding nearby points of interest, route directions, location search by category, meeting point optimization, area exploration, and neighborhood analysis.

  • Enables publishing and distribution of the MCP server package through PyPI, allowing users to easily install the server.

Servidor MCP de OpenStreetMap (OSM)

Una implementación del servidor OpenStreetMap MCP que mejora las capacidades de LLM con servicios basados en la ubicación y datos geoespaciales.

Manifestación

Optimización del punto de encuentro

Análisis del vecindario

Búsqueda de estacionamiento

Características

Este servidor proporciona a los LLM herramientas para interactuar con datos de OpenStreetMap, lo que permite que las aplicaciones basadas en la ubicación:

  • Geocodificar direcciones y nombres de lugares en coordenadas
  • Coordenadas de geocodificación inversa a direcciones
  • Encuentre puntos de interés cercanos
  • Obtener indicaciones de ruta entre ubicaciones
  • Busque lugares por categoría dentro de un cuadro delimitador
  • Sugerir puntos de encuentro óptimos para varias personas
  • Explora áreas y obtén información completa sobre la ubicación
  • Encuentre escuelas e instituciones educativas cerca de una ubicación
  • Analizar las opciones de viaje entre el hogar y el trabajo
  • Localice estaciones de carga para vehículos eléctricos con conector y filtrado de potencia
  • Realizar análisis de habitabilidad del vecindario para bienes raíces
  • Encuentre instalaciones de estacionamiento con información sobre disponibilidad y tarifas

Componentes

Recursos

El servidor implementa recursos basados en la 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 con estilo en coordenadas específicas

Herramientas

El servidor implementa varias herramientas geoespaciales:

  • geocode_address : Convertir texto en coordenadas geográficas
  • reverse_geocode : Convierte coordenadas en direcciones legibles para humanos
  • find_nearby_places : Descubre puntos de interés cerca de una ubicación
  • get_route_directions : Obtener indicaciones paso a paso entre ubicaciones
  • search_category : Encuentra lugares de categorías específicas en un área
  • suggest_meeting_point : Encuentra lugares de reunión óptimos para varias personas
  • explore_area : Obtenga datos completos sobre un vecindario
  • find_schools_nearby : Localiza instituciones educativas cerca de una ubicación específica
  • analyze_commute : Compara las opciones de transporte entre el hogar y el trabajo
  • find_ev_charging_stations : Localiza infraestructura de carga de vehículos eléctricos con filtrado
  • analyze_neighborhood : Evaluar la habitabilidad del vecindario para bienes raíces
  • find_parking_facilities : Localiza opciones de estacionamiento cerca de un destino

Casos de uso

Toma de decisiones inmobiliarias

Un LLM puede ayudar a los usuarios a evaluar posibles vecindarios para la compra de viviendas:

Pruebas locales

Ejecución del servidor

Para ejecutar el servidor localmente:

  1. Instalar el paquete en modo de desarrollo:
pip install -e .
  1. Iniciar el servidor:
osm-mcp-server
  1. El servidor se iniciará y escuchará las 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 básico de cliente

client.py demuestra el uso básico del servidor OSM MCP:

python examples/client.py

Esto hará lo siguiente:

  • Conectarse al servidor que se ejecuta localmente
  • Obtenga información sobre San Francisco
  • Busca restaurantes en la zona
  • Recupere datos de mapas completos con seguimiento del progreso

Ejemplo de integración de LLM

llm_client.py proporciona una clase auxiliar diseñada para la integración de LLM:

python examples/llm_client.py

Este ejemplo muestra cómo un LLM puede utilizar el Asistente de ubicación para:

  • Obtener información de ubicación a partir de consultas de texto
  • Encuentre puntos de interés cercanos
  • Obtener direcciones entre ubicaciones
  • Encuentra puntos de encuentro óptimos
  • Explora los barrios

Escribiendo su propio cliente

Para crear su propio cliente:

  1. Importar el cliente MCP:
from mcp.client import Client
  1. Inicialice el cliente con la URL de su servidor:
client = Client("http://localhost:8000")
  1. Invocar herramientas o acceder a recursos:
# Example: Geocode an address results = await client.invoke_tool("geocode_address", {"address": "New York City"})

Configuración

Instalar

Escritorio de Claude

En MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json En Windows: %APPDATA%/Claude/claude_desktop_config.json

"mcpServers": { "osm-mcp-server": { "command": "uv", "args": [ "--directory", "/path/to/osm-mcp-server", "run", "osm-mcp-server" ] } }
"mcpServers": { "osm-mcp-server": { "command": "uvx", "args": [ "osm-mcp-server" ] } }

Desarrollo

Construcción y publicación

Para preparar el paquete para su distribución:

  1. Sincronizar dependencias y actualizar el archivo de bloqueo:
uv sync
  1. Distribuciones de paquetes de compilación:
uv build

Esto creará distribuciones de origen y de rueda en el directorio dist/ .

  1. Publicar en PyPI:
uv publish

Nota: Deberá configurar las credenciales de PyPI a través de variables de entorno o indicadores de comando.

Depuración

Dado que los servidores MCP se ejecutan en stdio, la depuración puede ser complicada. Para una experiencia óptima, recomendamos usar el Inspector MCP .

Puede iniciar 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 iniciarse, el Inspector mostrará una URL a la que podrá acceder en su navegador para comenzar a depurar.

Ejemplo de uso de la API

A continuación se muestra un ejemplo rápido de cómo utilizar los puntos finales de API clave desde el código Python:

import asyncio from mcp.client import Client async def main(): client = Client("http://localhost:8000") # Geocode an address results = await client.invoke_tool("geocode_address", {"address": "Empire State Building"}) print(f"Found location: {results[0]['display_name']}") # Get coordinates lat = float(results[0]['lat']) lon = float(results[0]['lon']) # Find nearby coffee shops nearby = await client.invoke_tool( "find_nearby_places", { "latitude": lat, "longitude": lon, "radius": 500, "categories": ["amenity"], "limit": 5 } ) # Print results print(f"Found {nearby['total_count']} nearby places") for category, subcategories in nearby["categories"].items(): for subcategory, places in subcategories.items(): print(f" - {subcategory}: {len(places)} places") if __name__ == "__main__": asyncio.run(main())
-
security - not tested
A
license - permissive license
-
quality - not tested

Mejora las capacidades de LLM con servicios basados en la ubicación y datos geoespaciales, lo que permite a los usuarios geocodificar direcciones, encontrar puntos de interés cercanos, obtener direcciones, optimizar puntos de encuentro y analizar vecindarios.

  1. Demo
    1. Meeting Point Optimization
    2. Neighborhood Analysis
    3. Parking Search
  2. Features
    1. Components
      1. Resources
      2. Tools
    2. Use Cases
      1. Real Estate Decision Making
    3. Local Testing
      1. Running the Server
      2. Testing with Example Clients
      3. Writing Your Own Client
    4. Configuration
      1. Install
    5. Development
      1. Building and Publishing
      2. Debugging
    6. Example API Usage
      ID: amdavzft5o