CircleCI

官方

使AI代理能够修复来自CircleCI的构建失败。

你可以用 CircleCI MCP 做什么?

  • 验证配置 — 让助手通过 config_helper 验证你的 .circleci/config.yml,并获取关于语法和语义错误的指导。
  • 诊断构建失败 — 使用 get_build_failure_logs 从 CircleCI 构建中获取详细的失败日志。
  • 查找不稳定测试 — 使用 find_flaky_tests 分析项目的测试执行历史,识别不稳定测试。
  • 检查流水线状态 — 使用 get_latest_pipeline_status 获取分支最新流水线的状态。
  • 重新运行工作流 — 使用 rerun_workflow 从头开始或从失败的作业重新运行工作流。
  • 触发流水线 — 使用 run_pipeline 和 run_rollback_pipeline 运行流水线或触发项目回滚。

文档

[!IMPORTANT] 此包已弃用。请迁移。

@circleci/mcp-server-circleci 已不再进行功能开发。请改用 CircleCI 的托管 MCP 服务器或 CircleCI CLI MCP——参见 CircleCI MCP 概览。

此仓库将被归档。现有版本仍可从 npm 安装,但不建议运行一个持有 CircleCI 个人 API 令牌且无人维护的服务器。

如果你正在运行自管理远程传输(start=remote),请先迁移:托管服务器是它的直接替代方案,并且无需再运维一个面向网络、代理你组织令牌的服务。

CircleCI MCP Server

License: Apache 2.0 CircleCI npm

模型上下文协议(MCP)是一种全新的标准化协议,用于管理大型语言模型(LLM)与外部系统之间的上下文。在本仓库中,我们为 CircleCI 提供了一个 MCP 服务器。

使用 Cursor、Windsurf、Copilot、Claude 或任何兼容 MCP 的客户端,通过自然语言与 CircleCI 交互——无需离开你的 IDE。

工具

工具描述
config_helper验证你的 CircleCI 配置并获取指导
download_usage_api_data从 CircleCI 用量 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 令牌,请参见自管理远程 MCP 服务器。

Cursor

前提条件:

在本地 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

前提条件:

在本地 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

前提条件:

在本地 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 设置,点击左侧边栏中的 Developer,然后点击 Edit Config。配置文件位于:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

更多信息:https://modelcontextprotocol.io/quickstart/user

Claude Code

前提条件:

在本地 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

前提条件:

在本地 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 中使用每用户客户端配置。

更多信息:https://docs.windsurf.com/windsurf/mcp

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 注册它。

IDE 中的 Amazon Q Developer

前提条件:

在本地 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 配置界面添加它:

  1. 访问 MCP 配置界面
  2. 选择 + 符号
  3. 选择范围:global 或 local
  4. 输入名称(例如 circleci-remote-mcp)
  5. 选择传输协议:stdio
  6. 输入脚本的命令路径
  7. 点击 Save
Smithery

要通过 Smithery 为 Claude Desktop 自动安装 CircleCI MCP Server:

npx -y @smithery/cli install @CircleCI-Public/mcp-server-circleci --client claude

自管理远程 MCP 服务器

集中运行 MCP 服务器(例如在 Kubernetes 或 Docker 上),以便你的团队共享一个部署。选择开发者进行身份验证的方式:

选择部署模式

模式何时使用服务器设置客户端设置CircleCI 审计记录
每用户令牌(推荐)使用 SSO 支持的个人 API 令牌的团队REQUIRE_REQUEST_TOKEN=true,服务器上无 PAT每位开发者转发自己的 PAT按开发者
共享令牌(过渡方案)快速上线,可接受单一服务身份服务器上设置 CIRCLECI_TOKEN,REQUIRE_REQUEST_TOKEN=false(显式退出)无需认证头单一共享身份

安全: 在远程模式下,请求身份验证默认开启。共享令牌模式会禁用它(REQUIRE_REQUEST_TOKEN=false),使每个调用者都能在无凭据的情况下以服务器的 CIRCLECI_TOKEN 身份行事——包括使用任意配置触发流水线。仅在你完全信任的网络上启用它,否则优先使用每用户令牌。在入口处终止 TLS 提供的是加密,而非身份验证。

由于该组合在公共接口上不安全,当 REQUIRE_REQUEST_TOKEN=false 与非回环绑定地址组合时,服务器会拒绝启动,除非你通过 MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true 显式接受风险。Host/Origin 检查不能替代身份验证——请参见下方的 DNS 重绑定防护。

1. 部署服务器

两种模式都使用远程 HTTP 模式(start=remote)。发布端口 8000(或你选择的端口)。

每用户令牌(推荐)——通过 localhost 上的 mcp-remote 访问:

docker run --rm -p 8000:8000 \
  -e start=remote \
  -e port=8000 \
  -e REQUIRE_REQUEST_TOKEN=true \
  circleci/mcp-server-circleci

每用户令牌(推荐)——通过公共主机名上的 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

共享令牌(过渡方案)——通过公共主机名上的 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 密钥的入口——或者切换到上面的每用户令牌。

环境变量:

变量描述
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可选——仅本地部署需要(默认: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,并使用不带 --allow-http 的 https://your-host/mcp。

Windows: 避免 --header 值中冒号周围有空格。将完整的 Bearer <token> 值放入环境变量。

安全: 示例为方便起见使用 npx。对于生产或团队推广,请在 MCP 配置中固定特定版本(例如使用 mcp-remote@0.1.38 而不是 mcp-remote)。不要使用低于 0.1.16 的版本(CVE-2025-6514)。

客户端配置:每用户令牌

每个开发者在每个请求中转发自己的 CircleCI 个人 API 令牌:

{
  "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"}}}'

演示

观看实际运行

示例:“查找我分支上最新的失败流水线并获取日志” ——更多示例请参阅 wiki。

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 下载给定组织的使用数据。接受灵活的日期输入(例如“2025 年 3 月”或“上个月”)。仅限云功能。

选项 1: 通过提供以下内容启动新的导出作业:

  • orgId、startDate、endDate(最多 32 天)、outputDir

选项 2: 通过提供以下内容检查/下载现有导出作业:

  • orgId、jobId、outputDir

返回包含指定时间范围内 CircleCI 使用数据的 CSV 文件。

[!NOTE] 使用数据可以输入到 find_underused_resource_classes 工具中进行成本优化分析。

find_flaky_tests

通过分析测试执行历史来识别 CircleCI 项目中的不稳定测试。利用 CircleCI 中的不稳定测试检测功能。

此工具有三种使用方式:

  1. 使用项目 Slug(推荐):

    • 首先使用 list_followed_projects 获取你的项目,然后:
    • 示例:“获取 my-project 的不稳定测试”
  2. 使用 CircleCI 项目 URL:

  3. 使用本地项目上下文:

    • 通过提供工作区根目录和 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 构建中检索详细的失败日志。此工具有三种使用方式:

  1. 使用项目 Slug 和分支(推荐):

    • 首先使用 list_followed_projects 获取你的项目,然后:
    • 示例:“获取 my-project 在 main 分支上的构建失败”
  2. 使用 CircleCI URL:

  3. 使用本地项目上下文:

    • 通过提供工作区根目录、git 远程 URL 和分支名称,从本地工作区运行
    • 示例:“查找我当前分支上最新的失败流水线”

该工具返回格式化的日志,包括:

  • 作业名称
  • 逐步执行详情
  • 失败消息和上下文
get_job_test_results

检索 CircleCI 作业的测试元数据,让你无需离开 IDE 即可分析测试结果。此工具有三种使用方式:

  1. 使用项目 Slug 和分支(推荐):

    • 示例:“获取 my-project 在 main 分支上的测试结果”
  2. 使用 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
  3. 使用本地项目上下文:

    • 通过提供工作区根目录、git 远程 URL 和分支名称,从本地工作区运行

该工具返回:

  • 所有测试的摘要(总数、成功、失败)
  • 失败测试的详细信息:名称、类、文件、错误消息、持续时间
  • 带计时的成功测试列表
  • 按测试结果筛选

[!NOTE] 必须在 CircleCI 配置中配置测试元数据。设置说明请参阅收集测试数据。

get_latest_pipeline_status 检索给定分支的最新流水线状态。此工具可通过三种方式使用:
  1. 使用项目 Slug 和分支(推荐):

    • 示例:“获取 my-project 在 main 分支上最新流水线的状态”
  2. 使用 CircleCI 项目 URL:

  3. 使用本地项目上下文:

    • 通过提供工作区根目录、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 作业生成的产物列表。此工具可通过三种方式使用:

  1. 使用项目 Slug 和分支(推荐):

    • 首先使用 list_followed_projects 获取你的项目,然后:
    • 示例:“列出 my-project 在 main 分支上的产物”
  2. 使用 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
  3. 使用本地项目上下文:

    • 通过提供工作区根目录、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

触发流水线运行。此工具可通过三种方式使用:

  1. 使用项目 Slug 和分支(推荐):

    • 示例:“运行 my-project 在 main 分支上的流水线”
  2. 使用 CircleCI URL:

  3. 使用本地项目上下文:

    • 通过提供工作区根目录、git 远程 URL 和分支名称,从本地工作区运行

该工具返回用于监控流水线执行的链接。

run_rollback_pipeline

触发 CircleCI 项目的回滚。该工具会以交互方式引导你完成:

  1. 项目选择 — 列出已关注的项目供你选择
  2. 环境选择 — 列出可用环境(如果只有一个则自动选择)
  3. 组件选择 — 列出可用组件(如果只有一个则自动选择)
  4. 版本选择 — 显示可用版本;你选择回滚目标
  5. 回滚模式检测 — 检查是否配置了回滚流水线
  6. 执行回滚 — 两个选项:
    • 流水线回滚: 触发回滚流水线
    • 工作流重跑: 使用工作流 ID 重新运行之前的工作流
  7. 确认 — 在执行前进行汇总并确认

故障排查

快速修复

最常见的问题:

  1. 清除包缓存:

    npx clear-npx-cache
    npm cache clean --force
    
  2. 强制使用最新版本: 将 @latest 添加到你的配置中:

    "args": ["-y", "@circleci/mcp-server-circleci@latest"]
    
  3. 完全重启 IDE(不仅仅是重新加载窗口)

身份验证问题
  • 令牌无效错误: 在 Personal API Tokens 中验证你的 CIRCLECI_TOKEN
  • 权限错误: 确保令牌对你的项目具有读取权限
  • 环境变量未加载: 使用 echo $CIRCLECI_TOKEN(Mac/Linux)或 echo %CIRCLECI_TOKEN%(Windows)进行测试
连接和网络问题
  • 基础 URL: 确认 CIRCLECI_BASE_URL 为 https://circleci.com
  • 企业网络: 如果位于防火墙之后,请配置 npm 代理设置
  • 防火墙拦截: 检查安全软件是否阻止了包下载
系统要求
  • Node.js 版本: 使用 node --version 确保其满足 ^22.23.4 || ^24.22.1 || >=26.12.1
  • 更新 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 安装

仍然需要帮助?

  1. 查看 GitHub Issues 中是否有类似问题
  2. 报告问题时请包含你的操作系统、Node 版本和 IDE
  3. 分享 IDE 控制台中的相关错误消息

遥测

服务器支持用于跟踪工具使用情况的 OpenTelemetry 指标。除非你设置 DISABLE_TELEMETRY=true,否则指标会被导出。在远程部署中,指标使用与请求相同的令牌(每用户 PAT 或共享服务器 PAT)。

指标描述
circleci.mcp.tool.invocations工具调用次数
circleci.mcp.tool.duration_ms执行时间(毫秒)
circleci.mcp.tool.errors错误次数

开发

入门

  1. 克隆仓库:

    git clone https://github.com/CircleCI-Public/mcp-server-circleci.git
    cd mcp-server-circleci
    
  2. 安装依赖:

    pnpm install
    
  3. 构建项目:

    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

远程模式(面向团队的集中式服务器):请参阅 Self-Managed Remote MCP Server。

使用 MCP Inspector 进行开发

迭代开发 MCP Server 最简单的方法是使用 MCP inspector。你可以在 https://modelcontextprotocol.io/docs/tools/inspector 了解更多关于 MCP inspector 的信息

  1. 启动开发服务器:

    pnpm watch # Keep this running in one terminal
    
  2. 在另一个终端中,启动 inspector:

    pnpm inspector
    
  3. 配置环境:

    • 将你的 CIRCLECI_TOKEN 添加到 inspector UI 的 Environment Variables 部分
    • 该令牌需要对你的 CircleCI 项目具有读取权限
    • 可选地设置你的 CircleCI 基础 URL(默认为 https://circleci.com)

测试

  • 运行测试套件:

    pnpm test
    
  • 在开发期间以监视模式运行测试:

    pnpm test:watch
    

有关更详细的贡献指南,请参阅 CONTRIBUTING.md