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

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 權杖,請參閱自管理遠端 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 為選用 — 僅限自架(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

先決條件:

在本機 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 伺服器:

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 中的不穩定測試偵測功能。

此工具有三種使用方式:

  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 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 作業所產生的成品清單。此工具可透過三種方式使用:

  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 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

觸發管線執行。此工具可透過三種方式使用:

  1. 使用專案 Slug 與分支(建議):

    • 範例:「執行 my-project 在 main 分支上的管線」
  2. 使用 CircleCI URL:

  3. 使用本機專案內容:

    • 透過提供工作區根目錄、git remote 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. 設定環境:

    • 在 inspector UI 的 Environment Variables 區段中加入您的 CIRCLECI_TOKEN
    • 權杖需要您 CircleCI 專案的讀取權限
    • 可選擇設定您的 CircleCI 基底 URL(預設為 https://circleci.com)

測試

  • 執行測試套件:

    pnpm test
    
  • 在開發期間以監看模式執行測試:

    pnpm test:watch
    

如需更詳細的貢獻指南,請參閱 CONTRIBUTING.md