CircleCI
官方使AI代理能够修复来自CircleCI的构建失败。
你可以用 CircleCI MCP 做什么?
- 验证 CircleCI 配置 — 通过
config_helper请求验证你的.circleci/config.yml是否存在语法和语义错误。 - 获取流水线状态 — 使用
get_latest_pipeline_status检查某个分支的最新流水线状态。 - 触发和重新运行流水线 — 使用
run_pipeline启动新流水线,或通过rerun_workflow从头或失败作业重新运行工作流。 - 调查构建失败 — 使用
get_build_failure_logs检索详细的失败日志,并通过get_job_test_results获取测试结果。 - 发现不稳定测试 — 使用
find_flaky_tests分析测试执行历史,识别不稳定的测试。 - 分析使用量和成本 — 使用
download_usage_api_data下载使用数据,并通过find_underused_resource_classes查找未充分利用的资源类别。
文档
[!IMPORTANT] 此包已弃用。请迁移。
@circleci/mcp-server-circleci不再接收功能更新。请改用 CircleCI 的托管 MCP 服务器或 CircleCI CLI MCP——参见 CircleCI MCP 概览。此仓库将被归档。现有版本仍可从 npm 安装,但不建议运行持有 CircleCI Personal API Token 的无人维护的服务器。
如果你正在运行自托管远程传输(
start=remote),请先迁移:托管服务器是其直接替代品,可省去运维一个代理组织 token 的面向网络的服务。
CircleCI MCP 服务器
模型上下文协议(Model Context Protocol,MCP)是一种新的标准化协议,用于管理大型语言模型(LLM)与外部系统之间的上下文。在此仓库中,我们为 CircleCI 提供一个 MCP 服务器。
使用 Cursor、Windsurf、Copilot、Claude 或任何兼容 MCP 的客户端,以自然语言与 CircleCI 交互——无需离开你的 IDE。
工具
| 工具 | 描述 |
|---|---|
config_helper | 验证并获取 CircleCI 配置的指导 |
download_usage_api_data | 从 CircleCI Usage API 下载用量数据 |
find_flaky_tests | 通过分析测试执行历史识别不稳定测试 |
find_underused_resource_classes | 查找计算资源利用不足的作业 |
get_build_failure_logs | 从 CircleCI 构建中检索详细的失败日志 |
get_job_test_results | 检索 CircleCI 作业的测试元数据和结果 |
get_latest_pipeline_status | 获取分支最新流水线的状态 |
list_artifacts | 列出 CircleCI 作业产生的制品 |
list_component_versions | 列出 CircleCI 组件的所有版本 |
list_followed_projects | 列出你关注的所有 CircleCI 项目 |
rerun_workflow | 从头或从失败作业重新运行工作流 |
run_pipeline | 触发流水线运行 |
run_rollback_pipeline | 为项目触发回滚 |
安装
团队/集中部署: 如需为组织运行一个共享的远程服务器(Kubernetes、Docker 等),并为每位开发者或共享使用 CircleCI token,请参见 自托管远程 MCP 服务器。
Cursor
先决条件:
- CircleCI Personal API token(了解更多)
- NPX:Node.js >= v18 和 pnpm
- Docker:Docker
在本地 MCP 服务器中使用 NPX
将以下内容添加到你的 Cursor MCP 配置中:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci@latest"],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
CIRCLECI_BASE_URL为可选项——仅本地部署客户需要。MAX_MCP_OUTPUT_LENGTH为可选项——MCP 响应的最大输出长度(默认值:50000)。
在本地 MCP 服务器中使用 Docker
将以下内容添加到你的 Cursor MCP 配置中:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"-e",
"MAX_MCP_OUTPUT_LENGTH",
"circleci/mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
使用自托管远程 MCP 服务器
参见 自托管远程 MCP 服务器。使用按用户客户端配置,并将其添加到你的 Cursor MCP 配置中(Cursor Settings → MCP)。
VS Code
先决条件:
- CircleCI Personal API token(了解更多)
- NPX:Node.js >= v18 和 pnpm
- Docker:Docker
在本地 MCP 服务器中使用 NPX
将以下内容添加到项目中的 .vscode/mcp.json:
{
"inputs": [
{
"type": "promptString",
"id": "circleci-token",
"description": "CircleCI API Token",
"password": true
},
{
"type": "promptString",
"id": "circleci-base-url",
"description": "CircleCI Base URL",
"default": "https://circleci.com"
}
],
"servers": {
"circleci-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci@latest"],
"env": {
"CIRCLECI_TOKEN": "${input:circleci-token}",
"CIRCLECI_BASE_URL": "${input:circleci-base-url}"
}
}
}
}
💡 首次启动服务器时会提示输入,之后由 VS Code 安全存储。
在本地 MCP 服务器中使用 Docker
将以下内容添加到项目中的 .vscode/mcp.json:
{
"inputs": [
{
"type": "promptString",
"id": "circleci-token",
"description": "CircleCI API Token",
"password": true
},
{
"type": "promptString",
"id": "circleci-base-url",
"description": "CircleCI Base URL",
"default": "https://circleci.com"
}
],
"servers": {
"circleci-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"circleci/mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "${input:circleci-token}",
"CIRCLECI_BASE_URL": "${input:circleci-base-url}"
}
}
}
}
使用自托管远程 MCP 服务器
参见 自托管远程 MCP 服务器。在 .vscode/mcp.json 中使用按用户客户端配置。
Claude Desktop
先决条件:
- CircleCI Personal API token(了解更多)
- NPX:Node.js >= v18 和 pnpm
- Docker:Docker
在本地 MCP 服务器中使用 NPX
将以下内容添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci@latest"],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
在本地 MCP 服务器中使用 Docker
将以下内容添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"-e",
"MAX_MCP_OUTPUT_LENGTH",
"circleci/mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
使用自托管远程 MCP 服务器
参见 自托管远程 MCP 服务器。按照 Claude Desktop 和 CLI 客户端 中的说明创建包装脚本,然后将你的 claude_desktop_config.json 指向它。
要查找或创建配置文件,请打开 Claude Desktop 设置,点击左侧边栏中的 开发者,然后点击 编辑配置。配置文件位于:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Claude Code
先决条件:
- CircleCI Personal API token(了解更多)
- NPX:Node.js >= v18 和 pnpm
- Docker:Docker
在本地 MCP 服务器中使用 NPX
claude mcp add circleci-mcp-server -e CIRCLECI_TOKEN=your-circleci-token -- npx -y @circleci/mcp-server-circleci@latest
在本地 MCP 服务器中使用 Docker
claude mcp add circleci-mcp-server -e CIRCLECI_TOKEN=your-circleci-token -e CIRCLECI_BASE_URL=https://circleci.com -- docker run --rm -i -e CIRCLECI_TOKEN -e CIRCLECI_BASE_URL circleci/mcp-server-circleci
使用自托管远程 MCP 服务器
参见 自托管远程 MCP 服务器 以及其中的 Claude Code 客户端设置。
Windsurf
先决条件:
- CircleCI Personal API token(了解更多)
- NPX:Node.js >= v18 和 pnpm
- Docker:Docker
在本地 MCP 服务器中使用 NPX
将以下内容添加到你的 Windsurf mcp_config.json:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci@latest"],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
在本地 MCP 服务器中使用 Docker
将以下内容添加到你的 Windsurf mcp_config.json:
{
"mcpServers": {
"circleci-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"-e",
"MAX_MCP_OUTPUT_LENGTH",
"circleci/mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
使用自托管远程 MCP 服务器
参见 自托管远程 MCP 服务器。在你的 Windsurf mcp_config.json 中使用按用户客户端配置。
Amazon Q Developer CLI
先决条件:
Amazon Q Developer 中的 MCP 客户端配置以 JSON 格式存储在名为 mcp.json 的文件中。支持两个配置层级:
- 全局:
~/.aws/amazonq/mcp.json— 适用于所有工作区 - 工作区:
.amazonq/mcp.json— 特定于当前工作区
如果两个文件都存在,其内容会合并。发生冲突时,工作区配置优先。
在本地 MCP 服务器中使用 NPX
编辑 ~/.aws/amazonq/mcp.json 或创建 .amazonq/mcp.json,内容如下:
{
"mcpServers": {
"circleci-local": {
"command": "npx",
"args": [
"-y",
"@circleci/mcp-server-circleci@latest"
],
"env": {
"CIRCLECI_TOKEN": "YOUR_CIRCLECI_TOKEN",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
},
"timeout": 60000
}
}
}
使用自托管远程 MCP 服务器
参见 自托管远程 MCP 服务器。按照 Claude Desktop 和 CLI 客户端 中的说明使用包装脚本,然后使用 q mcp add 注册。
Amazon Q Developer(IDE 中)
先决条件:
在本地 MCP 服务器中使用 NPX
编辑 ~/.aws/amazonq/mcp.json 或创建 .amazonq/mcp.json,内容如下:
{
"mcpServers": {
"circleci-local": {
"command": "npx",
"args": [
"-y",
"@circleci/mcp-server-circleci@latest"
],
"env": {
"CIRCLECI_TOKEN": "YOUR_CIRCLECI_TOKEN",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
},
"timeout": 60000
}
}
}
使用自托管远程 MCP 服务器
参见 自托管远程 MCP 服务器。按照 Claude Desktop 和 CLI 客户端 中的说明使用包装脚本,然后通过 MCP 配置 UI 添加:
- 访问 MCP 配置 UI
- 选择 + 符号
- 选择范围:全局 或 本地
- 输入名称(例如
circleci-remote-mcp) - 选择传输协议:stdio
- 输入脚本的命令路径
- 点击 保存
Smithery
通过 Smithery 为 Claude Desktop 自动安装 CircleCI MCP 服务器:
npx -y @smithery/cli install @CircleCI-Public/mcp-server-circleci --client claude
自托管远程 MCP 服务器
集中运行 MCP 服务器(例如在 Kubernetes 或 Docker 上),让团队共享一个部署。选择开发者的认证方式:
选择部署模式
| 模式 | 适用场景 | 服务器设置 | 客户端设置 | CircleCI 审计记录 |
|---|---|---|---|---|
| 按用户 token(推荐) | 使用 SSO 支持的 Personal API Token 的团队 | REQUIRE_REQUEST_TOKEN=true,无服务器 PAT | 每位开发者转发自己的 PAT | 按开发者 |
| 共享 token(临时) | 快速上线,可接受单一服务身份 | 服务器上的 CIRCLECI_TOKEN,REQUIRE_REQUEST_TOKEN=false(显式选择退出) | 无需认证头 | 单一共享身份 |
安全性: 远程模式下默认开启请求认证。共享 token 模式会禁用它(
REQUIRE_REQUEST_TOKEN=false),使任何调用者都能以服务器的CIRCLECI_TOKEN身份操作而无需凭据——包括触发任意配置的流水线。仅在完全可信的网络中启用此模式,否则请优先使用按用户 token。由于这种组合在公共接口上不安全,当
REQUIRE_REQUEST_TOKEN=false与非回环绑定地址组合时,服务器拒绝启动,除非你使用MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true明确接受风险。Host/Origin检查不能替代认证——参见下面的 DNS 重绑定保护。
1. 部署服务器
两种模式都使用远程 HTTP 模式(start=remote)。发布端口 8000(或你选择的端口)。
按用户 token(推荐)— 通过 mcp-remote 从 localhost 访问:
docker run --rm -p 8000:8000 \
-e start=remote \
-e port=8000 \
-e REQUIRE_REQUEST_TOKEN=true \
circleci/mcp-server-circleci
按用户 token(推荐)— 通过 mcp-remote 从公共主机名访问:
docker run --rm -p 8000:8000 \
-e start=remote \
-e port=8000 \
-e REQUIRE_REQUEST_TOKEN=true \
-e MCP_ALLOWED_HOSTS=my-mcp.example.com \
circleci/mcp-server-circleci
共享 token(临时)— 通过 mcp-remote 从公共主机名访问:
由于此模式会将组织的 PAT 提供给任何无需凭据的调用者,因此只能在发布的端口无法从未受信任网络访问的环境中运行,并且你必须明确确认这一点,否则服务器将拒绝启动:
docker run --rm -p 8000:8000 \
-e start=remote \
-e port=8000 \
-e CIRCLECI_TOKEN=your-shared-circleci-pat \
-e REQUIRE_REQUEST_TOKEN=false \
-e MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true \
-e MCP_ALLOWED_HOSTS=my-mcp.example.com \
circleci/mcp-server-circleci
建议改为在端口前部署认证——要求 SSO、mTLS 或 API key 的入口——或者改用上面的按用户 token。
环境变量:
| 变量 | 说明 |
|---|---|
start=remote | 启动 HTTP+SSE MCP 服务器而非 stdio |
port | 容器内的监听端口(默认:8000) |
REQUIRE_REQUEST_TOKEN | 拒绝没有 Authorization: Bearer 或 Circle-Token 头的请求。默认为必需;设置 REQUIRE_REQUEST_TOKEN=false 以允许未认证请求(共享令牌模式) |
CIRCLECI_TOKEN | 当未发送按用户头时,所有请求使用的共享回退 PAT |
CIRCLECI_BASE_URL | 可选——仅本地部署(on-prem)需要(默认:https://circleci.com) |
DISABLE_TELEMETRY=true | 选择退出使用指标导出 |
MCP_ALLOWED_HOSTS | 允许的附加 Host 头值的逗号分隔列表(例如 my-mcp.example.com,my-mcp.example.com:443)。环回主机名始终允许。任何非环回部署都需要设置。 |
MCP_ALLOWED_ORIGINS | 允许的附加 Origin 头值的逗号分隔列表(例如 https://my-app.example.com)。环回来源始终允许。仅当浏览器直接访问此服务器时需要(而非通过 mcp-remote)。 |
MCP_BIND_HOST | 要绑定的网络接口(默认:0.0.0.0)。设置为 127.0.0.1 以限制为仅环回(与 Docker -p 端口映射不兼容)。 |
MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS | 使用 REQUIRE_REQUEST_TOKEN=false 在非环回绑定地址上启动时需要(=true)。确认任何能够访问该端口的对等方无需凭据即可充当服务器的 CIRCLECI_TOKEN 身份。当请求令牌为必需时无效果。 |
MCP_FILE_OUTPUT_ROOTS | 文件读取/写入工具可以使用的附加目录的逗号分隔列表(例如 /srv/reports,/data/exports)。工作目录、主目录和临时目录始终允许。请参阅下面的说明。 |
文件输出位置(适用于 stdio 和远程传输): 接受文件系统路径的工具——
get_build_failure_logs(outputDir)、download_usage_api_data(outputDir)和find_underused_resource_classes(csvFilePath)——只能读取和写入服务器的工作目录、用户主目录和系统临时目录内。在这些根目录内,隐藏配置目录(~/.ssh、~/.aws、~/.config、.git、……)、node_modules和启动代理目录会被拒绝,解析到允许根目录之外的符号链接同样会被拒绝。系统目录(/etc、/usr、/bin、/System、/Library、%SystemRoot%、……)无条件被拒绝,且无法重新启用。输出文件永远不会通过符号链接写入。如果你的检出目录位于这些根目录之外——容器中的
/workspace、/srv、/opt、辅助卷如/Volumes/work——请将MCP_FILE_OUTPUT_ROOTS设置为该目录,否则这些路径会被拒绝。对于 stdio 服务器,工作目录通常已经是项目根目录,因此无需配置。这主要影响远程传输,因为路径来自网络客户端而非本地用户。
DNS 重绑定防护(非认证): 远程传输在每个
/mcp请求上验证Host头。默认仅接受环回地址(localhost、127.0.0.1、[::1])。公共部署必须将MCP_ALLOWED_HOSTS设置为 客户端使用的主机名,否则所有/mcp请求将收到403 Forbidden。/ping健康检查端点不受保护,因此负载均衡器探针无论Host如何设置都能继续工作。
Origin头(由浏览器发送)在存在时也会被验证。诸如mcp-remote之类的非浏览器客户端从不发送Origin,因此不受此检查影响。此检查不是访问控制,绝不能将其视为访问控制。 两个头都由调用方选择,因此任何非浏览器客户端——curl、脚本、原始套接字——都可以发送允许的
Host并省略Origin来满足检查。其唯一目的是阻止浏览器被攻击者控制的 DNS 指向服务器,这就是 DNS 重绑定威胁。对调用方进行认证是REQUIRE_REQUEST_TOKEN(或端口前的认证代理)的职责。要求Origin头会破坏每个合法的 CLI 客户端,同时却无法阻止任何攻击者。在反向代理后面: 如果你的代理将
Host重写为后端地址(nginx 的默认行为),请添加proxy_set_header Host $host;以传递原始主机名,然后将MCP_ALLOWED_HOSTS设置为该公共主机名。或者,将MCP_ALLOWED_HOSTS设置为代理确实转发的主机名。
服务器通过以下方式接受按请求令牌:
Authorization: Bearer <circleci-pat>Circle-Token: <circleci-pat>
如果客户端发送了头令牌,则其优先级高于服务器上的 CIRCLECI_TOKEN。
请求期间记录的遥测指标使用与该请求相同的令牌导出。
2. 配置客户端
大多数 MCP 客户端仅支持本地(stdio)进程。使用 mcp-remote(一个第三方 stdio 到 HTTP 的桥接工具)将它们连接到你的远程服务器。
URL 方案: 本地测试使用
http://localhost:8000/mcp配合--allow-http。生产环境中,在入口/负载均衡器处终止 TLS,并使用https://your-host/mcp而不使用--allow-http。
Windows: 避免在
--header值的冒号周围出现空格。将完整的Bearer <token>值放入环境变量中。
安全: 示例使用
npx以方便起见。对于生产环境或团队推广,请在 MCP 配置中固定特定版本(例如mcp-remote@0.1.38而不是mcp-remote)。不要使用低于0.1.16的版本(CVE-2025-6514)。
客户端配置:按用户令牌
每个开发者每次请求都转发自己的 CircleCI Personal API Token:
{
"inputs": [
{
"type": "promptString",
"id": "circleci-token",
"description": "CircleCI API Token",
"password": true
}
],
"mcpServers": {
"circleci-mcp-server-remote": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:8000/mcp",
"--allow-http",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer ${input:circleci-token}"
}
}
}
}
将 http://localhost:8000/mcp 替换为你团队的服务器 URL。Cursor 和 VS Code 支持 ${input:...} 提示;其他客户端可以直接设置 AUTH_HEADER。
客户端配置:共享令牌
当服务器设置了 CIRCLECI_TOKEN 并使用 REQUIRE_REQUEST_TOKEN=false 启动时(请求认证默认开启且必须显式禁用,非环回绑定还需要 MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true),客户端无需发送令牌:
{
"mcpServers": {
"circleci-mcp-server-remote": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:8000/mcp",
"--allow-http"
]
}
}
}
Claude Desktop 和 CLI 客户端
创建包装脚本(例如 circleci-remote-mcp.sh):
#!/bin/bash
export AUTH_HEADER="Bearer your-circleci-token"
npx mcp-remote http://localhost:8000/mcp --allow-http --header "Authorization:${AUTH_HEADER}"
使其可执行(chmod +x circleci-remote-mcp.sh),然后在 MCP 配置中引用它:
{
"mcpServers": {
"circleci-remote-mcp-server": {
"command": "/full/path/to/circleci-remote-mcp.sh"
}
}
}
Claude Code
claude mcp add circleci-mcp-server \
-e AUTH_HEADER="Bearer your-circleci-token" \
-- npx mcp-remote http://localhost:8000/mcp --allow-http --header "Authorization:${AUTH_HEADER}"
使用共享令牌服务器时省略 --header 和 AUTH_HEADER。
3. 验证部署
# Health check (no auth required)
curl http://localhost:8000/ping
# Should return 401 when REQUIRE_REQUEST_TOKEN=true and no token is sent
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
# Should return 200 with a valid Bearer token and MCP Accept headers
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer your-circleci-pat" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
演示
观看实际运行
示例:"找到我分支上最近失败的管道并获取日志" ——更多示例请参阅维基。
https://github.com/user-attachments/assets/3c765985-8827-442a-a8dc-5069e01edb74
工具详情
config_helper
通过提供指导和验证来协助 CircleCI 配置任务。
- 验证你的
.circleci/config.yml是否存在语法和语义错误 - 提供详细的验证结果和配置建议
- 示例:"验证我的 CircleCI 配置"
download_usage_api_data
从 CircleCI Usage API 下载指定组织的使用数据。接受灵活日期输入(例如 "March 2025" 或 "last month")。仅限云版本功能。
选项 1: 通过提供以下内容启动新的导出任务:
orgId、startDate、endDate(最多 32 天)、outputDir
选项 2: 通过提供以下内容检查/下载现有导出任务:
orgId、jobId、outputDir
返回包含指定时间范围内 CircleCI 使用数据的 CSV 文件。
[!NOTE] 使用数据可以输入到
find_underused_resource_classes工具中进行成本优化分析。
find_flaky_tests
通过分析测试执行历史来识别 CircleCI 项目中的不稳定测试。利用 CircleCI 的不稳定测试检测功能。
此工具可以通过三种方式使用:
-
使用项目 Slug(推荐):
- 首先使用
list_followed_projects获取你的项目,然后: - 示例:"获取 my-project 的不稳定测试"
- 首先使用
-
使用 CircleCI 项目 URL:
- 示例:"查找 https://app.circleci.com/pipelines/github/org/repo 中的不稳定测试"
-
使用本地项目上下文:
- 通过提供工作区根目录和 git 远程 URL 从本地工作区工作
- 示例:"查找我当前项目中的不稳定测试"
输出模式:
- 文本(默认): 以文本格式返回不稳定测试详情
- 文件(需要
FILE_OUTPUT_DIRECTORY环境变量):创建包含不稳定测试详情的目录
find_underused_resource_classes
分析 CircleCI 使用数据 CSV 文件,查找平均或最大 CPU/RAM 使用率低于给定阈值(默认:40%)的任务。
提供从 download_usage_api_data 获取的 CSV 文件。
返回按项目和工作流组织的未充分利用任务列表(Markdown 格式)——有助于识别成本优化机会。
get_build_failure_logs
从 CircleCI 构建中检索详细的失败日志。此工具可以通过三种方式使用:
-
使用项目 Slug 和分支(推荐):
- 首先使用
list_followed_projects获取你的项目,然后: - 示例:"获取 my-project 主分支上的构建失败信息"
- 首先使用
-
使用 CircleCI URL:
- 直接提供失败的任务 URL 或管道 URL
- 示例:"从 https://app.circleci.com/pipelines/github/org/repo/123 获取日志"
-
使用本地项目上下文:
- 通过提供工作区根目录、git 远程 URL 和分支名称从本地工作区工作
- 示例:"查找我当前分支上最近失败的管道"
该工具返回格式化的日志,包括:
- 任务名称
- 逐步执行详情
- 失败消息和上下文
get_job_test_results
检索 CircleCI 任务的测试元数据,让你无需离开 IDE 即可分析测试结果。此工具可以通过三种方式使用:
-
使用项目 Slug 和分支(推荐):
- 示例:"获取 my-project 主分支上的测试结果"
-
使用 CircleCI URL:
- 任务 URL:
https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def/jobs/789 - 工作流 URL:
https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def - 管道 URL:
https://app.circleci.com/pipelines/github/org/repo/123
- 任务 URL:
-
使用本地项目上下文:
- 通过提供工作区根目录、git 远程 URL 和分支名称从本地工作区工作
该工具返回:
- 所有测试的摘要(总数、成功数、失败数)
- 失败测试的详细信息:名称、类、文件、错误消息、持续时间
- 成功测试列表及耗时
- 按测试结果过滤
[!NOTE] 测试元数据必须在你的 CircleCI 配置中设置。设置说明请参阅收集测试数据。
get_latest_pipeline_status
检索给定分支的最新流水线状态。此工具可通过以下三种方式使用:
-
使用项目标识和分支(推荐):
- 示例:"获取 my-project 在 main 分支上的最新流水线状态"
-
使用 CircleCI 项目 URL:
- 示例:"获取 https://app.circleci.com/pipelines/github/org/repo 的最新流水线状态"
-
使用本地项目上下文:
- 通过提供工作区根目录、git 远程 URL 和分支名称,从本地工作区运行
示例输出:
---
Workflow: build
Status: success
Duration: 5 minutes
Created: 4/20/2025, 10:15:30 AM
Stopped: 4/20/2025, 10:20:45 AM
---
Workflow: test
Status: running
Duration: unknown
Created: 4/20/2025, 10:21:00 AM
Stopped: in progress
list_artifacts
检索 CircleCI 作业生成的工作产物列表。此工具可通过以下三种方式使用:
-
使用项目标识和分支(推荐):
- 首先使用
list_followed_projects获取您的项目,然后: - 示例:"列出 my-project 在 main 分支上的工作产物"
- 首先使用
-
使用 CircleCI URL:
- 作业 URL:
https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/789 - 工作流 URL:
https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def - 流水线 URL:
https://app.circleci.com/pipelines/gh/organization/project/123
- 作业 URL:
-
使用本地项目上下文:
- 通过提供工作区根目录、git 远程 URL 和分支名称,从本地工作区运行
适用于:
- 查找构建产物(二进制文件、报告、日志)的下载 URL
- 检查流水线运行生成了哪些工作产物
list_component_versions
列出环境中特定 CircleCI 组件的所有版本。包括部署状态、提交信息和时间戳。
如果未提供组件和环境,工具将提示您进行选择。
适用于:
- 识别当前线上运行的版本
- 选择回滚操作的目标版本
- 获取部署详细信息(流水线、工作流、作业)
list_followed_projects
列出用户在 CircleCI 上关注的所有项目。
- 显示您有权限访问的所有项目及其
projectSlug - 示例:"列出我的 CircleCI 项目"
示例输出:
Projects followed:
1. my-project (projectSlug: gh/organization/my-project)
2. another-project (projectSlug: gh/organization/another-project)
[!NOTE] 许多其他 CircleCI 工具需要
projectSlug(而非项目名称)。
rerun_workflow
从工作流起点或失败作业处重新运行工作流。
返回新创建工作流的 ID 以及用于监控其运行的链接。
run_pipeline
触发流水线运行。此工具可通过以下三种方式使用:
-
使用项目标识和分支(推荐):
- 示例:"为 my-project 在 main 分支上运行流水线"
-
使用 CircleCI URL:
- 流水线 URL、工作流 URL、作业 URL 或带分支的项目 URL
- 示例:"为 https://app.circleci.com/pipelines/github/org/repo/123 运行流水线"
-
使用本地项目上下文:
- 通过提供工作区根目录、git 远程 URL 和分支名称,从本地工作区运行
工具返回一个用于监控流水线执行的链接。
run_rollback_pipeline
触发 CircleCI 项目的回滚。该工具会以交互方式引导您完成以下步骤:
- 项目选择 — 列出关注的项目供您选择
- 环境选择 — 列出可用环境(如果只有一个则自动选择)
- 组件选择 — 列出可用组件(如果只有一个则自动选择)
- 版本选择 — 显示可用版本;您选择回滚目标
- 回滚模式检测 — 检查是否配置了回滚流水线
- 执行回滚 — 两个选项:
- 流水线回滚: 触发回滚流水线
- 工作流重跑: 使用工作流 ID 重新运行先前的工作流
- 确认 — 在执行前进行总结并确认
故障排除
快速修复
最常见的问题:
-
清除包缓存:
npx clear-npx-cache npm cache clean --force -
强制使用最新版本: 在配置中添加
@latest:"args": ["-y", "@circleci/mcp-server-circleci@latest"] -
完全重启您的 IDE(不仅仅是重新加载窗口)
身份验证问题
- 无效令牌错误: 在个人 API 令牌中验证您的
CIRCLECI_TOKEN - 权限错误: 确保令牌对您的项目具有读取权限
- 环境变量未加载: 使用
echo $CIRCLECI_TOKEN(Mac/Linux)或echo %CIRCLECI_TOKEN%(Windows)进行测试
连接和网络问题
- 基础 URL: 确认
CIRCLECI_BASE_URL为https://circleci.com - 企业网络: 如果在防火墙后面,请配置 npm 代理设置
- 防火墙阻止: 检查安全软件是否阻止了包下载
系统要求
- Node.js 版本: 确保 >= 18.0.0 且带有
node --version - 更新 Node.js: 如果遇到兼容性问题,请考虑使用最新的 LTS 版本
- 包管理器: 验证 npm/pnpm 是否正常工作:
npm --version
IDE 特定问题
- 配置文件位置: 仔细检查您操作系统的路径
- 语法错误: 验证配置文件中的 JSON 语法
- 控制台日志: 检查 IDE 开发者控制台以获取具体错误
- 尝试其他 IDE: 在另一个受支持的编辑器中测试以隔离问题
进程问题
挂起的进程 — 终止现有的 MCP 进程:
# Mac/Linux:
pkill -f "mcp-server-circleci"
# Windows:
taskkill /f /im node.exe
端口冲突: 如果连接似乎被阻塞,请重启您的 IDE。
高级调试
- 直接测试包:
npx @circleci/mcp-server-circleci@latest --help - 详细日志记录:
DEBUG=* npx @circleci/mcp-server-circleci@latest - Docker 备选方案: 如果 npx 持续失败,请尝试 Docker 安装
仍然需要帮助?
- 在 GitHub Issues 中查看类似问题
- 报告问题时请包含您的操作系统、Node 版本和 IDE
- 分享 IDE 控制台中的相关错误消息
遥测
服务器支持用于跟踪工具使用情况的 OpenTelemetry 指标。除非您设置 DISABLE_TELEMETRY=true,否则指标会被导出。在远程部署中,指标使用与请求相同的令牌(每个用户的 PAT 或共享服务器 PAT)。
| 指标 | 描述 |
|---|---|
circleci.mcp.tool.invocations | 工具调用次数 |
circleci.mcp.tool.duration_ms | 执行时间(毫秒) |
circleci.mcp.tool.errors | 错误计数 |
开发
开始使用
-
克隆仓库:
git clone https://github.com/CircleCI-Public/mcp-server-circleci.git cd mcp-server-circleci -
安装依赖:
pnpm install -
构建项目:
pnpm build
构建 Docker 容器
您可以使用以下命令在本地构建 Docker 容器:
docker build -t circleci:mcp-server-circleci .
这将创建一个标记为 circleci:mcp-server-circleci 的 Docker 镜像,可用于任何 MCP 客户端。
本地 stdio 模式(单个开发者,令牌在客户端上):
docker run --rm -i \
-e CIRCLECI_TOKEN=your-circleci-token \
-e CIRCLECI_BASE_URL=https://circleci.com \
circleci/mcp-server-circleci
远程模式(团队的集中式服务器):参见自托管远程 MCP 服务器。
使用 MCP Inspector 进行开发
在 MCP 服务器上进行迭代开发的最简单方式是使用 MCP inspector。您可以在 https://modelcontextprotocol.io/docs/tools/inspector 了解更多关于 MCP inspector 的信息。
-
启动开发服务器:
pnpm watch # Keep this running in one terminal -
在单独的终端中启动 inspector:
pnpm inspector -
配置环境:
- 在 inspector UI 的"环境变量"部分添加您的
CIRCLECI_TOKEN - 该令牌需要对您的 CircleCI 项目具有读取权限
- 可选:设置您的 CircleCI 基础 URL(默认为
https://circleci.com)
- 在 inspector UI 的"环境变量"部分添加您的
测试
-
运行测试套件:
pnpm test -
在开发期间以监视模式运行测试:
pnpm test:watch
有关更详细的贡献指南,请参阅 CONTRIBUTING.md