Codemagic
Codemagic MCP 服务器
一个本地 Python MCP 服务器,将 Codemagic CI/CD REST API 公开为 Claude 可调用的工具。无需离开聊天界面,即可从 Claude Code 或 Claude Desktop 触发构建、管理应用、下载构建产物并清除缓存。
工具
应用
工具 | 描述 |
| 列出 Codemagic 账户中的所有应用 |
| 获取特定应用的详细信息 |
| 将公共仓库添加到 Codemagic |
| 使用 SSH 密钥添加私有仓库 |
| 从 Codemagic 中删除应用 |
构建
工具 | 描述 |
| 列出构建,可选择按应用过滤 |
| 获取包含步骤计数摘要的构建详情;传入 |
| 为应用触发新构建 |
| 取消正在运行的构建 |
| 获取构建的步骤状态摘要(可按状态过滤) |
| 获取原始日志(内联显示)或为特定构建步骤创建/更新托管的临时文件 |
| 检查特定构建步骤的托管本地步骤日志产物是否存在 |
| 列出构建产生的所有产物 |
产物
工具 | 描述 |
| 获取构建产物的下载 URL |
| 为产物创建有时效的公共 URL |
缓存
工具 | 描述 |
| 列出应用的所有构建缓存 |
| 删除特定构建缓存 |
| 删除应用的所有构建缓存 |
环境变量
工具 | 描述 |
| 列出应用的所有环境变量 |
| 为应用添加环境变量 |
| 更新现有环境变量 |
| 删除环境变量 |
Webhooks
工具 | 描述 |
| 列出应用的所有 Webhook |
| 为应用添加 Webhook |
| 删除 Webhook |
⚠️ 这些工具被标记为破坏性操作,执行前会提示确认。
快速入门
使用 Claude Code 运行的最快方法 — 无需单独的安装步骤:
# 1. Add the server (uses uvx to run it on-demand)
claude mcp add codemagic -e CODEMAGIC_API_KEY=your-api-key-here -- uvx codemagic-mcp
# 2. Restart Claude Code — tools will appear in /tools就是这样。有关可选设置(如 CODEMAGIC_DEFAULT_APP_ID),请参阅 配置。
安装
要求: Python 3.11+
选项 1 — uvx(推荐,无需安装)
uvx codemagic-mcp选项 2 — pip
pip install codemagic-mcp选项 3 — 从源码安装
git clone https://github.com/AgiMaulana/CodemagicMcp.git
cd CodemagicMcp
python3 -m venv .venv
.venv/bin/pip install -e .配置
从 Codemagic 用户设置 → 集成 → Codemagic API 获取您的 API 令牌。
您可以通过环境变量或 .env 文件提供设置:
# .env
CODEMAGIC_API_KEY=your-api-key-here
# Optional: set a default app so you don't have to specify it every time
CODEMAGIC_DEFAULT_APP_ID=your-app-id-here
# Optional: customize managed temp log storage for get_step_logs(..., delivery="file")
CODEMAGIC_LOG_TEMP_DIR=/tmp/codemagic-mcp
CODEMAGIC_LOG_TTL_SECONDS=3600
CODEMAGIC_LOG_CLEANUP_INTERVAL_SECONDS=300
CODEMAGIC_LOG_MAX_TOTAL_BYTES=524288000
CODEMAGIC_LOG_MAX_FILE_COUNT=200默认应用 ID
CODEMAGIC_DEFAULT_APP_ID 是可选的,但如果您主要处理一个应用,建议设置。设置后,当工具需要 app_id 且未指定时,AI 将自动使用它。如果未设置,AI 将:
调用
list_apps来发现可用应用。如果只有一个应用,则自动使用该应用。
如果找到多个应用,则列出它们并要求您选择。
步骤日志文件交付
get_step_logs 支持两种交付模式:
delivery="file"是默认模式,将日志写入托管的本地临时文件,并返回元数据,如artifact_id、file_path、bytes、line_count和expires_at。delivery="inline"直接返回原始步骤日志文本。
当步骤日志太大而无法方便地内联返回时,本地文件模式非常有用。托管日志文件存储在 CODEMAGIC_LOG_TEMP_DIR 下,过期文件会在写入新日志文件时被清理。默认保留窗口由 CODEMAGIC_LOG_TTL_SECONDS 控制,默认为 3600 秒。
服务器还会运行启动清理过程和周期性后台清理循环。循环间隔由 CODEMAGIC_LOG_CLEANUP_INTERVAL_SECONDS 控制,默认为 300 秒。作为额外的安全保障,托管临时目录受 CODEMAGIC_LOG_MAX_TOTAL_BYTES 和 CODEMAGIC_LOG_MAX_FILE_COUNT 限制;当超过任一上限时,最旧的文件将被优先清除。
get_step_log_artifact(build_id, step_id) 会检查该托管产物是否存在,而无需再次调用 Codemagic 或返回文件内容。产物元数据包含此格式的确定性 artifact_id:
artifact_<build_id>_<step_id>如果产物丢失,服务器将返回 status="missing" 和原因 not_generated_or_expired,这意味着文件从未生成或已过期并被删除。
在 Claude Code 中注册
运行以下命令添加服务器:
claude mcp add codemagic -- codemagic-mcp然后在 MCP 环境变量配置中设置您的 API 密钥,或者在启动 Claude Code 之前在 shell 中导出它:
export CODEMAGIC_API_KEY=your-api-key-here或者,手动将其添加到 ~/.claude.json:
{
"mcpServers": {
"codemagic": {
"command": "codemagic-mcp",
"env": {
"CODEMAGIC_API_KEY": "your-api-key-here",
"CODEMAGIC_DEFAULT_APP_ID": "your-app-id-here"
}
}
}
}使用 uvx(无需预先安装)
{
"mcpServers": {
"codemagic": {
"command": "uvx",
"args": ["codemagic-mcp"],
"env": {
"CODEMAGIC_API_KEY": "your-api-key-here",
"CODEMAGIC_DEFAULT_APP_ID": "your-app-id-here"
}
}
}
}重启 Claude Code — 工具将出现在 /tools 中。
在 Claude Desktop 中注册
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"codemagic": {
"command": "codemagic-mcp",
"env": {
"CODEMAGIC_API_KEY": "your-api-key-here",
"CODEMAGIC_DEFAULT_APP_ID": "your-app-id-here"
}
}
}
}重启 Claude Desktop 以应用更改。
项目结构
codemagic_mcp/
├── config.py # pydantic-settings config (validates API key at startup)
├── client.py # httpx async client, one method per endpoint
├── server.py # FastMCP instance
└── tools/
├── apps.py
├── builds.py
├── artifacts.py
├── caches.py
├── variables.py
└── webhooks.py添加新工具
在
client.py中添加一个方法将工具函数添加到相关的
tools/*.py文件中完成 —
server.py无需更改
Maintenance
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/AgiMaulana/CodemagicMcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server