An MCP server for Codemagic CI/CD. Trigger and inspect mobile/Flutter builds straight from Claude Code (or any MCP client) using the Codemagic REST API.
Built and maintained by MusicTech Lab.
| Tool | Description |
|---|---|
codemagic_list_apps |
List all applications and their workflow ids |
codemagic_get_app |
Get one application's repo, branches, and workflows |
codemagic_start_build |
Trigger a build for an app/workflow on a branch or tag |
codemagic_get_build |
Get the status and details of a build |
codemagic_list_builds |
List builds, filterable by app/workflow/branch/status |
codemagic_cancel_build |
Cancel a running or queued build |
- Python 3.10+
- Poetry
- A Codemagic API token
git clone https://github.com/musictechlab/mcp-codemagic.git
cd mcp-codemagic
poetry install
cp .env.example .env # then fill in CODEMAGIC_API_KEYIn Codemagic, go to User settings → Integrations → Codemagic API (or Team settings → Integrations for team accounts) and copy the token. Put it in .env:
CODEMAGIC_API_KEY=your-codemagic-api-tokenpoetry run python -m mcp_codemagic
# or, via the installed console script:
poetry run mcp-codemagicAdd the server with the CLI:
claude mcp add codemagic -- poetry --directory /absolute/path/to/mcp-codemagic run python -m mcp_codemagicOr add it manually to your MCP config:
{
"mcpServers": {
"codemagic": {
"command": "poetry",
"args": ["--directory", "/absolute/path/to/mcp-codemagic", "run", "python", "-m", "mcp_codemagic"],
"env": { "CODEMAGIC_API_KEY": "your-codemagic-api-token" }
}
}
}- "List my Codemagic apps and their workflows."
- "Start the
ios-releaseworkflow for app<app-id>onmain." - "What's the status of build
<build-id>?" - "Show the last builds for app
<app-id>that are still building." - "Cancel build
<build-id>."
"List my Codemagic apps and their workflows."
Calls codemagic_list_apps and returns each application with its id and workflow ids:
{
"applications": [
{
"_id": "6a28af80c12e620808693f7b",
"appName": "vimoswim-coach",
"repository": { "htmlUrl": "https://github.com/vimoswim/vimoswim-coach" },
"workflowIds": ["6a28af80c12e620808693f7a"]
}
]
}"Start workflow
6a28af80c12e620808693f7afor app6a28af80c12e620808693f7bonmain."
Calls codemagic_start_build and returns the new build id:
{ "buildId": "6a28f92cf7acee31a7394057" }"What's the status of build
6a28f92cf7acee31a7394057?"
Calls codemagic_get_build. The status field moves through queued → building → finishing → publishing → finished:
{
"build": {
"_id": "6a28f92cf7acee31a7394057",
"status": "queued",
"branch": "main",
"workflowId": "6a28af80c12e620808693f7a",
"instanceType": "mac_mini_m2"
}
}Errors come back as JSON (never raised), so the agent can read them:
{ "error": "Codemagic API 404 for GET /builds/missing", "status": 404, "body": { "message": "Build not found" } }| Variable | Required | Default | Description |
|---|---|---|---|
CODEMAGIC_API_KEY |
yes | — | Codemagic API token (x-auth-token) |
CODEMAGIC_BASE_URL |
no | https://api.codemagic.io |
Override the API base URL |
poetry install
poetry run ruff check .
poetry run ruff format --check .
poetry run pytestSee CONTRIBUTING.md.
To report a vulnerability, see SECURITY.md.
MIT — see LICENSE.
Website | LinkedIn | Let's talk
Crafted by musictechlab.io
