CI/CD工具集成服务

一个本地Python MCP服务器,将Codemagic CI/CD REST API暴露为Claude可调用工具,用于触发构建、管理应用、下载构建产物和清理缓存等操作。

  • by AgiMaulana
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 AgiMaulana/CodemagicMcp

使用说明

Codemagic MCP服务器

一个本地Python MCP服务器,它公开 Codemagic CI/CD REST API 作为Claude的可调用工具。触发器构建、管理应用程序、下载工件和清除缓存——所有这些都可以在不离开聊天室的情况下从Claude Code或Claude Desktop完成。

工具

应用

工具 说明
list_apps 列出您Codemagic帐户中的所有应用程序
get_app 获取特定应用程序的详细信息
add_app 将公共存储库添加到Codemagic
add_private_app 使用SSH密钥添加私有存储库
delete_app ⚠️ 从Codemagic中删除应用程序

构建

工具 说明
list_builds 列表构建,可选择按应用程序筛选
get_build 使用步数摘要获取构建详细信息;通过 include_steps=True 查看完整步骤列表
trigger_build 触发应用程序的新构建
cancel_build ⚠️ 取消正在运行的构建
get_build_logs 获取构建的逐步状态摘要(可按状态筛选)
get_step_logs 内联获取原始日志或为特定构建步骤创建/更新托管临时文件
get_step_log_artifact 检查特定构建步骤的托管本地步骤日志工件是否仍然存在
list_build_artifacts 列出构建产生的所有工件

人工制品

工具 说明
get_artifact_url 获取构建工件的下载URL
create_artifact_public_url 为工件创建有时间限制的公共URL

缓存

工具 说明
list_caches 列出应用程序的所有构建缓存
delete_cache ⚠️ 删除特定的构建缓存
delete_all_caches ⚠️ 删除应用程序的所有构建缓存

环境变量

工具 说明
list_variables 列出应用程序的所有环境变量
add_variable 向应用程序添加环境变量
update_variable 更新现有环境变量
delete_variable ⚠️ 删除环境变量

网络钩子

工具 说明
list_webhooks 列出应用程序的所有Webhook
add_webhook 将webhook添加到应用程序
delete_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 .

配置

从获取您的API令牌 Codemagic用户设置→ 集成→ Codemagic 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 是可选的,但如果你主要使用一个应用程序,建议使用。设置后,只要工具需要,AI就会自动使用它 app_id 没有具体说明。如果没有设置,AI将:

  1. 呼叫 list_apps 以发现可用的应用程序。
  2. 如果只有一个应用程序存在,则自动使用该应用程序。
  3. 展示列表,并要求您选择是否找到多个应用程序。

步骤日志文件传递

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 mcp add codemagic -- codemagic-mcp

然后在MCP env配置中设置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

添加新工具

  1. 添加一个方法 client.py
  2. 将工具功能添加到相关 tools/*.py 文件
  3. 就是这样-- server.py 永远不需要改变