bbox-mcp-server
Conversión de coordenadas de bounding box, proyecciones EPSG, indexación H3, consultas Overpass OSM y enlaces de mapas compartibles
Documentación
🌍 bbox-mcp-server
Pregúntale a la IA sobre cualquier cosa, en cualquier lugar — y verifica la respuesta en un mapa. Gratis
El kit de herramientas geoespaciales para agentes de IA. 6 herramientas, cero configuración — dale a cualquier LLM la capacidad de encontrar, consultar, convertir y agregar datos espaciales usando datos abiertos. No se requieren claves API ni registros para comenzar.
Cada respuesta incluye un enlace de verificación compartible a vibhorsingh.com/boundingbox — haz clic para confirmar visualmente los resultados en un mapa interactivo. Ningún otro servidor MCP hace esto.
¿Qué Puedes Hacer Con Esto?
No tienes que ser un profesional de GIS para aprovecharlo. Cualquier agente de IA con este servidor MCP puede responder preguntas espaciales usando datos reales de OpenStreetMap y no escupir basura alucinada.
| Pregúntale a tu agente de IA... | Qué sucede bajo el capó |
|---|---|
| "¿Cuántos cargadores de vehículos eléctricos hay en el centro de Denver?" | Consulta Overpass → agrupación en hexágonos H3 → análisis de densidad |
| "¿Hay un hospital cerca de este Airbnb?" | Búsqueda de POI con etiquetas estructuradas → enlace de verificación en mapa |
| "Encuentra todos los parques infantiles a menos de 1 km de esta dirección" | Consulta Overpass + filtro de radio → resultados fijados en un mapa compartible |
| "Convierte este WKT a GeoJSON en EPSG:3857" | Conversión de formato entre 6 entradas, 9 salidas, más de 3,900 proyecciones |
| "Muéstrame todas las estaciones de bicicletas compartidas en Ámsterdam" | Etiquetas OSM seleccionadas → consulta Overpass → resultados en mapa |
| "Compara la densidad de parques en los vecindarios de Seattle" | Overpass + agregación H3 → análisis espacial en hexágonos |
Cada respuesta viene con un enlace. Haz clic, comprueba si la IA acertó y también puedes compartirlo con otra persona.
Qué Hace Esto Diferente
La mayoría de las herramientas de IA te dan texto en el que tienes que confiar. Esta te da un mapa interactivo que puedes comprobar y verificar.
- Verificable — Cada respuesta incluye una URL pública donde tú (o cualquier persona) pueden confirmar visualmente los resultados. Este es el único servidor MCP que hace esto en cualquier dominio.
- Determinista — Las consultas acceden a datos reales de OpenStreetMap y devuelven coordenadas reales. La IA interpreta tu pregunta. Los datos provienen de todo el trabajo duro de los increíbles voluntarios de OSM.
- Gratis — Sin servicios de pago. La API de Overpass es gratuita, los datos de OSM son gratuitos, la herramienta es gratuita. Un token de Mapbox (nivel gratuito, sin información de pago) desbloquea la búsqueda de ubicaciones en lenguaje natural, pero no es obligatorio.
- Cero configuración —
npx -y bbox-mcp-servery ya estás en marcha.
Por Qué Existe Esto
| El problema | Cómo lo resuelve bbox-mcp |
|---|---|
| "Tengo WKT pero la API necesita un bbox GeoJSON en EPSG:3857." | Analiza 6 formatos de entrada, proyecta a más de 3,900 códigos EPSG, genera en 9 formatos — en una sola llamada. |
| "Sigo obteniendo etiquetas OSM incorrectas para consultas Overpass." | list_osm_tags devuelve combinaciones de etiquetas seleccionadas. No más amenity=grocery alucinados. |
| "¿Cuántos hospitales hay en este distrito?" | aggregate_overpass_h3 consulta Overpass y agrupa los resultados en hexágonos H3 en el servidor. |
| "¿Este bounding box es realmente correcto?" | Cada respuesta incluye un enlace de mapa en el que se puede hacer clic para verificación visual. |
Herramientas de un Vistazo
| Herramienta | Qué hace | Parámetros clave |
|---|---|---|
get_bounds | Convierte y proyecta un bbox entre formatos y sistemas de coordenadas | bbox, epsg, format, coord_order, zoom |
get_h3_indices | Genera índices de celdas hexagonales H3 que cubren un bbox | bbox, resolution, compact |
generate_share_url | Crea un enlace de mapa compartible para un bbox | bbox |
search_overpass | Consulta OpenStreetMap mediante Overpass QL dentro de un bbox o radio | bbox, query, limit, radius_meters |
list_osm_tags | Busca las etiquetas OSM correctas para una categoría | category |
aggregate_overpass_h3 | Ejecuta una consulta Overpass y agrupa los resultados en hexágonos H3 | bbox, query, resolution |
Todas las herramientas aceptan location (lenguaje natural, requiere token de Mapbox) o bbox (coordenadas, WKT, GeoJSON, etc.).
Inicio Rápido
Añade a la configuración de tu cliente MCP:
Claude Desktop (Clic para expandir)
Añade a claude_desktop_config.json:
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}
Cursor (Clic para expandir)
Añade a .cursor/mcp.json:
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}
Windsurf (Clic para expandir)
Añade a ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}
VS Code (GitHub Copilot) o Google Antigravity (Clic para expandir)
Añade a .vscode/mcp.json en tu espacio de trabajo:
{
"servers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}
Prueba: "Encuentra todas las cafeterías a menos de 500 m de Times Square"
Configuración Opcional
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"],
"env": {
"MAPBOX_ACCESS_TOKEN": "pk.your-token-here",
"OVERPASS_API_URL": "https://your.custom.overpass.instance/api/interpreter",
"NOMINATIM_API_URL": "https://your.custom.nominatim.instance"
}
}
}
}
| Variable | Predeterminado | Descripción |
|---|---|---|
MAPBOX_ACCESS_TOKEN | — | Habilita la búsqueda de ubicaciones en lenguaje natural (p. ej., "San Francisco") |
OVERPASS_API_URL | auto | Endpoint personalizado de Overpass. Por defecto, rota entre overpass-api.de y kumi.systems. |
NOMINATIM_API_URL | https://nominatim.openstreetmap.org | Endpoint personalizado de Nominatim. Configúralo si alojas un servidor MCP compartido/remoto o usas un proveedor comercial. |
MAX_H3_CELLS | 50000 | Límite de seguridad para la generación de la cuadrícula H3 |
O instala globalmente: npm install -g bbox-mcp-server
Referencia de Herramientas
get_bounds
Convierte y proyecta un bounding box entre 6 formatos de entrada, 9 formatos de salida y más de 3,900 sistemas de coordenadas. Devuelve el punto central y las coordenadas de teselas para el centroide.
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
bbox | string | — | Geometría de entrada (coordenadas, WKT, GeoJSON, extensión ogrinfo) |
epsg | string | "4326" | Proyección de destino. Los códigos desconocidos se obtienen automáticamente de epsg.io. |
format | string | "csv" | Salida: csv, wkt, geojson-bbox, geojson-polygon, leaflet, overpass, ogc-bbox, kml, stac-bbox |
coord_order | string | "lng,lat" | Cambia a "lat,lng" para APIs que esperan latitud primero |
zoom | number | 15 | Nivel de zoom para el cálculo de coordenadas de teselas |
precision | number | 6 | Decimales en la salida formateada |
💡 Sugerencia: "Obtén el bounding box de Central Park en formato WKT proyectado a EPSG:32618"
get_h3_indices
Genera índices de celdas hexagonales de Uber H3 que cubren un bounding box.
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
bbox | string | — | Geometría de entrada |
resolution | number | — | Resolución H3 (0–15) |
compact | boolean | false | Fusiona celdas en padres más gruesos cuando sea posible |
return_geometry | boolean | false | Incluye límites hexagonales GeoJSON |
💡 Sugerencia: "Dame celdas H3 a resolución 7 para el centro de Chicago, incluye las geometrías hexagonales"
search_overpass
Ejecuta una consulta Overpass dentro de un bounding box o radio. Devuelve resultados estructurados con nombres, coordenadas y etiquetas. El enlace de verificación coloca cada resultado como un pin en el mapa.
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
bbox | string | — | Geometría de entrada |
query | string | — | Overpass QL (p. ej., nwr["amenity"="cafe"]). El servidor lo envuelve automáticamente en el filtro espacial adecuado. |
radius_meters | number | — | Radio de búsqueda en metros. Úsalo solo cuando el usuario especifique una distancia explícita (p. ej., 2000 para "dentro de 2 km"). Omítelo para consultas de área/región. |
limit | number | 100 | Máximo de elementos devueltos |
💡 Sugerencia: "Encuentra todos los estacionamientos a menos de 2 km del aeropuerto JFK"
💡 Sugerencia: "Busca hospitales en Manhattan, límite 50"
list_osm_tags
Busca las etiquetas correctas de OpenStreetMap para una categoría antes de escribir una consulta Overpass.
| Parámetro | Tipo | Descripción |
|---|---|---|
category | string | Categoría amplia (p. ej., "food", "health", "transport") |
💡 Sugerencia: "¿Cuáles son las etiquetas OSM correctas para supermercados?"
aggregate_overpass_h3
Ejecuta una consulta Overpass y agrupa los resultados en hexágonos H3 para análisis de densidad espacial. Devuelve recuentos por celda y límites hexagonales GeoJSON.
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
bbox | string | — | Geometría de entrada |
query | string | — | Consulta central Overpass QL |
resolution | number | 8 | Resolución H3 para agrupación |
💡 Sugerencia: "Agrega todos los hospitales de Seattle en contenedores H3 a resolución 7"
generate_share_url
Genera un enlace compartible para visualizar un bounding box en el mapa interactivo en vibhorsingh.com/boundingbox.
| Parámetro | Tipo | Descripción |
|---|---|---|
bbox | string | Geometría de entrada |
💡 Sugerencia: "Genera un enlace para compartir del bbox 40.7128,-74.0060,40.7580,-73.9855"
Formatos de Entrada Compatibles
Todas las herramientas detectan automáticamente el formato de entrada. No es necesario especificar cuál estás usando.
| Formato | Ejemplo |
|---|---|
| Coordenadas crudas | 40.7128,-74.0060,40.7580,-73.9855 |
| WKT | POLYGON((-74.006 40.712, -73.985 40.712, ...)) |
| GeoJSON | {"type":"Feature","geometry":{...}} |
| bbox GeoJSON | {"bbox":[-74.006,40.712,-73.985,40.758]} |
| Extensión ogrinfo | Extent: (-74.006, 40.712) - (-73.985, 40.758) |
| Separado por espacios | 40.7128 -74.0060 40.7580 -73.9855 |
🤖 Para Desarrolladores de Agentes de IA
Estructura de respuesta
Cada herramienta devuelve dos bloques de contenido:
- Texto legible para humanos — salida formateada con el enlace de verificación en mapa
- JSON estructurado — todos los datos calculados, analizables por máquina
Ejemplo de respuesta JSON get_bounds:
{
"original_wgs84": { "lat1": 40.7128, "lng1": -74.006, "lat2": 40.758, "lng2": -73.9855 },
"projected": { "xmin": -8238310.23, "ymin": 4970241.32, "xmax": -8235527.11, "ymax": 4976491.56 },
"center": { "lat": 40.7354, "lng": -73.99575 },
"tile_indices": { "z": 15, "x": 9660, "y": 12284 },
"epsg": "3857",
"coord_order": "lng,lat",
"area_km2": 8.681,
"dimensions": { "width_km": 1.714, "height_km": 5.066 },
"share_url": "https://vibhorsingh.com/boundingbox/#40.712800,-74.006000,40.758000,-73.985500"
}
Manejo de errores
Todos los errores devuelven isError: true con un mensaje descriptivo. Coordenadas inválidas, códigos EPSG desconocidos y solicitudes H3 sobredimensionadas devuelven errores limpios — el servidor nunca falla con entrada incorrecta.
Registro
Los registros JSON estructurados van a stderr (stdout está reservado para el protocolo MCP). Cada entrada incluye marca de tiempo, nivel y contexto.
Agradecimientos y Uso Justo
OpenStreetMap
Esta herramienta está construida sobre OpenStreetMap: un conjunto de datos global creado y mantenido por millones de voluntarios. Cada consulta que ejecutas devuelve datos que alguien caminó, mapeó o verificó a mano. Si encuentras esto útil, considera contribuir a OSM.
Uso Responsable
Las instancias públicas de las API de Overpass y Nominatim son recursos comunitarios gratuitos con capacidad limitada. Evita bucles cerrados, sondeos excesivos o extracción masiva de datos. Si alojas esto como un servidor MCP compartido/remoto, apunta NOMINATIM_API_URL y OVERPASS_API_URL a tu propia instancia o a un proveedor comercial (consulta instalación de Overpass API e instalación de Nominatim). La rotación predeterminada del servidor para Overpass ayuda a distribuir la carga, pero no sustituye un uso responsable.
Licencia
MIT