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 Server
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為選用 — 僅供內部部署(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 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 設定,按一下左側邊欄中的 Developer,然後按一下 Edit Config。設定檔位於:
- 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 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 設定 UI 新增:
- 存取 MCP 設定 UI
- 選擇 + 符號
- 選擇範圍: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 稽核軌跡 |
|---|---|---|---|---|
| 每位使用者 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。在入口終止 TLS 僅提供加密,而非驗證。由於該組合在公開介面上不安全,當
REQUIRE_REQUEST_TOKEN=false與非迴環(non-loopback)綁定位址組合時,伺服器拒絕啟動,除非您使用MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true明確接受風險。Host/Origin檢查不能取代驗證 — 請參閱下方的 DNS-rebinding 保護。
1. 部署伺服器
兩種模式都使用遠端 HTTP 模式(start=remote)。發布連接埠 8000(或您選擇的連接埠)。
每位使用者 token(建議)— 從 localhost 透過 mcp-remote 存取:
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 金鑰的入口 — 或改用上述的每位使用者 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)。迴路(loopback)主機名稱一律允許。任何非迴路部署皆為必填。 |
MCP_ALLOWED_ORIGINS | 允許的額外 Origin 標頭值逗號分隔清單(例如 https://my-app.example.com)。迴路來源(origin)一律允許。僅在瀏覽器直接連線到此伺服器時需要(非透過 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和啟動代理(launch-agent)目錄會被拒絕,解析到允許根目錄之外的符號連結(symlink)也會被拒絕。系統目錄(/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、指令碼、原始 socket — 都可以傳送允許的
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 個人 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"}}}'
示範
觀看實際運作
範例:「找出我分支上最新失敗的 pipeline 並取得日誌」 — 更多範例請參閱 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 專案中的不穩定測試(flaky tests)。利用 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 或 pipeline URL
- 範例:「從 https://app.circleci.com/pipelines/github/org/repo/123 取得日誌」
-
使用本機專案內容:
- 從您的本機工作區運作,提供工作區根目錄、git 遠端 URL 和分支名稱
- 範例:「找出我目前分支上最新失敗的 pipeline」
此工具傳回格式化日誌,包括:
- 任務名稱
- 逐步執行詳細資訊
- 失敗訊息和內容
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 - Pipeline 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 遠端 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 遠端 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 遠端 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)進行測試
連線與網路問題
- Base 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
遠端模式(團隊的集中式伺服器):請參閱 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 -
設定環境:
- 將您的
CIRCLECI_TOKEN加入 inspector UI 中的 Environment Variables 區段 - 權杖需要對您的 CircleCI 專案具有讀取權限
- 可選擇性地設定您的 CircleCI Base URL(預設為
https://circleci.com)
- 將您的
測試
-
執行測試套件:
pnpm test -
在開發期間以監看模式執行測試:
pnpm test:watch
如需更詳細的貢獻指南,請參閱 CONTRIBUTING.md