mcpField
C
CircleCI MCP Server

CircleCI MCP Server

本地服务
github.com/CircleCI-Public云与基础设施941 周前更新

关于 CircleCI MCP Server

CircleCI MCP Server 是一个已弃用的 MCP 服务,可供兼容客户端操作 CircleCI。它提供流水线管理、构建诊断、测试分析、配置指导和使用数据工具;项目建议迁移至 CircleCI 托管服务或 CircleCI CLI MCP。

主要功能

  1. 01查看流水线状态并触发运行
  2. 02重跑工作流并回滚项目
  3. 03获取构建日志、测试结果和制品
  4. 04查找不稳定测试及资源浪费
  5. 05验证 CircleCI 配置
  6. 06下载使用数据

适用场景

  1. 01排查 CircleCI 构建失败
  2. 02检查测试不稳定和资源使用
  3. 03启动或重跑项目流水线

MCP 相关

它向 MCP 客户端提供 CircleCI 操作和数据工具,并使用 CircleCI Personal API token。该仓库已弃用,建议迁移至 CircleCI 托管 MCP 服务或 CircleCI CLI MCP。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"circleci": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
启动命令npx -y @smithery/cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@smithery/cli

工具

13

收录的工具列表 · 更新于 3 周前

参数类型必填说明
paramsobject否
params.projectSlugstring否从 listFollowedProjects 工具获取的项目 slug(例如,"gh/organization/project")。使用此选项时,还必须提供 branch。
params.branchstring否当前在本地工作区中检出的分支名称。此名称应与本地 git 分支一致。例如:"feature/my-branch"、"bugfix/123"、"main"、"master" 等。
params.projectURLstring否CircleCI 项目的 URL。可以是以下任意格式: - 带分支的项目 URL:https://app.circleci.com/pipelines/gh/organization/project?branch=feature-branch - Pipeline URL:https://app.circleci.com/pipelines/gh/organization/project/123 - Workflow URL:https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def - Job URL:https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/xyz
params.workspaceRootstring否项目工作区根目录的绝对路径。该目录应为包含源代码、配置文件和依赖项的顶层文件夹。例如:"/home/user/my-project" 或 "C:\Users\user\my-project"
params.gitRemoteURLstring否git 远程仓库的 URL。该 URL 应指向克隆到本地工作区的仓库。例如:"https://github.com/user/my-project.git"
params.outputDirstring否可选。提供此参数后,完整构建日志将写入此目录中的文件,并返回文件路径。对于大型日志,请使用此参数以避免截断。如有工作区/项目根目录,请使用该目录(例如,"/home/user/my-project");否则使用 Downloads 文件夹(例如,"~/Downloads")。必须位于当前工作目录、用户主目录或临时目录中。系统路径和隐藏配置目录(例如,"/etc"、"~/.ssh")将被拒绝。

详细介绍

重要

此软件包已弃用。请迁移。

@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

模型上下文协议(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 或共享 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 设置,点击左侧边栏中的 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 注册该脚本。

Amazon Q Developer in the 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 配置界面添加该脚本:

  1. 打开 MCP 配置界面
  2. 选择 + 符号
  3. 选择作用范围:全局或本地
  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(或你选择的端口)。

每用户令牌(推荐)——通过本地主机上的 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,并使用 https://your-host/mcp,不要添加 --allow-http。

**Windows:**在 --header 的值中,冒号周围不要加空格。将完整的 Bearer <token> 值放入环境变量。

**安全性:**示例为方便起见使用 npx。在生产环境或团队推广时,请在 MCP 配置中固定具体版本(例如使用 [email protected],而不是 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"}}}'

演示

观看实际演示

示例:“查找我所在分支上最新的失败流水线并获取日志” — 更多示例请参阅 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 获取的使用情况数据。支持灵活的日期输入(例如,“March 2025”或“last month”)。仅限 Cloud 使用。

选项 1: 提供以下信息以启动新的导出任务:

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

选项 2: 提供以下信息以检查或下载现有导出任务:

  • orgId、jobId、outputDir

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

说明

使用情况数据可输入 find_underused_resource_classes 工具,用于成本优化分析。

find_flaky_tests

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

此工具可通过三种方式使用:

  1. 使用项目标识(推荐):

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

    • 首先使用 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 和分支名称

此工具会返回:

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

说明

必须在 CircleCI 配置中配置测试元数据。有关设置说明,请参阅 Collect Test Data。

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)

说明

许多其他 CircleCI 工具需要的是 projectSlug(而不是项目名称)。

rerun_workflow

从工作流起点或失败的作业处重新运行工作流。

返回新建工作流的 ID 和用于监控该工作流的链接。

run_pipeline

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

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

    • 示例:“在 main 分支上运行 my-project 的流水线”
  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_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

远程模式(供团队使用的集中式服务):请参阅自管理远程 MCP 服务。

使用 MCP Inspector 进行开发

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

  1. 启动开发服务器:

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

    pnpm inspector
    
  3. 配置环境:

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

测试

  • 运行测试套件:

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

    pnpm test:watch
    

如需了解更详细的贡献指南,请参阅 CONTRIBUTING.md

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。