Model Context Protocol
Release from your editor.Let the assistant drive.
Ubriot publishes an MCP server. Point Claude, Cursor, or any MCP client at it and the whole release path becomes callable: 20 tools for builds, store submission, OTA updates, push, and failure diagnosis. No dashboard, no context switch.
PACKAGE
ubriot-mcp
TRANSPORT
stdio
TOOLS
20
RUNTIME
Node 18+
CLIENTS
Claude · Cursor
AUTH
Token or login
AI TOOLS
2 of 20
Setup
One config block, then ask.
/ two minutes
Any MCP client
Add the server to your client's MCP config, Cursor's mcp.json, Claude Desktop's config file, or anything else that speaks MCP over stdio.
{
"mcpServers": {
"ubriot": {
"command": "npx",
"args": ["ubriot-mcp@latest"],
"env": {
"UBRIOT_TOKEN": "eyJ...",
"OPENAI_API_KEY": "sk-..."
}
}
}
}Claude Code, one command
Registers the same server at user scope. Swap the email and password for UBRIOT_TOKEN if you already hold a token.
claude mcp add-json -s user ubriot '{
"command": "npx",
"args": ["ubriot-mcp@latest"],
"env": {
"UBRIOT_EMAIL": "you@example.com",
"UBRIOT_PASSWORD": "yourpassword"
}
}'Environment
UBRIOT_TOKENOne ofA pre-issued Ubriot JWT. Used directly as the bearer token for every API call.
UBRIOT_EMAIL + UBRIOT_PASSWORDOr bothAccount credentials. The server logs in on first tool call and caches the token for the session.
UBRIOT_API_BASEOptionalOverrides the API base URL. Defaults to https://api.ubriot.dev/api/v1.
OPENAI_API_KEYAI tools onlyRequired by the two AI tools, failure diagnosis and release notes. Every other tool works without it.
/ credentials live in your own client config; the server reads them from its environment and holds nothing
Tool surface
All 20 tools, in six groups.
/ what the assistant can call
Apps and setup
5 toolsubriot_list_appsLists every release app in the workspace with its ID, name, slug, and iOS or Android identifiers.
ubriot_create_appRegisters a new release app: name and slug, plus optional repo URL, default branch, Expo project root, bundle identifiers, App Store Connect app ID, and TestFlight auto-submit.
ubriot_update_appUpdates an existing app's config, the same fields as creation, by app ID.
ubriot_app_readinessReturns the credential and configuration checklist for an app, what is set up and what is still missing before it can build and submit.
ubriot_setup_git_webhookRotates the app's git webhook secret and returns the secret plus the webhook URL to paste into GitHub, so pushing a tag triggers a build.
Builds
6 toolsubriot_trigger_buildQueues an iOS or Android build for an app, optionally on a specific branch. Returns the build ID and initial status.
ubriot_build_statusReports a build's status, platform, branch, start and finish times, error message, and any TestFlight or Google Play submission state.
ubriot_build_logsFetches the raw logs for a build.
ubriot_list_buildsLists recent builds across the workspace or for one app, up to a limit that defaults to 20.
ubriot_cancel_buildRequests cancellation of a queued or running build.
ubriot_build_analyticsAggregates build volume, success rate, duration percentiles, queue time, retries, build minutes, artifact size, per-phase timing, worker OS and hardware breakdowns, submission counts, and top apps over a date range.
Store submission
2 toolsubriot_submit_testflightQueues a completed iOS build for TestFlight beta distribution.
ubriot_submit_google_playQueues a completed Android build for Google Play.
OTA and release health
3 toolsubriot_publish_otaPublishes an over-the-air update to a channel, production by default, with an optional description.
ubriot_list_updatesLists the OTA updates published for an app with channel and date.
ubriot_release_healthOne tool, four actions: read current backend health, uptime, and open release watches; set the monitored health URL and toggle monitoring; auto-detect a health endpoint from a domain; or roll back the last release on a channel.
Push
2 toolsubriot_send_pushSends a push notification with a title, body, and optional custom payload to every registered device for an app.
ubriot_list_campaignsLists an app's push campaigns with name and status.
Diagnosis and AI
2 toolsubriot_diagnose_failurePulls the logs from a failed build and returns a plain-English root cause, the exact error, and a step-by-step fix. Needs OPENAI_API_KEY.
ubriot_generate_release_notesTurns a change list or raw commit messages into App Store or Google Play release notes, with the tone and length adjusted per store. Needs OPENAI_API_KEY.
In practice
What you can ask for.
/ plain English in, tool calls out
“Ship an iOS build of Evenly off main and submit it to TestFlight when it goes green.”
ubriot_list_apps · ubriot_trigger_build · ubriot_build_status · ubriot_submit_testflight
“The last Android build failed. What broke and how do I fix it?”
ubriot_list_builds · ubriot_diagnose_failure
“Is this app actually ready to release, or is a credential missing?”
ubriot_app_readiness
“Push a JS-only fix to the production channel, then roll it back if health drops.”
ubriot_publish_ota · ubriot_release_health
“Write App Store and Play release notes from the commits since the last tag.”
ubriot_generate_release_notes
“How long did our iOS builds take last month, and what was the success rate?”
ubriot_build_analytics
/ the server exposes the tools; your MCP client decides which ones to call
Questions
About the MCP server.
What is the Ubriot MCP server?
It is a Model Context Protocol server published to npm as ubriot-mcp. It exposes 20 Ubriot release tools over stdio, so an MCP client such as Claude Code, Claude Desktop, or Cursor can trigger builds, submit to TestFlight and Google Play, publish OTA updates, send push notifications, and diagnose build failures without opening the Ubriot dashboard.
How do I install it?
Add it to your MCP client config with the command npx and the argument ubriot-mcp@latest, then set either UBRIOT_TOKEN or both UBRIOT_EMAIL and UBRIOT_PASSWORD in the server's env block. In Claude Code you can do this in one step with claude mcp add-json -s user ubriot. It needs Node 18 or newer.
Do I need an OpenAI key?
Only for two tools. ubriot_diagnose_failure and ubriot_generate_release_notes call OpenAI and require OPENAI_API_KEY. The other 18 tools talk only to the Ubriot API and work without it.
Can the assistant publish to the App Store without me?
The tools go as far as your Ubriot account can. ubriot_submit_testflight queues a build for TestFlight beta distribution and ubriot_submit_google_play queues an Android build for Google Play. Apple and Google still run their own review, and Ubriot does not bypass it. Whether a tool call needs your approval first is up to your MCP client.
Does it work with self-hosted or staging Ubriot?
Yes. Set UBRIOT_API_BASE to your API base URL. It defaults to https://api.ubriot.dev/api/v1.
Is the MCP server the same thing as the Ubriot CLI?
No. The CLI is for you to run by hand, ubriot ship ios and friends. The MCP server is the machine-readable surface for the same platform, so an AI assistant can pick the right call, read the result, and decide what to do next inside a conversation.
Wire it up to your assistant
Create an account, add your signing credentials once, then install the MCP server and ship the next release from the editor you already have open.
Prefer the terminal? The CLI and API docs cover the same platform.