onemap8-mcp
Servidor MCP OneMap8
Expone una instalación de seguimiento de flotas OneMap8 a Claude, ChatGPT y cualquier otro cliente MCP, para que la gente pueda hacer preguntas en lenguaje natural en lugar de manejar la interfaz de informes:
¿Dónde está el camión 12 ahora mismo? ¿Cuántos kilómetros recorrió la flota de reparto la semana pasada? Envíame por correo el informe de viajes de las furgonetas, de lunes a viernes. ¿Qué vehículos lanzaron alarmas durante la noche?
32 herramientas que cubren toda la superficie de la API: dispositivos, posiciones, los siete tipos de informes, geocercas, conductores, mantenimiento, notificaciones, calendarios, usuarios, permisos y despacho de comandos a dispositivos.
Inicio rápido
npm install && npm run buildCopia .env.example a .env y completa la URL de tu servidor y un token:
cp .env.example .envVerifica la conexión de extremo a extremo:
npm testRelated MCP server: OpenStreetMap MCP Server
Autenticación
El plugin nunca tiene más acceso que la cuenta de OneMap que tiene detrás. Cualquier dispositivo, grupo o informe que ese usuario pueda ver a través de la interfaz web es exactamente lo que el modelo puede alcanzar: el propio sistema de permisos de OneMap es el que aplica la restricción, y no hay un modelo de privilegios separado que mantener sincronizado.
Dos opciones, configuradas en .env:
ONEMAP_TOKEN(recomendado): un token de API emitido para la cuenta. Se envía como token de portador. Se puede revocar sin cambiar la contraseña.ONEMAP_EMAIL+ONEMAP_PASSWORD: autenticación básica. Funciona, pero deja la contraseña en texto plano en el disco; úsalo solo para empezar.
Conectar un cliente
Claude Desktop / Claude Code (stdio)
Añade a claude_desktop_config.json (o .mcp.json para Claude Code):
{
"mcpServers": {
"onemap8": {
"command": "node",
"args": ["/absolute/path/to/ai-plugin/dist/stdio.js"],
"env": {
"ONEMAP_URL": "https://mcp.onemap8.com/api",
"ONEMAP_TOKEN": "your-token-here",
"ONEMAP_ALLOW_COMMANDS": "false"
}
}
}
}Conector remoto / ChatGPT (HTTP)
npm run start:httpSirve Streamable HTTP en POST /mcp (comprobación de estado en /health). Se ejecuta sin estado: un
servidor nuevo por petición, sin nada compartido entre llamadas, por lo que un solo despliegue puede atender a muchos usuarios.
Con ONEMAP_HTTP_PASSTHROUGH_AUTH=true (el valor predeterminado), la cabecera Authorization: Bearer <token> de cada
petición suministra el token de OneMap de ese llamante, de modo que cada usuario queda limitado a sus propios permisos
en lugar de compartir una cuenta de servicio.
Antes de exponerlo públicamente:
Termina TLS delante del proceso: los tokens viajan en las cabeceras.
Establece
ONEMAP_ALLOWED_ORIGINSsi se conectarán clientes basados en navegador; los orígenes no listados serán rechazados.Esto no implementa OAuth. O bien lo pones detrás de una puerta de enlace que lo haga, o entrega a cada usuario un token de API de OneMap para que lo pegue en su cliente.
Salvaguardas
Los permisos de la propia cuenta son la frontera de seguridad real. Estas opciones son la segunda capa: limitan lo que el modelo puede hacer con esa cuenta, que es una cuestión distinta de lo que la cuenta puede hacer.
Variable | Valor predeterminado | Efecto |
|
| Rechaza toda escritura. Los informes y las consultas siguen funcionando. |
|
| Ponlo en |
|
| Controla el borrado de posiciones, de usuarios, de dispositivos, la configuración del servidor y el reinicio. |
|
| Trunca los conjuntos de resultados grandes antes de que inunden la ventana de contexto. |
Dos herramientas requieren además un argumento explícito confirm: true, además de las opciones anteriores:
onemap_send_command y onemap_delete_positions.
Sobre los comandos de dispositivo en concreto: onemap_send_command llega al hardware físico: inmovilizadores
de motor, cerraduras de puertas, relés. Habilitarlo significa que un modelo de lenguaje está a una llamada de
detener un vehículo. Está activado por defecto porque pediste toda la superficie, pero considera
ONEMAP_ALLOW_COMMANDS=false para cualquier despliegue al que puedan acceder usuarios que no seas tú, y deja
el envío de comandos a la propia interfaz de los operadores.
Informes programados
La API de OneMap no tiene un endpoint de programación recurrente. Puede enviar un informe por correo una vez, bajo petición:
onemap_report con delivery: "mail" llama a /reports/{type}/mail, y el servidor envía la hoja de cálculo
por correo de forma asíncrona al propietario de la cuenta.
Para que se repita, se necesita un programador externo que llame a lo mismo con una cadencia:
Enfoque | Bueno para | Cuidado con |
cron / n8n llamando a | Producción. Fiable, centralizado, independiente de cualquier cliente de IA, sobrevive a que se desinstale el plugin. | Un poco de trabajo de backend; vive fuera de este repositorio. |
Tarea programada en Claude o ChatGPT que lanza un prompt que llama a | Uso personal, experimentos rápidos, informes en los que quieras que el modelo resuma antes de enviar. | Depende de la infraestructura de tareas de la plataforma de IA: las tareas pueden pausarse o perderse, y la sincronización no está garantizada. |
Para cualquier cosa de la que dependa un negocio, usa la primera opción. El prompt schedule_recurring_report guía
en la elección del informe y los parámetros, lo ejecuta una vez para que puedas comprobar el resultado y luego expone ambas opciones.
Una versión en n8n sería aproximadamente: Disparador de programa → Petición HTTP GET {ONEMAP_URL}/reports/trips/mail
con deviceId, from, to y una cabecera Authorization: Bearer.
Referencia de herramientas
Estado de la flota — onemap_list_devices, onemap_get_device, onemap_list_groups,
onemap_live_positions, onemap_position_history, onemap_get_event, onemap_geocode,
onemap_whoami, onemap_statistics, onemap_audit_log
Informes — onemap_report (ruta, eventos, viajes, paradas, resumen, geocercas, combinado ×
json/xlsx/mail), onemap_report_devices_xlsx
Configuración — onemap_geofences, onemap_drivers, onemap_maintenance, onemap_calendars,
onemap_notifications, onemap_computed_attributes, onemap_orders (cada una acepta una action:
list/get/create/update/delete)
Comandos — onemap_command_types, onemap_saved_commands, onemap_send_command
Administración — onemap_manage_device, onemap_manage_group, onemap_users,
onemap_permissions, onemap_share, onemap_send_notification, onemap_session_token,
onemap_stream_url, onemap_server_settings, onemap_delete_positions
Notas de diseño
Dos decisiones que conviene conocer al ampliar esto:
Los nombres se resuelven a identificadores en el servidor. Las herramientas aceptan
deviceNames: ["Truck 12"]y buscan el identificador, porque los usuarios dicen nombres y los modelos adivinan identificadores. Los nombres ambiguos se rechazan con los candidatos listados en lugar de resolverse a una suposición: elegir el vehículo equivocado en silencio es peor que fallar.Una herramienta de informes, no ocho. Los siete endpoints de informes solo se diferencian por el segmento de ruta, por lo que son una sola herramienta con un discriminador
report. Las listas de herramientas cortas mejoran notablemente la precisión de selección del modelo; el mismo razonamiento reduce el CRUD de entidades a una herramienta por acción.
Los períodos con nombre (period: "lastWeek") también se resuelven en el servidor (las semanas empiezan en lunes),
porque la aritmética de fechas es una fuente fiable de errores silenciosos del modelo.
Dos peculiaridades de la API que conviene conocer antes de tocar estas rutas de código, ambas encontradas probando contra el servidor real en lugar de leer la especificación:
GET /sessionignoraAuthorization: Bearer. Informa sobre la sesión de cookie y responde 404 cuando no hay ninguna. Los clientes con token deben pasar?token=, queOneMapClient.getSessionUser()hace solo como respaldo; eso coloca la credencial en el registro de acceso del servidor, por lo que nunca es el primer intento.iden/positionssignifica id de posición, no id de dispositivo, ydeviceIdrequiere unfrom/toexplícito. Por tanto, la "última posición" esGET /positionssin parámetros, filtrada en el cliente. Pasar un id de dispositivo comoidproduce un 500 (NullPointerException) del servidor.
Desarrollo
npm run dev # tsc --watch
npm test # build + smoke tests against a mock API
npm run inspect # MCP Inspector against the stdio servertest/smoke.mjs levanta una API OneMap falsa y conduce el servidor real a través de un cliente MCP en memoria,
cubriendo la resolución de nombres, la expansión de períodos, la codificación de consultas de matrices, el envío de correo y todas las
salvaguardas.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceConnect your AI workflows to the ThingsBoard IoT Platform through this MCP server. Enables LLMs to query device telemetry, manage IoT entities (devices, assets, customers), and analyze sensor data - all through natural language. Perfect for building AI-powered IoT monitoring, predictive maintenance,98Apache 2.0
- AlicenseBqualityDmaintenanceA comprehensive MCP server providing 30 tools for geocoding, routing, and OpenStreetMap data analysis. It enables AI assistants to search for locations, calculate travel routes, and perform quality assurance checks on map data.303MIT
- AlicenseAqualityDmaintenanceProduction-ready MCP server for Google Maps Platform APIs, providing 11 tools for directions, places, geocoding, traffic, and road data to empower AI agents with location intelligence.114Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to discover and execute tools via a secure MCP server with JWT authentication, RBAC, rate limiting, and audit logging.1MIT
Related MCP Connectors
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/evallgar/onemap8-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server