Skip to main content
Glama
naranmunkh

ubeats-bo-mcp

by naranmunkh

ubeats-bo-mcp

面向 UBEats Backofficeoffice.ubeats.mn,API 主机 https://ubeats-bo-api.ubcabtech.com)的 MCP 服务器。它遵循与 ubcab-bo-mcp 相同的模式:一个自包含的 api/index.ts,可在 stdio (本地 / Claude Desktop)上运行,也可作为 Vercel 上受 bearer 保护的 Streamable HTTP 端点运行。

认证

Keycloak SSO —— 已于 2026-08-18 针对一个实时 BO 会话验证:

颁发者

https://sso.ubcabtech.com/realms/ubcab-bo

OIDC 客户端(azp

ubeats-bo

令牌端点

{SSO}/realms/{REALM}/protocol/openid-connect/token

发送的 Origin/Referer

https://office.ubeats.mn

访问令牌有效期约 5 分钟;服务器会将其缓存到到期前约 30 秒,并静默重新认证(先使用 refresh_token,然后使用密码授权)。

工具(21)

报表(8)

所有七个报表端点共享同一个请求体结构:

POST /v1/api/reports/{report}/list
{ "filter": { "beginDate": "2026-08-17", "endDate": "2026-08-18", "city": "11" },
  "page": 1, "limit": 20 }

三件容易出错的事项(均经过实时测试确认):

  1. page / limit 是顶层字段,而不是放在 pagination 内部。 发送 pagination: {page, limit} 会被静默忽略,你只会得到默认的 20 行。

  2. endDate 是排他的。 要查询单一天,请传入 下一天beginDate === endDate 会返回 996 "Begin date or end date is wrong!"

  3. 日期必须是 YYYY-MM-DD ISO 日期时间或 "YYYY-MM-DD HH:mm:ss" 会返回 996。

未知的 filter 键会被静默忽略——不会报错,也不会过滤。始终要 检查总数是否合理。

filter.city 枚举(蒙古 aimag/城市代码,11 = Улаанбаатар): 11 21 22 23 41 42 43 44 45 46 48 61 62 63 64 65 67 81 82 83 84 85

工具

报表

ubeats_report_driver_revenue

司机工资计算(+driverRevenueDirectTransact 过滤器,已确认可用)

ubeats_report_delivery

配送报告(返回 feeChargeTotalcouponTotalgrandTotal

ubeats_report_financial

财务报告(29 列,+includeCancelled

ubeats_report_financial_short

财务报告(汇总,14 列)

ubeats_report_items

菜品报告(条目级)

ubeats_report_order_duration

商户订单时长

ubeats_report_orders

订单详细报告

ubeats_report_meta

GET /reports/{report}/meta?action=list — 列和过滤器定义

订单(6)

云厨房和商户订单位于独立的集合中——一个电话号码 可能在两者中都有订单,因此请同时搜索两者。

ubeats_order_search / _get / _state_historiesubeats_merchant_order_search / _get / _state_histories

目录(6)

ubeats_provider_searchubeats_branch_search(过滤器:namestatus)、 ubeats_merchant_searchubeats_kitchen_searchubeats_menu_searchubeats_notification_search(过滤器:beginDateendDatesendersenderRolereceiverPhoneNumber

逃生出口(1)

ubeats_bo_request — 对 BO API 的任意方法/路径,已处理认证和 请求头。在添加真正的工具之前,可用它来探测未记录的端点。

本地运行

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 server

Vercel 部署

零配置:api/index.ts 是函数,vercel.json 将所有请求重写到 它。从 ubcab-bo-mcp 延续了三条规则(来之不易的经验):

  1. 在通过 git 导入的项目中,vercel.json 里不要用旧的 builds + routes —— 否则每个路径都会 404。只能使用 rewrites

  2. package.json 中不要有 build 脚本 —— 否则 Vercel 会查找 public/, 部署会失败。本地编译使用 npm run compile

  3. 不要从 src/ 导入 —— esbuild 的 Node16 解析器不会将 .js 映射为 .ts, 你会得到 500。所有内容都存在于这一个文件中。

通过推送到 main 来部署(git 集成),而不是从 CLI 部署。

在 Vercel 中需要设置的环境变量:UBEATS_BO_USERNAMEUBEATS_BO_PASSWORDUBEATS_BO_MCP_AUTH_TOKENopenssl rand -hex 32)。

健康检查:GET /health{"status":"ok","server":"ubeats-bo-mcp"}

已知不足

  • order-durationmeta?action=list 对某些角色返回 998 permission_denied, 即使 /list 可以正常工作。请改为从响应中读取列信息。

  • financial-reportincludeCancelled 映射到 filter.state;BO 将其 渲染为复选框,但后端效果未经过实时确认。

  • /v1/api/categories/list 对测试的账户返回 998

  • /v1/api/ 下没有 productsdelivery-tariffsdelivery-zonesfeedbackslots 列表路由——那些 BO 界面使用不同的路径。

-
license - not tested
-
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 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

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/naranmunkh/ubeats-bo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server