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 服务器

License: Apache 2.0 CircleCI npm

模型上下文协议(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

先决条件:

在本地 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 设置,点击左侧边栏中的 开发者,然后点击 编辑配置。配置文件位于:

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

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 添加:

  1. 访问 MCP 配置 UI
  2. 选择 + 符号
  3. 选择范围:全局本地
  4. 输入名称(例如 circleci-remote-mcp
  5. 选择传输协议:stdio
  6. 输入脚本的命令路径
  7. 点击 保存
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_TOKENREQUIRE_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: BearerCircle-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_logsoutputDir)、download_usage_api_dataoutputDir)和 find_underused_resource_classescsvFilePath)——只能读取和写入服务器的工作目录、用户主目录和系统临时目录内。在这些根目录内,隐藏配置目录(~/.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 头。默认仅接受环回地址(localhost127.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}"

使用共享令牌服务器时省略 --headerAUTH_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: 通过提供以下内容启动新的导出任务:

  • orgIdstartDateendDate(最多 32 天)、outputDir

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

  • orgIdjobIdoutputDir

返回包含指定时间范围内 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 主分支上的构建失败信息"
  2. 使用 CircleCI URL:

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

    • 通过提供工作区根目录、git 远程 URL 和分支名称从本地工作区工作
    • 示例:"查找我当前分支上最近失败的管道"

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

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

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

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

    • 示例:"获取 my-project 主分支上的测试结果"
  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. 使用项目标识和分支(推荐):

    • 示例:"获取 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. 使用项目标识和分支(推荐):

    • 首先使用 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. 使用项目标识和分支(推荐):

    • 示例:"为 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(不仅仅是重新加载窗口)

身份验证问题
  • 无效令牌错误:个人 API 令牌中验证您的 CIRCLECI_TOKEN
  • 权限错误: 确保令牌对您的项目具有读取权限
  • 环境变量未加载: 使用 echo $CIRCLECI_TOKEN(Mac/Linux)或 echo %CIRCLECI_TOKEN%(Windows)进行测试
连接和网络问题
  • 基础 URL: 确认 CIRCLECI_BASE_URLhttps://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 安装

仍然需要帮助?

  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

远程模式(团队的集中式服务器):参见自托管远程 MCP 服务器

使用 MCP Inspector 进行开发

在 MCP 服务器上进行迭代开发的最简单方式是使用 MCP inspector。您可以在 https://modelcontextprotocol.io/docs/tools/inspector 了解更多关于 MCP inspector 的信息。

  1. 启动开发服务器:

    pnpm watch # Keep this running in one terminal
    
  2. 在单独的终端中启动 inspector:

    pnpm inspector
    
  3. 配置环境:

    • 在 inspector UI 的"环境变量"部分添加您的 CIRCLECI_TOKEN
    • 该令牌需要对您的 CircleCI 项目具有读取权限
    • 可选:设置您的 CircleCI 基础 URL(默认为 https://circleci.com

测试

  • 运行测试套件:

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

    pnpm test:watch
    

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