ubeats-bo-mcp
ubeats-bo-mcp
Servidor MCP para el UBEats Backoffice (office.ubeats.mn, host de API
https://ubeats-bo-api.ubcabtech.com). Construido con el mismo patrón que
ubcab-bo-mcp: un api/index.ts autónomo que se ejecuta a través de stdio
(local / Claude Desktop) o como un endpoint HTTP Streamable protegido por bearer token en Vercel.
Autenticación
Keycloak SSO — verificado el 18-08-2026 contra una sesión activa del BO:
Emisor |
|
Cliente OIDC ( |
|
Endpoint de token |
|
Origin/Referer enviado |
|
Los tokens de acceso duran ~5 minutos; el servidor los almacena en caché hasta ~30 segundos antes de su vencimiento y se reautentica silenciosamente (primero refresh_token, luego concesión de contraseña).
Herramientas (21)
Reportes (8)
Los siete endpoints de reportes comparten una misma estructura de cuerpo:
POST /v1/api/reports/{report}/list
{ "filter": { "beginDate": "2026-08-17", "endDate": "2026-08-18", "city": "11" },
"page": 1, "limit": 20 }Tres cosas que son fáciles de equivocar (todas confirmadas mediante pruebas en vivo):
page/limitestán al nivel superior, no dentro depagination. Enviarpagination: {page, limit}se ignora silenciosamente y se obtienen las 20 filas predeterminadas.endDatees exclusivo. Para un solo día, pasa el día siguiente.beginDate === endDatedevuelve996 "¡La fecha de inicio o la fecha de fin es incorrecta!".Las fechas deben estar en formato
YYYY-MM-DD. Las fechas ISO o"YYYY-MM-DD HH:mm:ss"devuelven 996.
Las claves filter desconocidas se ignoran silenciosamente — sin error, sin filtrado.
Siempre verifica los totales.
Enumerado de filter.city (códigos de aimag/ciudad de Mongolia, 11 = Улаанбаатар):
11 21 22 23 41 42 43 44 45 46 48 61 62 63 64 65 67 81 82 83 84 85
Herramienta | Reporte |
| Cálculo de salario del conductor (+filtro |
| Reporte de entregas (devuelve |
| Reporte financiero (29 columnas, + |
| Reporte financiero (resumido, 14 columnas) |
| Reporte de comidas (a nivel de artículo) |
| Duración de pedidos del comercio |
| Reporte detallado de pedidos |
|
|
Pedidos (6)
Los pedidos de Cloud Kitchen y de comercios viven en colecciones separadas — un número de teléfono puede tener pedidos en ambas, así que busca en ambas.
ubeats_order_search / _get / _state_histories,
ubeats_merchant_order_search / _get / _state_histories
Catálogo (6)
ubeats_provider_search, ubeats_branch_search (filtros: name, status),
ubeats_merchant_search, ubeats_kitchen_search, ubeats_menu_search,
ubeats_notification_search (filtros: beginDate, endDate, sender,
senderRole, receiverPhoneNumber)
Vía de escape (1)
ubeats_bo_request — método/ruta arbitrarios contra la API del BO, con autenticación y
encabezados gestionados. Úsalo para sondear endpoints no documentados antes de agregar una herramienta real.
Ejecución local
npm install
npm run typecheck
cp .env.example .env # fill in creds
npm run test:login # live smoke test: auth + one driver-revenue page
npm run compile && npm start # stdio MCP serverDespliegue en Vercel
Configuración cero: api/index.ts es la función, vercel.json reescribe todo
hacia ella. Tres reglas heredadas de ubcab-bo-mcp (aprendidas por las malas):
Sin
builds+routesheredados envercel.jsonen un proyecto importado por git — cada ruta devuelve 404. Usa solorewrites.Sin script
builden package.json — Vercel entonces buscapublic/y el despliegue falla. La compilación local esnpm run compile.Sin importaciones desde
src/— el resolvedor Node16 de esbuild no mapeará.js→.tsy obtendrás un 500. Todo vive en el único archivo.
Despliega enviando a main (integración con git), no desde la CLI.
Variables de entorno a configurar en Vercel: UBEATS_BO_USERNAME, UBEATS_BO_PASSWORD,
UBEATS_BO_MCP_AUTH_TOKEN (openssl rand -hex 32).
Verificación de estado: GET /health → {"status":"ok","server":"ubeats-bo-mcp"}
Brechas conocidas
El
meta?action=listdeorder-durationdevuelve998 permission_deniedpara algunos roles aunque/listfunciona. Lee las columnas de la respuesta en su lugar.includeCancelleddefinancial-reportse asigna afilter.state; el BO lo renderiza como una casilla de verificación pero el efecto en el backend no se confirmó en vivo./v1/api/categories/listdevuelve998para la cuenta probada.No hay rutas de listado
products,delivery-tariffs,delivery-zones,feedbacksolotsbajo/v1/api/— esas pantallas del BO usan rutas diferentes.
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 Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
Official Microsoft MCP Server to query Microsoft Entra data using natural language
GibsonAI MCP server: manage your databases with natural language
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/naranmunkh/ubeats-bo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server