Skip to main content
Glama

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 build

Copia .env.example a .env y completa la URL de tu servidor y un token:

cp .env.example .env

Verifica la conexión de extremo a extremo:

npm test

Related 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:http

Sirve 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_ORIGINS si 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

ONEMAP_READONLY

false

Rechaza toda escritura. Los informes y las consultas siguen funcionando.

ONEMAP_ALLOW_COMMANDS

true

Ponlo en false para deshabilitar por completo el envío de comandos a dispositivos.

ONEMAP_ALLOW_DANGEROUS

false

Controla el borrado de posiciones, de usuarios, de dispositivos, la configuración del servidor y el reinicio.

ONEMAP_MAX_ROWS

200

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 /reports/{type}/mail directamente

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 onemap_report

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 flotaonemap_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

Informesonemap_report (ruta, eventos, viajes, paradas, resumen, geocercas, combinado × json/xlsx/mail), onemap_report_devices_xlsx

Configuraciónonemap_geofences, onemap_drivers, onemap_maintenance, onemap_calendars, onemap_notifications, onemap_computed_attributes, onemap_orders (cada una acepta una action: list/get/create/update/delete)

Comandosonemap_command_types, onemap_saved_commands, onemap_send_command

Administraciónonemap_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 /session ignora Authorization: Bearer. Informa sobre la sesión de cookie y responde 404 cuando no hay ninguna. Los clientes con token deben pasar ?token=, que OneMapClient.getSessionUser() hace solo como respaldo; eso coloca la credencial en el registro de acceso del servidor, por lo que nunca es el primer intento.

  • id en /positions significa id de posición, no id de dispositivo, y deviceId requiere un from/to explícito. Por tanto, la "última posición" es GET /positions sin parámetros, filtrada en el cliente. Pasar un id de dispositivo como id produce 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 server

test/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.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connect 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,
    98
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    A 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.
    30
    3
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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