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 伺服器
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 權杖,請參閱自管理遠端 MCP 伺服器。
Cursor
先決條件:
- CircleCI 個人 API 權杖(深入了解)
- NPX:Node.js
^22.23.4 || ^24.22.1 || >=26.12.1與 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為選用 — 僅限自架(on-prem)客戶使用。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 個人 API 權杖(深入了解)
- NPX:Node.js
^22.23.4 || ^24.22.1 || >=26.12.1與 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 個人 API 權杖(深入了解)
- NPX:Node.js
^22.23.4 || ^24.22.1 || >=26.12.1與 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 設定,點選左側邊欄的 Developer,然後點選 Edit Config。設定檔位於:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Claude Code
先決條件:
- CircleCI 個人 API 權杖(深入了解)
- NPX:Node.js
^22.23.4 || ^24.22.1 || >=26.12.1與 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 個人 API 權杖(深入了解)
- NPX:Node.js
^22.23.4 || ^24.22.1 || >=26.12.1與 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
先決條件:
- CircleCI 個人 API 權杖(深入了解)
- NPX:Node.js
^22.23.4 || ^24.22.1 || >=26.12.1與 pnpm
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
先決條件:
- CircleCI 個人 API 權杖(深入了解)
- NPX:Node.js
^22.23.4 || ^24.22.1 || >=26.12.1與 pnpm
在本機 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 設定介面加入它:
- 存取 MCP 設定介面
- 選擇 + 符號
- 選擇範圍:global 或 local
- 輸入名稱(例如
circleci-remote-mcp) - 選擇傳輸協定:stdio
- 輸入您指令碼的命令路徑
- 點選 Save
Smithery
若要透過 Smithery 自動為 Claude Desktop 安裝 CircleCI MCP 伺服器:
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身分行動 — 包括以任意設定觸發管線。僅在您完全信任的網路上啟用它,否則請優先使用每位使用者的權杖。在入口(ingress)終止 TLS 提供的是加密,而非驗證。由於該組合在公開介面上並不安全,當
REQUIRE_REQUEST_TOKEN=false與非回送(non-loopback)繫結位址結合時,伺服器會拒絕啟動,除非您以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 中的不穩定測試偵測功能。
此工具有三種使用方式:
-
使用專案 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 在 main 分支上的建置失敗」
- 先使用
-
使用 CircleCI URL:
- 直接提供失敗的工作 URL 或管線 URL
- 範例:「從 https://app.circleci.com/pipelines/github/org/repo/123 取得日誌」
-
使用本機專案內容:
- 提供工作區根目錄、git 遠端 URL 與分支名稱,即可從本機工作區運作
- 範例:「尋找目前分支上最新失敗的管線」
此工具傳回格式化的日誌,包括:
- 工作名稱
- 逐步執行詳細資料
- 失敗訊息與內容
get_job_test_results
擷取 CircleCI 工作的測試中繼資料,讓您無需離開 IDE 即可分析測試結果。此工具有三種使用方式:
-
使用專案 Slug 與分支(建議):
- 範例:「取得 my-project 在 main 分支上的測試結果」
-
使用 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
擷取指定分支最新管線的狀態。此工具可透過三種方式使用:
-
使用專案 Slug 與分支(建議):
- 範例:「取得 my-project 在 main 分支上最新管線的狀態」
-
使用 CircleCI 專案 URL:
- 範例:「取得 https://app.circleci.com/pipelines/github/org/repo 最新管線的狀態」
-
使用本機專案內容:
- 透過提供工作區根目錄、git remote 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 作業所產生的成品清單。此工具可透過三種方式使用:
-
使用專案 Slug 與分支(建議):
- 先使用
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 remote 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
觸發管線執行。此工具可透過三種方式使用:
-
使用專案 Slug 與分支(建議):
- 範例:「執行 my-project 在 main 分支上的管線」
-
使用 CircleCI URL:
- 管線 URL、工作流程 URL、作業 URL,或含分支的專案 URL
- 範例:「執行 https://app.circleci.com/pipelines/github/org/repo/123 的管線」
-
使用本機專案內容:
- 透過提供工作區根目錄、git remote URL 與分支名稱,從您的本機工作區運作
工具會傳回用於監控管線執行的連結。
run_rollback_pipeline
觸發 CircleCI 專案的回滾。工具會以互動方式引導您完成:
- 專案選擇 — 列出追蹤的專案供您選擇
- 環境選擇 — 列出可用環境(若只有一個則自動選取)
- 元件選擇 — 列出可用元件(若只有一個則自動選取)
- 版本選擇 — 顯示可用版本;您選擇回滾的目標
- 回滾模式偵測 — 檢查是否已設定回滾管線
- 執行回滾 — 兩個選項:
- 管線回滾: 觸發回滾管線
- 工作流程重新執行: 使用其工作流程 ID 重新執行先前的工作流程
- 確認 — 在執行前進行摘要與確認
疑難排解
快速修正
最常見的問題:
-
清除套件快取:
npx clear-npx-cache npm cache clean --force -
強制使用最新版本: 將
@latest加入您的設定:"args": ["-y", "@circleci/mcp-server-circleci@latest"] -
完全重新啟動您的 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 安裝
仍需要協助?
- 查看 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
遠端模式(供團隊使用的集中式伺服器):請參閱 Self-Managed Remote MCP Server。
使用 MCP Inspector 進行開發
反覆開發 MCP Server 最簡單的方式是使用 MCP inspector。您可以在 https://modelcontextprotocol.io/docs/tools/inspector 進一步了解 MCP inspector
-
啟動開發伺服器:
pnpm watch # Keep this running in one terminal -
在另一個終端機中啟動 inspector:
pnpm inspector -
設定環境:
- 在 inspector UI 的 Environment Variables 區段中加入您的
CIRCLECI_TOKEN - 權杖需要您 CircleCI 專案的讀取權限
- 可選擇設定您的 CircleCI 基底 URL(預設為
https://circleci.com)
- 在 inspector UI 的 Environment Variables 區段中加入您的
測試
-
執行測試套件:
pnpm test -
在開發期間以監看模式執行測試:
pnpm test:watch
如需更詳細的貢獻指南,請參閱 CONTRIBUTING.md