ubcab-bo-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ubcab-bo-mcpfind driver by phone 99054120"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ubcab-bo-mcp
MCP server for the UBCab Backoffice (registration-bo) API — the same backend
that powers operator.ubcab.mn. Lets Claude search drivers, read driver detail
and rating, change driver state, and list service options.
Built on the same pattern as timely-mcp: a single self-contained
api/index.ts (the Vercel serverless function) that runs over Streamable HTTP
on Vercel (bearer + OAuth 2.1 PKCE) or over stdio locally.
Live endpoint: https://bo-mcp.vercel.app/mcp (POST, Bearer auth). Verified: GET /health → {"status":"ok"}.
Auth
The BO uses Keycloak SSO (realm ubcab-bo, client ubcab-registration-bo).
The server gets an access token from
https://sso.ubcabtech.com/realms/ubcab-bo/protocol/openid-connect/token:
password grant — set
UBCAB_BO_USERNAME+UBCAB_BO_PASSWORD(recommended; durable).refresh_token grant — set
UBCAB_BO_REFRESH_TOKEN(use if password grant is disabled; expires).2FA (since 2026-10-05) — Keycloak enforces OTP on the BO realm. Set
UBCAB_BO_TOTP_SECRETto the account's base32 TOTP secret (the text shown under «Unable to scan?» when setting up the authenticator). Every password grant then sends a freshly generated 6-digittotp. Without it Keycloak answersinvalid_grant(«Account is not fully set up» until OTP is configured, then «Invalid user credentials»). Per-client overrides:UBCAB_EXPRESS_TOTP_SECRET,UBCAB_MARKETING_TOTP_SECRET.UBEats (
ubeats_*tools) log in with the same BO login (UBCAB_BO_USERNAME/_PASSWORD/_TOTP_SECRET) against clientubeats-bo, Originhttps://office.ubeats.mn.UBEATS_USERNAME/_PASSWORD/_TOTP_SECRETare only a fallback when no BO login is set. Verify the generator offline:node scripts/test-totp.mjs.
Access tokens are short-lived (~5 min); the server caches and silently re-auths.
Every API call also sends Origin/Referer = operator.ubcab.mn.
Related MCP server: uptime-kuma-mcp-server
Tools
Tool | Method / Endpoint | Purpose |
|
| Жолоочийг утас/регистр/нэр/shortId-аар хайх → |
|
| Жолоочийн дэлгэрэнгүй (profile, vehicle, kyc…) |
|
| Жолоочийн үнэлгээ |
|
| Төлөв солих: |
|
| Үйлчилгээний сонголтын жагсаалт |
|
| Жолоочийн үйлчилгээний түүх; |
|
| Хэтэвчний үлдэгдэл |
|
| Хэтэвчний гүйлгээний түүх (paged; |
|
| Тээврийн хэрэгслүүд |
|
| ⚠ Машины үйлчилгээ нэмэх/хасах ( |
|
| Сэтгэгдэл/үнэлгээний жагсаалт (paged) |
|
| Цолны түүх (paged) |
|
| Audit log — хэн юуг хэзээ өөрчилсөн ( |
|
| Техникийн үзлэгийн дэлгэрэнгүй (асуулт бүрийн хариу, result, expiresAt) |
|
| Үзлэгт хамаарах жолоочид (paged) |
|
| Хэрэглэгч (rider) хайх (body: filter.query) |
|
| Хэрэглэгчийн аяллын түүх; |
|
| Аяллын үндсэн бүх мэдээлэл |
|
| Маршрут (GPS зам) |
|
| Нэхэмжлэл |
|
| Хэрэглэгчийн нэхэмжлэхүүд (filter.status, ж: open) |
|
| Нэхэмжлэхийн дэлгэрэнгүй |
|
| Аль ч үйлчилгээний аяллын нэхэмжлэх |
|
| Төлбөр тооцооны задаргаа |
|
| Гомдол |
|
| Торгууль (жагсаалт) |
|
| ⚠ Торгууль цуцлах (write) |
|
| ⚠ Хүргэлтийн торгууль цуцлах |
|
| Урамшуулал |
|
| TEMU/чиглэлийн илгээмж хянах (нэвтрэлтгүй нийтийн API) |
|
| UBExpress энгийн захиалга хайх (operator, client express-bo) |
|
| UBExpress буцах захиалга хайх |
|
| Гарын авлагын категорууд |
|
| ⚠ Шинэ категор нэмэх (name, order) |
|
| Категорын дэлгэрэнгүй |
|
| ⚠ Категор устгах |
|
| Формын meta |
|
| Мэдээний (Press) ангиллууд |
|
| ⚠ Шинэ мэдээний ангилал |
|
| Ангилалын дэлгэрэнгүй |
|
| ⚠ Засах |
|
| Тусламжийн агуулгууд (filter: slug, title) |
|
| ⚠ Агуулга нэмэх ( |
|
| Агуулгын дэлгэрэнгүй |
|
| ⚠ Агуулга засах |
|
| ⚠ Агуулга устгах |
|
| Формын meta |
|
| Бүлгийн сонголт ( |
|
| Хэлний сонголт |
|
| Press контентууд |
|
| ⚠ Контент нэмэх (title, cover, category, preview) |
|
| Дэлгэрэнгүй |
|
| ⚠ Засах |
|
| ⚠ Устгах |
|
| Формын meta |
|
| Ангиллын сонголт ( |
|
| Зураг байршуулах → |
|
| ⚠ Устгах |
|
| Формын meta (талбар динамик) |
|
| UBEats Cloud Kitchen захиалга хайх (filter.customerPhone) |
|
| Cloud Kitchen захиалгын бүрэн дэлгэрэнгүй |
|
| Cloud Kitchen төлөвийн түүх |
|
| UBEats Merchant захиалга хайх |
|
| Merchant захиалгын бүрэн дэлгэрэнгүй |
|
| Merchant төлөвийн түүх |
⚠
driver_get/trip_getreturn PII (name, phone, register no, civil ID).driver_set_stateis a write action.
Local run (stdio)
npm install
npm run compile
cp .env.example .env # fill UBCAB_BO_USERNAME + UBCAB_BO_PASSWORD
node --env-file=.env scripts/test-login.mjs 99054120 # live smoke testClaude Desktop config:
{
"mcpServers": {
"ubcab-bo": {
"command": "node",
"args": ["/abs/path/to/ubcab-bo-mcp/dist/api/index.js"],
"env": {
"UBCAB_BO_USERNAME": "...",
"UBCAB_BO_PASSWORD": "..."
}
}
}
}Deploy (Vercel)
Connected to GitHub (naranmunkh/bo-mcp) — every push to main auto-deploys.
Zero-config: api/index.ts is auto-built as a serverless function, and
vercel.json rewrites send every path (/mcp, /health, /.well-known/*) to
it. There is intentionally no build script — a build script makes Vercel
expect a static public/ output and the deploy fails. Local TypeScript build is
npm run compile.
Required env vars on the Vercel project: UBCAB_BO_USERNAME, UBCAB_BO_PASSWORD,
and UBCAB_BO_MCP_AUTH_TOKEN (openssl rand -hex 32).
Connect from Claude with Authorization: Bearer <UBCAB_BO_MCP_AUTH_TOKEN> at
https://bo-mcp.vercel.app/mcp. The endpoint fails closed if
UBCAB_BO_MCP_AUTH_TOKEN is unset.
Is the latest build live?
Every Keycloak auth error ends with a non-secret context, for example
[build 2026-10-16 bo-login+totp, client=ubeats-bo, origin=https://office.ubeats.mn, grant=password, login=UBCAB_BO_*, totp=sent].
No [build …] at all → an old deploy is still serving: the top Production
deployment in Vercel must be the latest main commit ("Redeploy" on an old
deployment rebuilds that old source). origin / client show what was actually
sent, so a stale UBEATS_ORIGIN override is visible there.
Extending
Add a new endpoint by registering another tool inside createMcpServer() in
api/index.ts — copy one of the existing reg(...) blocks.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
- mcp-serverOAuthio.klokin
MCP server exposing klokin time-tracking operations (employees, time entries, stores) to AI clients.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server for Sendbird — chat users, channels, members, and messages from your AI client.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server for managing Claude Code conversation sessions1250 npmMIT
- FlicenseNot gradedqualityCmaintenanceMCP server for managing self-hosted Uptime Kuma monitors and querying uptime statistics from Claude.-
- FlicenseNot gradedqualityCmaintenanceA local MCP server that connects the Globick activities API to Claude Desktop, enabling natural language search and filtering of the activities catalogue.-

Upvote Club Remote MCPofficial
AlicenseNot gradedqualityCmaintenanceRemote MCP server for Claude.ai to interact with Upvote Club's API, enabling task creation, status checking, and platform listing via natural language.42MIT