CircleCI
ทางการเปิดให้ AI Agents สามารถแก้ไขปัญหาการสร้างที่ล้มเหลวจาก CircleCI ได้
คุณทำอะไรได้บ้างด้วย CircleCI MCP?
- ตรวจสอบการตั้งค่า CircleCI — ขอให้ตรวจสอบ
.circleci/config.ymlของคุณสำหรับข้อผิดพลาดทางไวยากรณ์และความหมายผ่านconfig_helper - ดูสถานะไปป์ไลน์ — ตรวจสอบสถานะไปป์ไลน์ล่าสุดสำหรับสาขาด้วย
get_latest_pipeline_status - ทริกเกอร์และรันไปป์ไลน์ใหม่ — เริ่มไปป์ไลน์ใหม่ด้วย
run_pipelineหรือรันเวิร์กโฟลว์ใหม่ตั้งแต่เริ่มต้นหรือจากงานที่ล้มเหลวผ่านrerun_workflow - ตรวจสอบความล้มเหลวของการ build — ดึงบันทึกข้อผิดพลาดโดยละเอียดด้วย
get_build_failure_logsและผลการทดสอบผ่านget_job_test_results - ค้นหาการทดสอบที่ไม่เสถียร — ระบุการทดสอบที่ไม่เสถียรโดยการวิเคราะห์ประวัติการดำเนินการทดสอบโดยใช้
find_flaky_tests - วิเคราะห์การใช้งานและค่าใช้จ่าย — ดาวน์โหลดข้อมูลการใช้งานด้วย
download_usage_api_dataและค้นหาคลาสทรัพยากรที่ใช้งานน้อยผ่านfind_underused_resource_classes
เอกสาร
[!IMPORTANT] แพ็กเกจนี้เลิกใช้งานแล้ว กรุณาย้ายไปใช้เวอร์ชันอื่น
@circleci/mcp-server-circleciไม่ได้รับการพัฒนาฟีเจอร์เพิ่มเติมอีกต่อไป ให้ใช้ hosted MCP server ของ CircleCI หรือ CircleCI CLI MCP แทน — ดูรายละเอียดได้ที่ ภาพรวม CircleCI MCPพื้นที่เก็บนี้จะถูกเก็บถาวร เวอร์ชันที่มีอยู่ยังคงติดตั้งได้จาก npm แต่การรันเซิร์ฟเวอร์ที่ไม่มีการดูแลรักษาซึ่งถือ CircleCI Personal API Token ไม่ใช่สิ่งที่แนะนำ
หากคุณกำลังรัน self-managed remote transport (
start=remote) ให้ย้ายก่อน: hosted server คือตัวแทนโดยตรงและช่วยลดความจำเป็นในการดำเนินการบริการที่เปิดเผยต่อเครือข่ายซึ่งเป็นตัวกลางจัดการ token ขององค์กรคุณ
CircleCI MCP Server
Model Context Protocol (MCP) คือ โปรโตคอลมาตรฐานใหม่ สำหรับจัดการบริบทระหว่าง large language models (LLMs) และระบบภายนอก ในพื้นที่เก็บนี้ เรามอบ MCP Server สำหรับ CircleCI
ใช้ Cursor, Windsurf, Copilot, Claude หรือไคลเอนต์ที่รองรับ MCP ใดก็ได้เพื่อโต้ตอบกับ CircleCI ด้วยภาษาธรรมชาติ — โดยไม่ต้องออกจาก IDE ของคุณ
เครื่องมือ
| เครื่องมือ | คำอธิบาย |
|---|---|
config_helper | ตรวจสอบความถูกต้องและรับคำแนะนำสำหรับการกำหนดค่า CircleCI ของคุณ |
download_usage_api_data | ดาวน์โหลดข้อมูลการใช้งานจาก CircleCI Usage API |
find_flaky_tests | ระบุเทสที่ไม่เสถียร (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 | ทริกเกอร์การย้อนกลับ (rollback) สำหรับโปรเจกต์ |
การติดตั้ง
การปรับใช้แบบทีม / รวมศูนย์: หากต้องการรันเซิร์ฟเวอร์ระยะไกลที่ใช้ร่วมกันหนึ่งตัวสำหรับองค์กรของคุณ (Kubernetes, Docker ฯลฯ) พร้อม CircleCI token แบบต่อนักพัฒนาหรือแบบใช้ร่วมกัน ดู Self-Managed Remote MCP Server
Cursor
ข้อกำหนดเบื้องต้น:
- CircleCI Personal API token (เรียนรู้เพิ่มเติม)
- NPX: Node.js >= v18 และ pnpm
- Docker: Docker
การใช้ NPX ใน MCP Server ในเครื่อง
เพิ่มเนื้อหาต่อไปนี้ลงในการกำหนดค่า MCP ของ Cursor:
{
"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)
การใช้ Docker ใน MCP Server ในเครื่อง
เพิ่มเนื้อหาต่อไปนี้ลงในการกำหนดค่า MCP ของ Cursor:
{
"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"
}
}
}
}
การใช้ Self-Managed Remote MCP Server
ดู Self-Managed Remote MCP Server ใช้ การกำหนดค่าไคลเอนต์แบบต่อผู้ใช้ และเพิ่มลงในการกำหนดค่า MCP ของ Cursor (Cursor Settings → MCP)
VS Code
ข้อกำหนดเบื้องต้น:
- CircleCI Personal API token (เรียนรู้เพิ่มเติม)
- NPX: Node.js >= v18 และ pnpm
- Docker: Docker
การใช้ NPX ใน MCP Server ในเครื่อง
เพิ่มเนื้อหาต่อไปนี้ลงใน .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 จะจัดเก็บอย่างปลอดภัย
การใช้ Docker ใน MCP Server ในเครื่อง
เพิ่มเนื้อหาต่อไปนี้ลงใน .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}"
}
}
}
}
การใช้ Self-Managed Remote MCP Server
ดู Self-Managed Remote MCP Server ใช้ การกำหนดค่าไคลเอนต์แบบต่อผู้ใช้ ใน .vscode/mcp.json
Claude Desktop
ข้อกำหนดเบื้องต้น:
- CircleCI Personal API token (เรียนรู้เพิ่มเติม)
- NPX: Node.js >= v18 และ pnpm
- Docker: Docker
การใช้ NPX ใน MCP Server ในเครื่อง
เพิ่มเนื้อหาต่อไปนี้ลงใน 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"
}
}
}
}
การใช้ Docker ใน MCP Server ในเครื่อง
เพิ่มเนื้อหาต่อไปนี้ลงใน 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"
}
}
}
}
การใช้ Self-Managed Remote MCP Server
ดู Self-Managed Remote MCP Server สร้างสคริปต์ wrapper ตามที่แสดงใน 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
ข้อกำหนดเบื้องต้น:
- CircleCI Personal API token (เรียนรู้เพิ่มเติม)
- NPX: Node.js >= v18 และ pnpm
- Docker: Docker
การใช้ NPX ใน MCP Server ในเครื่อง
claude mcp add circleci-mcp-server -e CIRCLECI_TOKEN=your-circleci-token -- npx -y @circleci/mcp-server-circleci@latest
การใช้ Docker ใน MCP Server ในเครื่อง
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
การใช้ Self-Managed Remote MCP Server
ดู Self-Managed Remote MCP Server และการตั้งค่าไคลเอนต์ Claude Code ที่นั่น
Windsurf
ข้อกำหนดเบื้องต้น:
- CircleCI Personal API token (เรียนรู้เพิ่มเติม)
- NPX: Node.js >= v18 และ pnpm
- Docker: Docker
การใช้ NPX ใน MCP Server ในเครื่อง
เพิ่มเนื้อหาต่อไปนี้ลงใน mcp_config.json ของ Windsurf:
{
"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"
}
}
}
}
การใช้ Docker ใน MCP Server ในเครื่อง
เพิ่มเนื้อหาต่อไปนี้ลงใน mcp_config.json ของ Windsurf:
{
"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"
}
}
}
}
การใช้ Self-Managed Remote MCP Server
ดู Self-Managed Remote MCP Server ใช้ การกำหนดค่าไคลเอนต์แบบต่อผู้ใช้ ใน mcp_config.json ของ Windsurf
สำหรับข้อมูลเพิ่มเติม: https://docs.windsurf.com/windsurf/mcp
Amazon Q Developer CLI
ข้อกำหนดเบื้องต้น:
การกำหนดค่าไคลเอนต์ MCP ใน Amazon Q Developer ถูกจัดเก็บในรูปแบบ JSON ในไฟล์ชื่อ mcp.json รองรับการกำหนดค่าสองระดับ:
- Global:
~/.aws/amazonq/mcp.json— ใช้กับทุกเวิร์กสเปซ - Workspace:
.amazonq/mcp.json— เฉพาะเวิร์กสเปซปัจจุบัน
หากมีทั้งสองไฟล์ เนื้อหาจะถูกรวมเข้าด้วยกัน ในกรณีที่ขัดแย้งกัน การกำหนดค่าเวิร์กสเปซจะมีความสำคัญกว่า
การใช้ NPX ใน MCP Server ในเครื่อง
แก้ไข ~/.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
}
}
}
การใช้ Self-Managed Remote MCP Server
ดู Self-Managed Remote MCP Server ใช้สคริปต์ wrapper ตามที่แสดงใน Claude Desktop และไคลเอนต์ CLI จากนั้นลงทะเบียนกับ q mcp add
Amazon Q Developer ใน IDE
ข้อกำหนดเบื้องต้น:
การใช้ NPX ใน MCP Server ในเครื่อง
แก้ไข ~/.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
}
}
}
การใช้ Self-Managed Remote MCP Server
ดู Self-Managed Remote MCP Server ใช้สคริปต์ wrapper ตามที่แสดงใน Claude Desktop และไคลเอนต์ CLI จากนั้นเพิ่มผ่าน UI การกำหนดค่า MCP:
- เข้าถึง UI การกำหนดค่า MCP
- เลือกสัญลักษณ์ +
- เลือกขอบเขต: global หรือ local
- ระบุชื่อ (เช่น
circleci-remote-mcp) - เลือกโปรโตคอลการขนส่ง: stdio
- ระบุเส้นทางคำสั่งไปยังสคริปต์ของคุณ
- คลิก บันทึก
Smithery
หากต้องการติดตั้ง CircleCI MCP Server สำหรับ Claude Desktop โดยอัตโนมัติผ่าน Smithery:
npx -y @smithery/cli install @CircleCI-Public/mcp-server-circleci --client claude
Self-Managed Remote MCP Server
รัน MCP server แบบรวมศูนย์ (เช่นบน Kubernetes หรือ Docker) เพื่อให้ทีมของคุณใช้การปรับใช้ร่วมกันหนึ่งชุด เลือกวิธีที่นักพัฒนาจะยืนยันตัวตน:
เลือกโหมดการปรับใช้
| โหมด | ควรใช้เมื่อใด | การตั้งค่าเซิร์ฟเวอร์ | การตั้งค่าไคลเอนต์ | ร่องรอยการตรวจสอบของ CircleCI |
|---|---|---|---|---|
| Per-user tokens (แนะนำ) | ทีมที่มี Personal API Tokens ที่รองรับ SSO | REQUIRE_REQUEST_TOKEN=true, ไม่มี PAT บนเซิร์ฟเวอร์ | นักพัฒนาแต่ละคนส่งต่อ PAT ของตนเอง | ต่อนักพัฒนา |
| Shared token (ชั่วคราว) | ต้องการปรับใช้เร็ว เอกลักษณ์บริการเดียวก็เพียงพอ | CIRCLECI_TOKEN บนเซิร์ฟเวอร์, REQUIRE_REQUEST_TOKEN=false (เลือกไม่ใช้อย่างชัดเจน) | ไม่ต้องใช้ auth header | เอกลักษณ์ร่วมเดียว |
ความปลอดภัย: การยืนยันตัวตนคำขอ เปิดใช้งานตามค่าเริ่มต้น ในโหมดระยะไกล โหมด shared-token จะปิดใช้งาน (
REQUIRE_REQUEST_TOKEN=false) ทำให้ผู้เรียกทุกคนสามารถทำหน้าที่เป็นเอกลักษณ์CIRCLECI_TOKENของเซิร์ฟเวอร์ได้โดยไม่ต้องใช้ข้อมูลประจำตัวใด ๆ — รวมถึงการทริกเกอร์ไปป์ไลน์ด้วยการกำหนดค่าตามอำเภอใจ เปิดใช้งานบนเครือข่ายที่คุณไว้วางใจอย่างเต็มที่เท่านั้น และควรใช้ per-user tokens ในกรณีอื่นเนื่องจากชุดค่าผสมดังกล่าวไม่ปลอดภัยบนอินเทอร์เฟซสาธารณะ เซิร์ฟเวอร์จึงปฏิเสธที่จะเริ่มทำงานเมื่อ
REQUIRE_REQUEST_TOKEN=falseถูกรวมกับที่อยู่ bind แบบ non-loopback เว้นแต่คุณจะยอมรับความเสี่ยงอย่างชัดเจนด้วยMCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=trueการตรวจสอบHost/Originไม่ใช่ สิ่งทดแทนการยืนยันตัวตน — ดู การป้องกัน DNS-rebinding ด้านล่าง
1. ปรับใช้เซิร์ฟเวอร์
ทั้งสองโหมดใช้โหมด HTTP ระยะไกล (start=remote) เผยแพร่พอร์ต 8000 (หรือพอร์ตที่คุณเลือก)
Per-user tokens (แนะนำ) — เข้าถึงผ่าน mcp-remote จาก localhost:
docker run --rm -p 8000:8000 \
-e start=remote \
-e port=8000 \
-e REQUIRE_REQUEST_TOKEN=true \
circleci/mcp-server-circleci
Per-user tokens (แนะนำ) — เข้าถึงผ่าน 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
Shared 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
ควรวางการยืนยันตัวตนไว้ด้านหน้าพอร์ตแทน — เช่น ingress ที่ต้องใช้ SSO, mTLS หรือ API key — หรือเปลี่ยนไปใช้ per-user tokens ด้านบน
ตัวแปรสภาพแวดล้อม:
| ตัวแปร | คำอธิบาย |
|---|---|
start=remote | เริ่มเซิร์ฟเวอร์ MCP แบบ HTTP+SSE แทน stdio |
port | พอร์ตที่ใช้ฟังภายในคอนเทนเนอร์ (ค่าเริ่มต้น: 8000) |
REQUIRE_REQUEST_TOKEN | ปฏิเสธคำขอที่ไม่มี Authorization: Bearer หรือ Circle-Token header ค่าเริ่มต้นคือต้องมี; ตั้งค่า REQUIRE_REQUEST_TOKEN=false เพื่ออนุญาตคำขอที่ไม่มีการยืนยันตัวตน (โหมด shared-token) |
CIRCLECI_TOKEN | PAT สำรองที่ใช้ร่วมกันสำหรับคำขอทั้งหมดเมื่อไม่มีการส่ง per-user headers |
CIRCLECI_BASE_URL | ไม่บังคับ — จำเป็นสำหรับ on-prem เท่านั้น (ค่าเริ่มต้น: https://circleci.com) |
DISABLE_TELEMETRY=true | เลือกไม่ส่งออก metrics การใช้งาน |
MCP_ALLOWED_HOSTS | รายการค่า header Host เพิ่มเติมที่อนุญาต คั่นด้วยเครื่องหมายจุลภาค (เช่น my-mcp.example.com,my-mcp.example.com:443) อนุญาตให้ใช้ loopback hostnames เสมอ จำเป็นสำหรับการปรับใช้ที่ไม่ใช่ loopback |
MCP_ALLOWED_ORIGINS | รายการค่า header Origin เพิ่มเติมที่อนุญาต คั่นด้วยเครื่องหมายจุลภาค (เช่น https://my-app.example.com) อนุญาตให้ใช้ loopback origins เสมอ จำเป็นเฉพาะเมื่อเบราว์เซอร์เข้าถึงเซิร์ฟเวอร์นี้โดยตรง (ไม่ผ่าน mcp-remote) |
MCP_BIND_HOST | อินเทอร์เฟซเครือข่ายที่จะผูก (ค่าเริ่มต้น: 0.0.0.0) ตั้งค่าเป็น 127.0.0.1 เพื่อจำกัดเฉพาะ loopback (ไม่เข้ากันได้กับการแมปพอร์ต -p ของ Docker) |
MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS | จำเป็น (=true) เพื่อเริ่มต้นด้วย REQUIRE_REQUEST_TOKEN=false บนที่อยู่ bind ที่ไม่ใช่ loopback ยอมรับว่า peer ใดก็ตามที่เข้าถึงพอร์ตได้จะทำหน้าที่เป็นตัวตน CIRCLECI_TOKEN ของเซิร์ฟเวอร์โดยไม่มีข้อมูลรับรอง ไม่มีผลเมื่อต้องใช้ request tokens |
MCP_FILE_OUTPUT_ROOTS | รายการไดเรกทอรีเพิ่มเติมที่เครื่องมืออ่าน/เขียนไฟล์อาจใช้ คั่นด้วยเครื่องหมายจุลภาค (เช่น /srv/reports,/data/exports) ไดเรกทอรีทำงาน ไดเรกทอรีบ้าน และไดเรกทอรีชั่วคราวอนุญาตเสมอ ดูหมายเหตุด้านล่าง |
ตำแหน่งไฟล์เอาต์พุต (ใช้กับทั้ง stdio และ remote transports): เครื่องมือที่รับพาธไฟล์ —
get_build_failure_logs(outputDir),download_usage_api_data(outputDir) และfind_underused_resource_classes(csvFilePath) — อาจอ่านและเขียนได้เฉพาะภายในไดเรกทอรีทำงานของเซิร์ฟเวอร์ ไดเรกทอรีบ้านของผู้ใช้ และไดเรกทอรีชั่วคราวของระบบ ภายในรากเหล่านั้น ไดเรกทอรีการกำหนดค่าที่ซ่อนอยู่ (~/.ssh,~/.aws,~/.config,.git, …),node_modulesและไดเรกทอรี launch-agent จะถูกปฏิเสธ เช่นเดียวกับ symlinks ที่ชี้ไปยังภายนอกรากที่อนุญาต ไดเรกทอรีระบบ (/etc,/usr,/bin,/System,/Library,%SystemRoot%, …) ถูกปฏิเสธโดยไม่มีเงื่อนไขและไม่สามารถเปิดใช้งานใหม่ได้ ไฟล์เอาต์พุตจะไม่ถูกเขียนผ่าน symlinkหาก checkout ของคุณอยู่ภายนอกรากเหล่านั้น —
/workspaceในคอนเทนเนอร์,/srv,/opt, วอลุ่มรองเช่น/Volumes/work— ตั้งค่าMCP_FILE_OUTPUT_ROOTSเป็นไดเรกทอรีนั้น มิฉะนั้นพาธเหล่านั้นจะถูกปฏิเสธ สำหรับเซิร์ฟเวอร์ stdio ไดเรกทอรีทำงานมักจะเป็นรากโปรเจกต์อยู่แล้ว จึงไม่จำเป็นต้องกำหนดค่า เรื่องนี้สำคัญที่สุดสำหรับ remote transport ซึ่งพาธมาจากไคลเอนต์เครือข่าย ไม่ใช่ผู้ใช้ในเครื่อง
การป้องกัน DNS-rebinding (ไม่ใช่การยืนยันตัวตน): remote transport ตรวจสอบ header
Hostในทุกคำขอ/mcpโดยค่าเริ่มต้นจะยอมรับเฉพาะที่อยู่ loopback (localhost,127.0.0.1,[::1]) การปรับใช้สาธารณะต้องตั้งค่าMCP_ALLOWED_HOSTSเป็นโฮสต์เนมที่ไคลเอนต์ใช้ มิฉะนั้นคำขอ/mcpทั้งหมดจะได้รับ403 Forbiddenเอนด์พอยต์ตรวจสอบสุขภาพ/pingไม่มีการป้องกัน ดังนั้น load-balancer probes ยังทำงานได้โดยไม่ขึ้นกับHostheader
Origin(ส่งโดยเบราว์เซอร์) จะถูกตรวจสอบด้วยเมื่อมีอยู่ ไคลเอนต์ที่ไม่ใช่เบราว์เซอร์เช่นmcp-remoteไม่เคยส่งOriginดังนั้นจึงไม่ได้รับผลกระทบจากการตรวจสอบนี้การตรวจสอบนี้ไม่ใช่การควบคุมการเข้าถึงและไม่ควรนำมาใช้เป็นเช่นนั้น ทั้งสอง header ถูกเลือกโดยผู้เรียก ดังนั้นไคลเอนต์ที่ไม่ใช่เบราว์เซอร์ใด ๆ — curl, สคริปต์, raw socket — สามารถส่ง
Hostที่อนุญาตและละเว้นOriginเพื่อผ่านการตรวจสอบได้ วัตถุประสงค์เดียวคือหยุด เบราว์เซอร์ ไม่ให้ถูกชี้ไปที่เซิร์ฟเวอร์โดย DNS ที่ผู้โจมตีควบคุม ซึ่งเป็นภัยคุกคาม DNS-rebinding การยืนยันตัวตนผู้เรียกเป็นหน้าที่ของREQUIRE_REQUEST_TOKEN(หรือ proxy ที่ยืนยันตัวตนด้านหน้าพอร์ต) การกำหนดให้ต้องมี headerOriginจะทำลายไคลเอนต์ CLI ที่ถูกต้องทุกตัวในขณะที่ไม่ได้หยุดผู้โจมตีเมื่ออยู่หลัง reverse proxy: หาก proxy ของคุณเขียน
Hostใหม่เป็นที่อยู่ backend (ค่าเริ่มต้นของ nginx) ให้เพิ่มproxy_set_header Host $host;เพื่อส่งโฮสต์เนมเดิมผ่าน จากนั้นตั้งค่าMCP_ALLOWED_HOSTSเป็นโฮสต์เนมสาธารณะนั้น หรือตั้งค่าMCP_ALLOWED_HOSTSเป็นโฮสต์เนมใดก็ตามที่ proxy ส่งต่อ
เซิร์ฟเวอร์ยอมรับ tokens ต่อคำขอผ่าน:
Authorization: Bearer <circleci-pat>Circle-Token: <circleci-pat>
หากไคลเอนต์ส่ง header token จะมีลำดับความสำคัญเหนือ CIRCLECI_TOKEN บนเซิร์ฟเวอร์
เมตริก telemetry ที่บันทึกระหว่างคำขอจะถูกส่งออกโดยใช้ token เดียวกับคำขอนั้น
2. กำหนดค่าไคลเอนต์
ไคลเอนต์ MCP ส่วนใหญ่รองรับเฉพาะกระบวนการ local (stdio) ใช้ mcp-remote ซึ่งเป็นบริดจ์ stdio-to-HTTP ของบุคคลที่สาม เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลของคุณ
รูปแบบ URL: ใช้
http://localhost:8000/mcpกับ--allow-httpสำหรับการทดสอบในเครื่อง ในการผลิต ให้ยุติ TLS ที่ ingress/load balancer ของคุณและใช้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)
การกำหนดค่าไคลเอนต์: per-user tokens
นักพัฒนาแต่ละคนส่ง 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:...} prompts; ไคลเอนต์อื่นสามารถตั้งค่า AUTH_HEADER ได้โดยตรง
การกำหนดค่าไคลเอนต์: shared token
เมื่อเซิร์ฟเวอร์มี CIRCLECI_TOKEN ตั้งค่าและเริ่มต้นด้วย REQUIRE_REQUEST_TOKEN=false (request auth เปิดอยู่โดยค่าเริ่มต้นและต้องปิดอย่างชัดเจน และการ bind ที่ไม่ใช่ loopback ยังต้องใช้ MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true) ไคลเอนต์ไม่จำเป็นต้องส่ง token:
{
"mcpServers": {
"circleci-mcp-server-remote": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:8000/mcp",
"--allow-http"
]
}
}
}
Claude Desktop และ CLI clients
สร้างสคริปต์ wrapper (เช่น 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 config ของคุณ:
{
"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 เมื่อใช้ shared-token server
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 ที่ล้มเหลวล่าสุดบน branch ของฉันและรับ logs" — ดู wiki สำหรับตัวอย่างเพิ่มเติม
https://github.com/user-attachments/assets/3c765985-8827-442a-a8dc-5069e01edb74
รายละเอียดเครื่องมือ
config_helper
ช่วยงานการกำหนดค่า CircleCI โดยให้คำแนะนำและการตรวจสอบ
- ตรวจสอบ
.circleci/config.ymlของคุณสำหรับข้อผิดพลาดทางไวยากรณ์และความหมาย - ให้ผลการตรวจสอบโดยละเอียดและคำแนะนำการกำหนดค่า
- ตัวอย่าง: "ตรวจสอบ CircleCI config ของฉัน"
download_usage_api_data
ดาวน์โหลดข้อมูลการใช้งานจาก CircleCI Usage API สำหรับองค์กรที่กำหนด รองรับการป้อนวันที่แบบยืดหยุ่น (เช่น "มีนาคม 2025" หรือ "เดือนที่แล้ว") ฟีเจอร์เฉพาะคลาวด์
ตัวเลือก 1: เริ่มงานส่งออกใหม่โดยระบุ:
orgId,startDate,endDate(สูงสุด 32 วัน),outputDir
ตัวเลือก 2: ตรวจสอบ/ดาวน์โหลดงานส่งออกที่มีอยู่โดยระบุ:
orgId,jobId,outputDir
ส่งคืนไฟล์ CSV พร้อมข้อมูลการใช้งาน CircleCI สำหรับช่วงเวลาที่ระบุ
[!NOTE] ข้อมูลการใช้งานสามารถป้อนเข้าสู่เครื่องมือ
find_underused_resource_classesเพื่อการวิเคราะห์การปรับต้นทุน
find_flaky_tests
ระบุการทดสอบที่ไม่เสถียร (flaky tests) ในโปรเจกต์ CircleCI ของคุณโดยการวิเคราะห์ประวัติการรันทดสอบ ใช้ประโยชน์จาก ฟีเจอร์ตรวจจับ flaky test ใน CircleCI
เครื่องมือนี้ใช้ได้สามวิธี:
-
ใช้ Project Slug (แนะนำ):
- ใช้
list_followed_projectsก่อนเพื่อรับโปรเจกต์ของคุณ จากนั้น: - ตัวอย่าง: "รับ flaky tests สำหรับ my-project"
- ใช้
-
ใช้ CircleCI Project URL:
- ตัวอย่าง: "ค้นหา flaky tests ใน https://app.circleci.com/pipelines/github/org/repo"
-
ใช้บริบทโปรเจกต์ในเครื่อง:
- ทำงานจาก workspace ในเครื่องโดยระบุ workspace root และ git remote URL
- ตัวอย่าง: "ค้นหา flaky tests ในโปรเจกต์ปัจจุบันของฉัน"
โหมดเอาต์พุต:
- ข้อความ (ค่าเริ่มต้น): ส่งคืนรายละเอียด flaky tests ในรูปแบบข้อความ
- ไฟล์ (ต้องใช้ env var
FILE_OUTPUT_DIRECTORY): สร้างไดเรกทอรีพร้อมรายละเอียด flaky tests
find_underused_resource_classes
วิเคราะห์ไฟล์ CSV ข้อมูลการใช้งาน CircleCI เพื่อค้นหางานที่มีการใช้ CPU/RAM เฉลี่ยหรือสูงสุดต่ำกว่าเกณฑ์ที่กำหนด (ค่าเริ่มต้น: 40%)
ระบุไฟล์ CSV ที่ได้จาก download_usage_api_data
ส่งคืนรายการ markdown ของงานที่ใช้งานน้อยจัดกลุ่มตามโปรเจกต์และ workflow — มีประโยชน์สำหรับการระบุโอกาสในการปรับต้นทุน
get_build_failure_logs
ดึง logs ความล้มเหลวโดยละเอียดจากบิลด์ CircleCI เครื่องมือนี้ใช้ได้สามวิธี:
-
ใช้ Project Slug และ Branch (แนะนำ):
- ใช้
list_followed_projectsก่อนเพื่อรับโปรเจกต์ของคุณ จากนั้น: - ตัวอย่าง: "รับ build failures สำหรับ my-project บน main branch"
- ใช้
-
ใช้ CircleCI URLs:
- ระบุ URL ของงานที่ล้มเหลวหรือ pipeline URL โดยตรง
- ตัวอย่าง: "รับ logs จาก https://app.circleci.com/pipelines/github/org/repo/123"
-
ใช้บริบทโปรเจกต์ในเครื่อง:
- ทำงานจาก workspace ในเครื่องโดยระบุ workspace root, git remote URL และชื่อ branch
- ตัวอย่าง: "ค้นหา pipeline ที่ล้มเหลวล่าสุดบน branch ปัจจุบันของฉัน"
เครื่องมือส่งคืน logs ที่จัดรูปแบบรวมถึง:
- ชื่องาน
- รายละเอียดการดำเนินการทีละขั้นตอน
- ข้อความความล้มเหลวและบริบท
get_job_test_results
ดึงข้อมูลเมตาดาต้าของการทดสอบสำหรับงาน CircleCI ช่วยให้คุณวิเคราะห์ผลการทดสอบโดยไม่ต้องออกจาก IDE เครื่องมือนี้ใช้ได้สามวิธี:
-
ใช้ Project Slug และ Branch (แนะนำ):
- ตัวอย่าง: "รับผลการทดสอบสำหรับ my-project บน main branch"
-
ใช้ CircleCI URL:
- Job URL:
https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def/jobs/789 - Workflow URL:
https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def - Pipeline URL:
https://app.circleci.com/pipelines/github/org/repo/123
- Job URL:
-
ใช้บริบทโปรเจกต์ในเครื่อง:
- ทำงานจาก workspace ในเครื่องโดยระบุ workspace root, git remote URL และชื่อ branch
เครื่องมือส่งคืน:
- สรุปการทดสอบทั้งหมด (ทั้งหมด, สำเร็จ, ล้มเหลว)
- ข้อมูลโดยละเอียดของการทดสอบที่ล้มเหลว: ชื่อ, คลาส, ไฟล์, ข้อความข้อผิดพลาด, ระยะเวลา
- รายการการทดสอบที่สำเร็จพร้อมเวลา
- กรองตามผลการทดสอบ
[!NOTE] ต้องกำหนดค่าเมตาดาต้าการทดสอบใน CircleCI config ของคุณ ดู Collect Test Data สำหรับคำแนะนำการตั้งค่า
get_latest_pipeline_status
Retrieves the status ของไปป์ไลน์ล่าสุดสำหรับแบรนช์ที่กำหนด เครื่องมือนี้ใช้งานได้สามวิธี:
-
การใช้ Project Slug และ Branch (แนะนำ):
- ตัวอย่าง: "Get the status of the latest pipeline for my-project on the main branch"
-
การใช้ CircleCI Project URL:
- ตัวอย่าง: "Get the status of the latest pipeline for https://app.circleci.com/pipelines/github/org/repo"
-
การใช้ Local Project Context:
- ทำงานจาก workspace ในเครื่องของคุณโดยระบุ workspace root, 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
ดึงรายการ artifacts ที่ผลิตจากงาน CircleCI job เครื่องมือนี้ใช้งานได้สามวิธี:
-
การใช้ Project Slug และ Branch (แนะนำ):
- ใช้
list_followed_projectsก่อนเพื่อรับโปรเจกต์ของคุณ จากนั้น: - ตัวอย่าง: "List artifacts for my-project on the main branch"
- ใช้
-
การใช้ CircleCI URL:
- Job URL:
https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/789 - Workflow URL:
https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def - Pipeline URL:
https://app.circleci.com/pipelines/gh/organization/project/123
- Job URL:
-
การใช้ Local Project Context:
- ทำงานจาก workspace ในเครื่องของคุณโดยระบุ workspace root, git remote URL, และชื่อแบรนช์
มีประโยชน์สำหรับ:
- ค้นหา URL สำหรับดาวน์โหลด build artifacts (binaries, reports, logs)
- ตรวจสอบว่า artifacts ใดถูกผลิตจาก pipeline run
list_component_versions
แสดงรายการเวอร์ชันทั้งหมดสำหรับ component ของ CircleCI เฉพาะใน environment รวมถึงสถานะ deployment, ข้อมูล commit, และ timestamp
เครื่องมือจะแจ้งให้คุณเลือก component และ environment หากยังไม่ได้ระบุ
มีประโยชน์สำหรับ:
- ระบุว่าเวอร์ชันใดที่กำลังใช้งานอยู่
- เลือกเวอร์ชันเป้าหมายสำหรับการดำเนินการ rollback
- ดูรายละเอียด deployment (pipeline, workflow, job)
list_followed_projects
แสดงรายการโปรเจกต์ทั้งหมดที่ผู้ใช้ติดตามบน CircleCI
- แสดงโปรเจกต์ทั้งหมดที่คุณเข้าถึงได้พร้อมกับ
projectSlug - ตัวอย่าง: "List my CircleCI projects"
ตัวอย่างผลลัพธ์:
Projects followed:
1. my-project (projectSlug: gh/organization/my-project)
2. another-project (projectSlug: gh/organization/another-project)
[!NOTE] จำเป็นต้องใช้
projectSlug(ไม่ใช่ชื่อโปรเจกต์) สำหรับเครื่องมือ CircleCI อื่น ๆ จำนวนมาก
rerun_workflow
รัน workflow อีกครั้งจากจุดเริ่มต้นหรือจาก job ที่ล้มเหลว
คืนค่า ID ของ workflow ที่สร้างใหม่และลิงก์สำหรับติดตาม
run_pipeline
ทริกเกอร์ให้ pipeline ทำงาน เครื่องมือนี้ใช้งานได้สามวิธี:
-
การใช้ Project Slug และ Branch (แนะนำ):
- ตัวอย่าง: "Run the pipeline for my-project on the main branch"
-
การใช้ CircleCI URL:
- Pipeline URL, Workflow URL, Job URL, หรือ Project URL พร้อมแบรนช์
- ตัวอย่าง: "Run the pipeline for https://app.circleci.com/pipelines/github/org/repo/123"
-
การใช้ Local Project Context:
- ทำงานจาก workspace ในเครื่องของคุณโดยระบุ workspace root, git remote URL, และชื่อแบรนช์
เครื่องมือคืนลิงก์สำหรับติดตามการทำงานของ pipeline
run_rollback_pipeline
ทริกเกอร์ rollback สำหรับโปรเจกต์ CircleCI เครื่องมือจะแนะนำคุณแบบโต้ตอบผ่าน:
- การเลือกโปรเจกต์ — แสดงรายการโปรเจกต์ที่ติดตามเพื่อให้คุณเลือก
- การเลือก Environment — แสดง environment ที่มีอยู่ (เลือกอัตโนมัติหากมีเพียงหนึ่ง)
- การเลือก Component — แสดง component ที่มีอยู่ (เลือกอัตโนมัติหากมีเพียงหนึ่ง)
- การเลือกเวอร์ชัน — แสดงเวอร์ชันที่มีอยู่; คุณเลือกเป้าหมายสำหรับ rollback
- การตรวจจับโหมด Rollback — ตรวจสอบว่า rollback pipeline ถูกกำหนดค่าไว้หรือไม่
- ดำเนินการ Rollback — สองตัวเลือก:
- Pipeline Rollback: ทริกเกอร์ rollback pipeline
- Workflow Rerun: รัน workflow ก่อนหน้าอีกครั้งโดยใช้ workflow ID
- การยืนยัน — สรุปและยืนยันก่อนดำเนินการ
การแก้ไขปัญหา
Quick Fixes
ปัญหาที่พบบ่อยที่สุด:
-
ล้างแคชของแพ็กเกจ:
npx clear-npx-cache npm cache clean --force -
บังคับใช้เวอร์ชันล่าสุด: เพิ่ม
@latestใน config ของคุณ:"args": ["-y", "@circleci/mcp-server-circleci@latest"] -
รีสตาร์ท IDE ของคุณทั้งหมด (ไม่ใช่แค่รีโหลดหน้าต่าง)
Authentication Issues
- ข้อผิดพลาด token ไม่ถูกต้อง: ตรวจสอบ
CIRCLECI_TOKENของคุณใน Personal API Tokens - ข้อผิดพลาดสิทธิ์: ตรวจสอบว่า token มีสิทธิ์อ่านโปรเจกต์ของคุณ
- Environment variables ไม่โหลด: ทดสอบด้วย
echo $CIRCLECI_TOKEN(Mac/Linux) หรือecho %CIRCLECI_TOKEN%(Windows)
Connection and Network Issues
- Base URL: ยืนยันว่า
CIRCLECI_BASE_URLคือhttps://circleci.com - เครือข่ายองค์กร: กำหนดค่า npm proxy หากอยู่หลัง firewall
- Firewall บล็อก: ตรวจสอบว่าซอฟต์แวร์ความปลอดภัยบล็อกการดาวน์โหลดแพ็กเกจหรือไม่
System Requirements
- เวอร์ชัน Node.js: ตรวจสอบว่า >= 18.0.0 พร้อม
node --version - อัปเดต Node.js: พิจารณาใช้ LTS ล่าสุดหากพบปัญหาความเข้ากันได้
- ตัวจัดการแพ็กเกจ: ตรวจสอบว่า npm/pnpm ทำงาน:
npm --version
IDE-Specific Issues
- ตำแหน่งไฟล์ config: ตรวจสอบเส้นทางสำหรับระบบปฏิบัติการของคุณอีกครั้ง
- ข้อผิดพลาด syntax: ตรวจสอบ JSON syntax ในไฟล์ config ของคุณ
- Console logs: ตรวจสอบ developer console ของ IDE สำหรับข้อผิดพลาดเฉพาะ
- ลองใช้ IDE อื่น: ทดสอบใน editor ที่รองรับอื่นเพื่อแยกปัญหา
Process Issues
กระบวนการค้าง — ฆ่า MCP processes ที่มีอยู่:
# Mac/Linux:
pkill -f "mcp-server-circleci"
# Windows:
taskkill /f /im node.exe
Port ขัดแย้ง: รีสตาร์ท IDE หากการเชื่อมต่อดูเหมือนถูกบล็อก
Advanced Debugging
- ทดสอบแพ็กเกจโดยตรง:
npx @circleci/mcp-server-circleci@latest --help - บันทึก verbose:
DEBUG=* npx @circleci/mcp-server-circleci@latest - Docker fallback: ลองใช้การติดตั้ง Docker หาก npx ล้มเหลวอย่างต่อเนื่อง
ยังต้องการความช่วยเหลือ?
- ตรวจสอบ GitHub Issues สำหรับปัญหาที่คล้ายกัน
- รวม OS, Node version, และ IDE ของคุณเมื่อรายงานปัญหา
- แชร์ข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องจาก IDE console
Telemetry
เซิร์ฟเวอร์รองรับเมตริก OpenTelemetry สำหรับการติดตามการใช้งานเครื่องมือ เมตริกจะถูกส่งออก เว้นแต่คุณตั้งค่า DISABLE_TELEMETRY=true ในการปรับใช้ระยะไกล เมตริกใช้ token เดียวกับคำขอ (per-user PAT หรือ shared server PAT)
| เมตริก | คำอธิบาย |
|---|---|
circleci.mcp.tool.invocations | จำนวนการเรียกใช้เครื่องมือ |
circleci.mcp.tool.duration_ms | เวลาดำเนินการในหน่วย ms |
circleci.mcp.tool.errors | จำนวนข้อผิดพลาด |
การพัฒนา
เริ่มต้น
-
โคลน repository:
git clone https://github.com/CircleCI-Public/mcp-server-circleci.git cd mcp-server-circleci -
ติดตั้ง dependencies:
pnpm install -
สร้างโปรเจกต์:
pnpm build
การสร้าง Docker Container
คุณสามารถสร้าง Docker container ในเครื่องได้โดยใช้:
docker build -t circleci:mcp-server-circleci .
นี้จะสร้าง Docker image ที่ติดแท็กเป็น circleci:mcp-server-circleci ซึ่งคุณสามารถใช้กับ MCP client ใดก็ได้
โหมด stdio ในเครื่อง (นักพัฒนาคนเดียว, token อยู่ที่ client):
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 คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ MCP inspector ได้ที่ https://modelcontextprotocol.io/docs/tools/inspector
-
เริ่มเซิร์ฟเวอร์สำหรับการพัฒนา:
pnpm watch # Keep this running in one terminal -
ในเทอร์มินัลแยกต่างหาก เปิด inspector:
pnpm inspector -
กำหนดค่า environment:
- เพิ่ม
CIRCLECI_TOKENของคุณในส่วน Environment Variables ใน UI ของ inspector - token ต้องมีสิทธิ์อ่านโปรเจกต์ CircleCI ของคุณ
- ตั้งค่า CircleCI Base URL ของคุณได้ (ค่าเริ่มต้นคือ
https://circleci.com)
- เพิ่ม
การทดสอบ
-
รันชุดทดสอบ:
pnpm test -
รันการทดสอบในโหมด watch ระหว่างการพัฒนา:
pnpm test:watch
สำหรับแนวทางการมีส่วนร่วมที่ละเอียดเพิ่มเติม ดู CONTRIBUTING.md