CircleCI

ทางการ

เปิดให้ AI Agents สามารถแก้ไขปัญหาการสร้างที่ล้มเหลวจาก CircleCI ได้

คุณทำอะไรได้บ้างด้วย CircleCI MCP?

  • ตรวจสอบการกำหนดค่า — ขอให้ผู้ช่วยตรวจสอบ .circleci/config.yml และรับคำแนะนำเกี่ยวกับข้อผิดพลาดด้านไวยากรณ์และความหมายผ่าน config_helper
  • วินิจฉัยการบิลด์ที่ล้มเหลว — ดึงบันทึกข้อผิดพลาดโดยละเอียดจากการบิลด์ของ CircleCI ด้วย get_build_failure_logs
  • ค้นหาการทดสอบที่ไม่เสถียร — ระบุการทดสอบที่ไม่เสถียรโดยวิเคราะห์ประวัติการทำงานของการทดสอบสำหรับโปรเจกต์ด้วย find_flaky_tests
  • ตรวจสอบสถานะไปป์ไลน์ — ดูสถานะของไปป์ไลน์ล่าสุดสำหรับสาขาด้วย get_latest_pipeline_status
  • เรียกใช้เวิร์กโฟลว์อีกครั้ง — เรียกใช้เวิร์กโฟลว์อีกครั้งตั้งแต่ต้นหรือเริ่มจากงานที่ล้มเหลวด้วย rerun_workflow
  • ทริกเกอร์ไปป์ไลน์ — เรียกใช้ไปป์ไลน์หรือทริกเกอร์การย้อนกลับโปรเจกต์ด้วย run_pipeline และ run_rollback_pipeline

เอกสาร

[!IMPORTANT] แพ็กเกจนี้เลิกใช้งานแล้ว โปรดย้ายไปใช้ตัวอื่น

@circleci/mcp-server-circleci จะไม่มีการพัฒนาฟีเจอร์เพิ่มเติมอีกต่อไป โปรดใช้ MCP server ที่โฮสต์ไว้ หรือ CircleCI CLI MCP แทน — ดู ภาพรวม CircleCI MCP

ที่เก็บนี้จะถูกเก็บถาวร เวอร์ชันที่มีอยู่ยังคงติดตั้งได้จาก npm แต่ไม่แนะนำให้เรียกใช้เซิร์ฟเวอร์ที่ไม่มีการดูแลและเก็บ CircleCI Personal API Token ไว้

หากคุณใช้ self-managed remote transport (start=remote) ให้ย้ายก่อน: เซิร์ฟเวอร์ที่โฮสต์ไว้เป็นตัวแทนโดยตรง และช่วยให้ไม่ต้องดูแลบริการที่เปิดรับการเชื่อมต่อผ่านเครือข่ายเพื่อส่งต่อโทเค็นขององค์กร

CircleCI MCP Server

License: Apache 2.0 CircleCI npm

Model Context Protocol (MCP) คือ โปรโตคอลมาตรฐานใหม่ สำหรับจัดการบริบทระหว่างโมเดลภาษาขนาดใหญ่ (LLM) กับระบบภายนอก ที่เก็บนี้มี MCP Server สำหรับ CircleCI

ใช้ 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 แยกตามนักพัฒนาหรือใช้ร่วมกัน โปรดดู Self-Managed Remote MCP Server

Cursor

ข้อกำหนดเบื้องต้น:

ใช้ NPX ใน MCP Server ภายในเครื่อง

เพิ่มรายการต่อไปนี้ใน Cursor MCP config ของคุณ:

{
  "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 ภายในเครื่อง

เพิ่มรายการต่อไปนี้ใน Cursor MCP config ของคุณ:

{
  "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 ใช้ การกำหนดค่าไคลเอ็นต์รายผู้ใช้ แล้วเพิ่มลงใน Cursor MCP config ของคุณ (Cursor Settings → MCP)

VS Code

ข้อกำหนดเบื้องต้น:

ใช้ 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

ข้อกำหนดเบื้องต้น:

ใช้ 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 ให้ชี้ไปยังสคริปต์ดังกล่าว

หากต้องการค้นหาหรือสร้างไฟล์ config ให้เปิดการตั้งค่า Claude Desktop คลิก Developer ในแถบด้านข้างซ้าย แล้วคลิก Edit Config ไฟล์ config อยู่ที่:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

ดูข้อมูลเพิ่มเติม: https://modelcontextprotocol.io/quickstart/user

Claude Code

ข้อกำหนดเบื้องต้น:

ใช้ 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

ข้อกำหนดเบื้องต้น:

ใช้ NPX ใน MCP Server ภายในเครื่อง

เพิ่มรายการต่อไปนี้ใน 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"
      }
    }
  }
}

ใช้ Docker ใน MCP Server ภายในเครื่อง

เพิ่มรายการต่อไปนี้ใน 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"
      }
    }
  }
}

ใช้ Self-Managed Remote MCP Server

ดู Self-Managed Remote MCP Server ใช้ การกำหนดค่าไคลเอ็นต์รายผู้ใช้ ใน Windsurf mcp_config.json ของคุณ

ดูข้อมูลเพิ่มเติม: https://docs.windsurf.com/windsurf/mcp

Amazon Q Developer CLI

ข้อกำหนดเบื้องต้น:

การกำหนดค่าไคลเอ็นต์ MCP ใน Amazon Q Developer จัดเก็บในรูปแบบ JSON ในไฟล์ชื่อ mcp.json รองรับการกำหนดค่าสองระดับ:

  • ส่วนกลาง: ~/.aws/amazonq/mcp.json — ใช้กับทุก workspace
  • Workspace: .amazonq/mcp.json — ใช้เฉพาะกับ workspace ปัจจุบัน

หากมีไฟล์ทั้งสอง ไฟล์จะถูกรวมเนื้อหาเข้าด้วยกัน ในกรณีที่ขัดแย้งกัน config ของ workspace จะมีลำดับความสำคัญสูงกว่า

ใช้ 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 in the 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:

  1. เปิด UI การกำหนดค่า MCP
  2. เลือกสัญลักษณ์ +
  3. เลือกขอบเขต: global หรือ local
  4. ป้อนชื่อ (เช่น circleci-remote-mcp)
  5. เลือกโปรโตคอลการขนส่ง: stdio
  6. ป้อนพาธคำสั่งไปยังสคริปต์ของคุณ
  7. คลิก Save
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
โทเค็นรายผู้ใช้ (แนะนำ)ทีมที่ใช้ Personal API Token ซึ่งเชื่อมโยงกับ SSOREQUIRE_REQUEST_TOKEN=true โดยไม่ต้องใช้ PAT ของเซิร์ฟเวอร์นักพัฒนาแต่ละคนส่งต่อ PAT ของตนแยกตามนักพัฒนา
โทเค็นที่ใช้ร่วมกัน (ชั่วคราว)ต้องการเริ่มใช้อย่างรวดเร็ว และยอมรับการใช้ข้อมูลประจำตัวบริการเดียวCIRCLECI_TOKEN บนเซิร์ฟเวอร์, REQUIRE_REQUEST_TOKEN=false (เลือกไม่ใช้โดยชัดแจ้ง)ไม่จำเป็นต้องมีส่วนหัวการยืนยันตัวตนข้อมูลประจำตัวที่ใช้ร่วมกันรายการเดียว

ความปลอดภัย: การยืนยันตัวตนคำขอ เปิดใช้งานเป็นค่าเริ่มต้น ในโหมดระยะไกล โหมดโทเค็นที่ใช้ร่วมกันจะปิดการยืนยันตัวตน (REQUIRE_REQUEST_TOKEN=false) ทำให้ผู้เรียกทุกคนสามารถดำเนินการในนามข้อมูลประจำตัว CIRCLECI_TOKEN ของเซิร์ฟเวอร์ได้โดยไม่ต้องใช้ข้อมูลรับรอง — รวมถึงการสั่งให้ไปป์ไลน์ทำงานด้วย config ใดก็ได้ เปิดใช้โหมดนี้เฉพาะบนเครือข่ายที่คุณเชื่อถืออย่างเต็มที่ และควรเลือกใช้โทเค็นรายผู้ใช้ในกรณีอื่น การยุติ TLS ที่ ingress ช่วยเข้ารหัสข้อมูล แต่ไม่ได้ยืนยันตัวตน

เนื่องจากการตั้งค่าดังกล่าวไม่ปลอดภัยเมื่อเปิดให้เข้าถึงจากสาธารณะ เซิร์ฟเวอร์จะ ปฏิเสธการเริ่มทำงาน เมื่อใช้ REQUIRE_REQUEST_TOKEN=false ร่วมกับ bind address ที่ไม่ใช่ loopback เว้นแต่คุณจะยอมรับความเสี่ยงอย่างชัดเจนด้วย MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true การตรวจสอบ Host/Origin ไม่ใช่ สิ่งทดแทนการยืนยันตัวตน — ดู การป้องกัน DNS rebinding ด้านล่าง

1. ติดตั้งใช้งานเซิร์ฟเวอร์

ทั้งสองโหมดใช้โหมด HTTP ระยะไกล (start=remote) เปิดพอร์ต 8000 (หรือพอร์ตที่คุณเลือก)

โทเค็นรายผู้ใช้ (แนะนำ) — เข้าถึงผ่าน mcp-remote จาก localhost:

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

ควรตั้งค่าการยืนยันตัวตนไว้หน้าพอร์ตแทน — เช่น ingress ที่ กำหนดให้ใช้ SSO, mTLS หรือ API key — หรือเปลี่ยนไปใช้โทเค็นรายผู้ใช้ด้านบน

ตัวแปรสภาพแวดล้อม:

ตัวแปรคำอธิบาย
start=remoteเริ่มเซิร์ฟเวอร์ MCP แบบ HTTP+SSE แทน stdio
portพอร์ตที่รับฟังภายในคอนเทนเนอร์ (ค่าเริ่มต้น: 8000)
REQUIRE_REQUEST_TOKENปฏิเสธคำขอที่ไม่มีส่วนหัว Authorization: Bearer หรือ Circle-Token โดยค่าเริ่มต้นจะบังคับใช้ หากต้องการอนุญาตคำขอที่ไม่ผ่านการยืนยันตัวตน (โหมดโทเค็นที่ใช้ร่วมกัน) ให้ตั้งค่า REQUIRE_REQUEST_TOKEN=false
CIRCLECI_TOKENPAT สำรองที่ใช้ร่วมกันสำหรับคำขอทั้งหมด เมื่อไม่มีการส่งส่วนหัวแยกตามผู้ใช้
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 จะได้รับอนุญาตเสมอ จำเป็นสำหรับการติดตั้งใช้งานที่ไม่ใช่ loopback
MCP_ALLOWED_ORIGINSรายการค่าของ Origin เพิ่มเติมที่คั่นด้วยจุลภาคและอนุญาต (เช่น https://my-app.example.com) origin แบบ loopback จะได้รับอนุญาตเสมอ จำเป็นเฉพาะเมื่อเบราว์เซอร์เชื่อมต่อกับเซิร์ฟเวอร์นี้โดยตรง (ไม่ผ่าน mcp-remote)
MCP_BIND_HOSTอินเทอร์เฟซเครือข่ายที่จะ bind (ค่าเริ่มต้น: 0.0.0.0) ตั้งค่าเป็น 127.0.0.1 เพื่อจำกัดให้ใช้ได้เฉพาะ loopback (ใช้ร่วมกับการแมปพอร์ต Docker -p ไม่ได้)
MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESSจำเป็น (=true) เพื่อเริ่มต้นด้วย REQUIRE_REQUEST_TOKEN=false เมื่อ bind กับที่อยู่ที่ไม่ใช่ loopback เป็นการยอมรับว่าเพียร์ใดก็ตามที่เข้าถึงพอร์ตได้จะทำหน้าที่เป็นตัวตน CIRCLECI_TOKEN ของเซิร์ฟเวอร์โดยไม่มีข้อมูลรับรอง ไม่มีผลเมื่อบังคับใช้โทเค็นคำขอ
MCP_FILE_OUTPUT_ROOTSรายการไดเรกทอรีเพิ่มเติมที่คั่นด้วยจุลภาค ซึ่งเครื่องมืออ่าน/เขียนไฟล์สามารถใช้ได้ (เช่น /srv/reports,/data/exports) ไดเรกทอรีทำงาน ไดเรกทอรี home และไดเรกทอรี temp จะได้รับอนุญาตเสมอ ดูหมายเหตุด้านล่าง

ตำแหน่งเอาต์พุตไฟล์ (ใช้กับทั้งการขนส่งแบบ stdio และแบบ remote): เครื่องมือที่รับพาธระบบไฟล์ — get_build_failure_logs (outputDir), download_usage_api_data (outputDir) และ find_underused_resource_classes (csvFilePath) — จะอ่านและเขียนได้เฉพาะภายในไดเรกทอรีทำงานของเซิร์ฟเวอร์ ไดเรกทอรี home ของผู้ใช้ และไดเรกทอรี temp ของระบบเท่านั้น ภายในรากเหล่านี้ ไดเรกทอรีการกำหนดค่าที่ซ่อนอยู่ (~/.ssh, ~/.aws, ~/.config, .git, …), node_modules และไดเรกทอรี launch-agent จะถูกปฏิเสธ เช่นเดียวกับ symlink ที่ชี้ออกนอกเส้นทางรากที่อนุญาต ไดเรกทอรีระบบ (/etc, /usr, /bin, /System, /Library, %SystemRoot%, …) จะถูกปฏิเสธโดยไม่มีข้อยกเว้นและไม่สามารถเปิดใช้งานใหม่ได้ ระบบจะไม่เขียนไฟล์เอาต์พุตผ่าน symlink

หาก checkout ของคุณอยู่นอกเส้นทางรากเหล่านั้น — /workspace ในคอนเทนเนอร์, /srv, /opt, วอลุ่มรอง เช่น /Volumes/work — ให้ตั้งค่า MCP_FILE_OUTPUT_ROOTS เป็นไดเรกทอรีนั้น มิฉะนั้นพาธเหล่านั้นจะถูกปฏิเสธ สำหรับเซิร์ฟเวอร์ stdio โดยปกติไดเรกทอรีทำงานจะเป็นรากของโปรเจกต์อยู่แล้ว จึงไม่ต้องกำหนดค่าใดๆ เรื่องนี้สำคัญที่สุดสำหรับการขนส่งแบบ remote ซึ่งพาธมาจากไคลเอ็นต์เครือข่าย ไม่ใช่ผู้ใช้ในเครื่อง

การป้องกัน DNS rebinding (ไม่ใช่การยืนยันตัวตน): การขนส่งแบบ remote จะตรวจสอบส่วนหัว Host ในทุกคำขอ /mcp โดยค่าเริ่มต้นจะยอมรับเฉพาะที่อยู่ loopback (localhost, 127.0.0.1, [::1]) เท่านั้น การติดตั้งใช้งานสาธารณะต้องตั้งค่า MCP_ALLOWED_HOSTS เป็นชื่อโฮสต์ที่ไคลเอ็นต์ใช้ มิฉะนั้นคำขอ /mcp ทั้งหมดจะได้รับ 403 Forbidden ส่วนปลายทางตรวจสอบสถานะ /ping จะไม่ถูกป้องกัน เพื่อให้การตรวจสอบของ load balancer ยังคงทำงานได้ไม่ว่า Host จะเป็นค่าใด

ระบบจะตรวจสอบส่วนหัว Origin (ที่เบราว์เซอร์ส่งมา) ด้วยเมื่อมีการส่ง ไคลเอ็นต์ที่ไม่ใช่เบราว์เซอร์ เช่น mcp-remote จะไม่ส่ง Origin จึงไม่ได้รับผลกระทบจากการตรวจสอบนี้

การตรวจสอบนี้ไม่ใช่การควบคุมการเข้าถึงและห้ามใช้แทนการควบคุมดังกล่าว ผู้เรียกเป็นผู้กำหนดส่วนหัวทั้งสอง ดังนั้นไคลเอ็นต์ที่ไม่ใช่เบราว์เซอร์ใดๆ — curl, สคริปต์, raw socket — สามารถส่ง Host ที่อนุญาตและละ Origin เพื่อให้ผ่านการตรวจสอบได้ จุดประสงค์เดียวของการตรวจสอบนี้คือป้องกันไม่ให้ เบราว์เซอร์ ถูกชี้ไปยังเซิร์ฟเวอร์โดย DNS ที่ผู้โจมตีควบคุม ซึ่งเป็นภัยคุกคามจาก DNS rebinding การยืนยันตัวตนผู้เรียกเป็นหน้าที่ของ REQUIRE_REQUEST_TOKEN (หรือพร็อกซีที่ยืนยันตัวตนซึ่งอยู่หน้า port) การบังคับใช้ส่วนหัว Origin จะทำให้ไคลเอ็นต์ CLI ที่ถูกต้องทั้งหมดใช้งานไม่ได้ โดยไม่สามารถหยุดผู้โจมตีได้เลย

เมื่ออยู่หลัง reverse proxy: หากพร็อกซีของคุณเขียน Host ใหม่เป็นที่อยู่ backend (ค่าเริ่มต้นของ nginx) ให้เพิ่ม proxy_set_header Host $host; เพื่อส่งชื่อโฮสต์เดิมต่อไป จากนั้นตั้งค่า MCP_ALLOWED_HOSTS เป็นชื่อโฮสต์สาธารณะนั้น หรืออีกทางหนึ่ง ให้ตั้งค่า MCP_ALLOWED_HOSTS เป็นชื่อโฮสต์ที่พร็อกซีส่งต่อจริง

เซิร์ฟเวอร์รองรับโทเค็นแยกตามคำขอผ่าน:

  • Authorization: Bearer <circleci-pat>
  • Circle-Token: <circleci-pat>

หากไคลเอ็นต์ส่งโทเค็นในส่วนหัว โทเค็นนั้นจะมีลำดับความสำคัญเหนือ CIRCLECI_TOKEN บนเซิร์ฟเวอร์

เมตริก telemetry ที่บันทึกระหว่างคำขอจะถูกส่งออกโดยใช้โทเค็นเดียวกับคำขอนั้น

2. กำหนดค่าไคลเอ็นต์

ไคลเอ็นต์ MCP ส่วนใหญ่รองรับเฉพาะโปรเซสในเครื่อง (stdio) ใช้ mcp-remote ซึ่งเป็นบริดจ์ stdio-to-HTTP ของบุคคลที่สาม เพื่อเชื่อมต่อไคลเอ็นต์เหล่านั้นกับเซิร์ฟเวอร์ remote ของคุณ

รูปแบบ URL: ใช้ http://localhost:8000/mcp กับ --allow-http สำหรับการทดสอบในเครื่อง ในระบบ production ให้ยุติ TLS ที่ ingress/load balancer แล้วใช้ https://your-host/mcp โดยไม่มี --allow-http

Windows: หลีกเลี่ยงการเว้นวรรคหน้าหรือหลังเครื่องหมายโคลอนในค่า --header ให้ใส่ค่า Bearer <token> ทั้งหมดไว้ในตัวแปรสภาพแวดล้อม

ความปลอดภัย: ตัวอย่างใช้ npx เพื่อความสะดวก สำหรับการใช้งาน production หรือการติดตั้งให้ทีม ให้ระบุเวอร์ชันที่เจาะจงใน config MCP (เช่น mcp-remote@0.1.38 แทน mcp-remote) ห้ามใช้เวอร์ชันที่ต่ำกว่า 0.1.16 (CVE-2025-6514)

การกำหนดค่าไคลเอ็นต์: โทเค็นแยกตามผู้ใช้

นักพัฒนาแต่ละคนจะส่งต่อ CircleCI Personal API Token ของตนเองในทุกคำขอ:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "circleci-token",
      "description": "CircleCI API Token",
      "password": true
    }
  ],
  "mcpServers": {
    "circleci-mcp-server-remote": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "http://localhost:8000/mcp",
        "--allow-http",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer ${input:circleci-token}"
      }
    }
  }
}

แทนที่ http://localhost:8000/mcp ด้วย URL เซิร์ฟเวอร์ของทีมคุณ Cursor และ VS Code รองรับพรอมป์ต์ ${input:...}; ไคลเอ็นต์อื่นๆ สามารถตั้งค่า AUTH_HEADER ได้โดยตรง

การกำหนดค่าไคลเอ็นต์: โทเค็นที่ใช้ร่วมกัน

เมื่อเซิร์ฟเวอร์ตั้งค่า CIRCLECI_TOKEN และเริ่มทำงานด้วย REQUIRE_REQUEST_TOKEN=false (การยืนยันตัวตนคำขอเปิดใช้งานโดยค่าเริ่มต้นและต้องปิดใช้งานอย่างชัดเจน อีกทั้งการ bind ที่ไม่ใช่ loopback ยังต้องใช้ 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

สร้างสคริปต์ 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) จากนั้นอ้างอิงสคริปต์จาก config 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 ล่าสุดที่ล้มเหลวบน branch ของฉัน แล้วดึง logs" — ดูตัวอย่างเพิ่มเติมได้ที่ wiki

https://github.com/user-attachments/assets/3c765985-8827-442a-a8dc-5069e01edb74

รายละเอียดเครื่องมือ

config_helper

ช่วยทำงานเกี่ยวกับการกำหนดค่า CircleCI โดยให้คำแนะนำและตรวจสอบความถูกต้อง

  • ตรวจสอบ .circleci/config.yml ของคุณเพื่อหาข้อผิดพลาดด้านไวยากรณ์และความหมาย
  • แสดงผลการตรวจสอบโดยละเอียดและคำแนะนำในการกำหนดค่า
  • ตัวอย่าง: "ตรวจสอบ config ของ CircleCI ของฉัน"
download_usage_api_data

ดาวน์โหลดข้อมูลการใช้งานจาก CircleCI Usage API สำหรับองค์กรที่ระบุ รองรับการป้อนวันที่ได้หลายรูปแบบ (เช่น "มีนาคม 2025" หรือ "เดือนที่แล้ว") ฟีเจอร์นี้ใช้ได้เฉพาะ Cloud

ตัวเลือกที่ 1: เริ่มงานส่งออกใหม่โดยระบุ:

  • orgId, startDate, endDate (สูงสุด 32 วัน), outputDir

ตัวเลือกที่ 2: ตรวจสอบ/ดาวน์โหลดงานส่งออกที่มีอยู่โดยระบุ:

  • orgId, jobId, outputDir

ส่งคืนไฟล์ CSV ที่มีข้อมูลการใช้งาน CircleCI สำหรับช่วงเวลาที่ระบุ

[!NOTE] สามารถป้อนข้อมูลการใช้งานให้เครื่องมือ find_underused_resource_classes เพื่อวิเคราะห์การปรับลดต้นทุนได้

find_flaky_tests

ระบุการทดสอบที่ไม่เสถียรในโปรเจกต์ CircleCI ของคุณโดยวิเคราะห์ประวัติการทำงานของการทดสอบ ใช้ ฟีเจอร์ตรวจจับการทดสอบที่ไม่เสถียร ใน CircleCI

ใช้เครื่องมือนี้ได้สามวิธี:

  1. ใช้ Project Slug (แนะนำ):

    • ใช้ list_followed_projects เพื่อดูโปรเจกต์ของคุณก่อน จากนั้น:
    • ตัวอย่าง: "ค้นหาการทดสอบที่ไม่เสถียรสำหรับ my-project"
  2. ใช้ URL โปรเจกต์ CircleCI:

  3. ใช้บริบทโปรเจกต์ในเครื่อง:

    • ใช้งานจาก workspace ในเครื่องได้โดยระบุรากของ workspace และ URL git remote
    • ตัวอย่าง: "ค้นหาการทดสอบที่ไม่เสถียรในโปรเจกต์ปัจจุบันของฉัน"

โหมดเอาต์พุต:

  • ข้อความ (ค่าเริ่มต้น): ส่งคืนรายละเอียดการทดสอบที่ไม่เสถียรในรูปแบบข้อความ
  • ไฟล์ (ต้องใช้ตัวแปรสภาพแวดล้อม FILE_OUTPUT_DIRECTORY): สร้างไดเรกทอรีที่มีรายละเอียดการทดสอบที่ไม่เสถียร
find_underused_resource_classes

วิเคราะห์ไฟล์ CSV ข้อมูลการใช้งาน CircleCI เพื่อค้นหา job ที่มีการใช้งาน CPU/RAM เฉลี่ยหรือสูงสุดต่ำกว่าเกณฑ์ที่กำหนด (ค่าเริ่มต้น: 40%)

ระบุไฟล์ CSV ที่ได้จาก download_usage_api_data

ส่งคืนรายการ Markdown ของ job ที่ใช้งานทรัพยากรต่ำกว่าที่ควร โดยจัดกลุ่มตามโปรเจกต์และ workflow ซึ่งมีประโยชน์ในการค้นหาโอกาสลดต้นทุน

get_build_failure_logs

ดึง logs รายละเอียดของความล้มเหลวจาก build ของ CircleCI ใช้เครื่องมือนี้ได้สามวิธี:

  1. ใช้ Project Slug และ Branch (แนะนำ):

    • ใช้ list_followed_projects เพื่อดูโปรเจกต์ของคุณก่อน จากนั้น:
    • ตัวอย่าง: "ดึง build ที่ล้มเหลวของ my-project บน branch main"
  2. ใช้ URL ของ CircleCI:

  3. ใช้บริบทโปรเจกต์ในเครื่อง:

    • ใช้งานจาก workspace ในเครื่องได้โดยระบุรากของ workspace, URL git remote และชื่อ branch
    • ตัวอย่าง: "ค้นหา pipeline ล่าสุดที่ล้มเหลวบน branch ปัจจุบันของฉัน"

เครื่องมือจะแสดง logs ในรูปแบบที่จัดไว้ ซึ่งประกอบด้วย:

  • ชื่อ job
  • รายละเอียดการทำงานทีละขั้นตอน
  • ข้อความแสดงความล้มเหลวและบริบท
get_job_test_results

ดึงข้อมูลเมตาของการทดสอบสำหรับ job ของ CircleCI ช่วยให้คุณวิเคราะห์ผลการทดสอบได้โดยไม่ต้องออกจาก IDE ใช้เครื่องมือนี้ได้สามวิธี:

  1. ใช้ Project Slug และ Branch (แนะนำ):

    • ตัวอย่าง: "ดูผลการทดสอบของ my-project บน branch main"
  2. ใช้ URL ของ CircleCI:

    • URL ของ job: https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def/jobs/789
    • URL ของ workflow: https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def
    • URL ของ pipeline: https://app.circleci.com/pipelines/github/org/repo/123
  3. ใช้บริบทโปรเจกต์ในเครื่อง:

    • ใช้งานจาก workspace ในเครื่องได้โดยระบุรากของ workspace, URL git remote และชื่อ branch

เครื่องมือจะแสดงข้อมูลต่อไปนี้:

  • สรุปการทดสอบทั้งหมด (จำนวนทั้งหมด สำเร็จ และล้มเหลว)
  • ข้อมูลโดยละเอียดของการทดสอบที่ล้มเหลว: ชื่อ คลาส ไฟล์ ข้อความแสดงข้อผิดพลาด และระยะเวลา
  • รายการการทดสอบที่สำเร็จพร้อมเวลา
  • กรองตามผลการทดสอบ

[!NOTE] ต้องกำหนดค่าเมตาของการทดสอบใน config ของ CircleCI ดู รวบรวมข้อมูลการทดสอบ สำหรับคำแนะนำในการตั้งค่า

get_latest_pipeline_status ดึงสถานะของ pipeline ล่าสุดสำหรับ branch ที่ระบุ เครื่องมือนี้ใช้ได้ 3 วิธี:
  1. ใช้ Project Slug และ Branch (แนะนำ):

    • ตัวอย่าง: "Get the status of the latest pipeline for my-project on the main branch"
  2. ใช้ CircleCI Project URL:

  3. ใช้บริบทโปรเจกต์ในเครื่อง:

    • ใช้งานจาก workspace ในเครื่องของคุณ โดยระบุ workspace root, git remote URL และชื่อ branch

ตัวอย่างผลลัพธ์:

---
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 เครื่องมือนี้ใช้ได้ 3 วิธี:

  1. ใช้ Project Slug และ Branch (แนะนำ):

    • ใช้ list_followed_projects ก่อนเพื่อดูโปรเจกต์ของคุณ จากนั้น:
    • ตัวอย่าง: "List artifacts for my-project on the main branch"
  2. ใช้ 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
  3. ใช้บริบทโปรเจกต์ในเครื่อง:

    • ใช้งานจาก workspace ในเครื่องของคุณ โดยระบุ workspace root, git remote URL และชื่อ branch

มีประโยชน์สำหรับ:

  • ค้นหา URL สำหรับดาวน์โหลด build artifacts (ไบนารี รายงาน บันทึก)
  • ตรวจสอบว่า pipeline run สร้าง artifacts ใดบ้าง
list_component_versions

แสดงรายการเวอร์ชันทั้งหมดของ CircleCI component ที่ระบุใน environment โดยมีสถานะการ deploy ข้อมูล commit และ timestamp

เครื่องมือจะแจ้งให้คุณเลือก component และ environment หากไม่ได้ระบุไว้

มีประโยชน์สำหรับ:

  • ระบุว่าเวอร์ชันใดกำลังใช้งานอยู่
  • เลือกเวอร์ชันเป้าหมายสำหรับการ rollback
  • ดูรายละเอียดการ deploy (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 ทำงาน เครื่องมือนี้ใช้ได้ 3 วิธี:

  1. ใช้ Project Slug และ Branch (แนะนำ):

    • ตัวอย่าง: "Run the pipeline for my-project on the main branch"
  2. ใช้ CircleCI URL:

  3. ใช้บริบทโปรเจกต์ในเครื่อง:

    • ใช้งานจาก workspace ในเครื่องของคุณ โดยระบุ workspace root, git remote URL และชื่อ branch

เครื่องมือจะแสดงลิงก์สำหรับติดตามการทำงานของ pipeline

run_rollback_pipeline

สั่ง rollback สำหรับโปรเจกต์ CircleCI เครื่องมือจะแนะนำขั้นตอนแบบโต้ตอบดังนี้:

  1. เลือกโปรเจกต์ — แสดงรายการโปรเจกต์ที่ติดตามเพื่อให้คุณเลือก
  2. เลือก Environment — แสดงรายการ environment ที่พร้อมใช้งาน (เลือกให้อัตโนมัติหากมีเพียงรายการเดียว)
  3. เลือก Component — แสดงรายการ component ที่พร้อมใช้งาน (เลือกให้อัตโนมัติหากมีเพียงรายการเดียว)
  4. เลือกเวอร์ชัน — แสดงเวอร์ชันที่พร้อมใช้งานให้เลือกเป็นเป้าหมายสำหรับ rollback
  5. ตรวจหาโหมด Rollback — ตรวจสอบว่ามีการกำหนดค่า rollback pipeline ไว้หรือไม่
  6. ดำเนินการ Rollback — มีสองตัวเลือก:
    • Pipeline Rollback: สั่งให้ rollback pipeline ทำงาน
    • Workflow Rerun: รัน workflow ก่อนหน้าซ้ำโดยใช้ workflow ID
  7. ยืนยัน — สรุปรายการและขอการยืนยันก่อนดำเนินการ

การแก้ไขปัญหา

วิธีแก้ไขด่วน

ปัญหาที่พบบ่อยที่สุด:

  1. ล้างแคชของแพ็กเกจ:

    npx clear-npx-cache
    npm cache clean --force
    
  2. บังคับใช้เวอร์ชันล่าสุด: เพิ่ม @latest ลงในการกำหนดค่าของคุณ:

    "args": ["-y", "@circleci/mcp-server-circleci@latest"]
    
  3. รีสตาร์ท IDE ทั้งหมด (ไม่ใช่แค่โหลดหน้าต่างใหม่)

ปัญหาการยืนยันตัวตน
  • ข้อผิดพลาด token ไม่ถูกต้อง: ตรวจสอบ CIRCLECI_TOKEN ของคุณใน Personal API Tokens
  • ข้อผิดพลาดด้านสิทธิ์: ตรวจสอบว่า token มีสิทธิ์อ่านโปรเจกต์ของคุณ
  • โหลด environment variables ไม่ได้: ทดสอบด้วย echo $CIRCLECI_TOKEN (Mac/Linux) หรือ echo %CIRCLECI_TOKEN% (Windows)
ปัญหาการเชื่อมต่อและเครือข่าย
  • Base URL: ยืนยันว่า CIRCLECI_BASE_URL คือ https://circleci.com
  • เครือข่ายองค์กร: กำหนดค่า npm proxy หากอยู่หลังไฟร์วอลล์
  • ไฟร์วอลล์บล็อก: ตรวจสอบว่าซอฟต์แวร์รักษาความปลอดภัยบล็อกการดาวน์โหลดแพ็กเกจหรือไม่
ข้อกำหนดของระบบ
  • เวอร์ชัน Node.js: ตรวจสอบว่าเป็นไปตาม ^22.23.4 || ^24.22.1 || >=26.12.1 โดยใช้ node --version
  • อัปเดต Node.js: หากพบปัญหาความเข้ากันได้ ให้พิจารณาใช้ LTS รุ่นล่าสุด
  • ตัวจัดการแพ็กเกจ: ตรวจสอบว่า npm/pnpm ทำงานได้: npm --version
ปัญหาเฉพาะ IDE
  • ตำแหน่งไฟล์กำหนดค่า: ตรวจสอบเส้นทางให้ตรงกับ OS ของคุณ
  • ข้อผิดพลาดทางไวยากรณ์: ตรวจสอบไวยากรณ์ JSON ในไฟล์กำหนดค่า
  • บันทึกคอนโซล: ตรวจสอบคอนโซลสำหรับนักพัฒนาของ IDE เพื่อดูข้อผิดพลาดเฉพาะ
  • ลองใช้ IDE อื่น: ทดสอบใน editor อื่นที่รองรับเพื่อแยกหาสาเหตุของปัญหา
ปัญหาเกี่ยวกับโปรเซส

โปรเซสค้าง — ปิดโปรเซส 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: ลองติดตั้งด้วย Docker หาก npx ล้มเหลวอย่างต่อเนื่อง

ยังต้องการความช่วยเหลือหรือไม่?

  1. ตรวจสอบ GitHub Issues ว่ามีปัญหาคล้ายกันหรือไม่
  2. ระบุ OS, เวอร์ชัน Node และ IDE เมื่อรายงานปัญหา
  3. แชร์ข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องจากคอนโซล IDE

Telemetry

เซิร์ฟเวอร์รองรับเมตริก OpenTelemetry สำหรับติดตามการใช้งานเครื่องมือ โดยจะส่งออกเมตริก เว้นแต่คุณจะตั้งค่า DISABLE_TELEMETRY=true สำหรับการติดตั้งใช้งานระยะไกล เมตริกจะใช้ token เดียวกับคำขอ (PAT รายผู้ใช้หรือ PAT ของเซิร์ฟเวอร์ที่ใช้ร่วมกัน)

MetricDescription
circleci.mcp.tool.invocationsจำนวนครั้งที่เรียกใช้เครื่องมือ
circleci.mcp.tool.duration_msเวลาในการทำงาน หน่วยเป็น ms
circleci.mcp.tool.errorsจำนวนข้อผิดพลาด

การพัฒนา

เริ่มต้นใช้งาน

  1. Clone repository:

    git clone https://github.com/CircleCI-Public/mcp-server-circleci.git
    cd mcp-server-circleci
    
  2. ติดตั้ง dependencies:

    pnpm install
    
  3. Build โปรเจกต์:

    pnpm build
    

สร้าง Docker Container

คุณสามารถ build 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

  1. เริ่ม development server:

    pnpm watch # Keep this running in one terminal
    
  2. เปิด inspector ในเทอร์มินัลแยก:

    pnpm inspector
    
  3. กำหนดค่า environment:

    • เพิ่ม CIRCLECI_TOKEN ของคุณในส่วน Environment Variables ใน UI ของ inspector
    • token ต้องมีสิทธิ์อ่านโปรเจกต์ CircleCI ของคุณ
    • ตั้งค่า CircleCI Base URL ได้ตามต้องการ (ค่าเริ่มต้นคือ https://circleci.com)

การทดสอบ

  • รันชุดทดสอบ:

    pnpm test
    
  • รันทดสอบในโหมด watch ระหว่างการพัฒนา:

    pnpm test:watch
    

ดูแนวทางการร่วมพัฒนาโดยละเอียดเพิ่มเติมได้ที่ CONTRIBUTING.md