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

License: Apache 2.0 CircleCI npm

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

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

การใช้ 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

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

การใช้ 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 ของคุณไปที่สคริปต์นั้น

หากต้องการค้นหาหรือสร้างไฟล์กำหนดค่าของคุณ ให้เปิดการตั้งค่า 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

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

การใช้ 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 ในเครื่อง

เพิ่มเนื้อหาต่อไปนี้ลงใน 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:

  1. เข้าถึง UI การกำหนดค่า MCP
  2. เลือกสัญลักษณ์ +
  3. เลือกขอบเขต: global หรือ local
  4. ระบุชื่อ (เช่น circleci-remote-mcp)
  5. เลือกโปรโตคอลการขนส่ง: stdio
  6. ระบุเส้นทางคำสั่งไปยังสคริปต์ของคุณ
  7. คลิก บันทึก
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 ที่รองรับ SSOREQUIRE_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_TOKENPAT สำรองที่ใช้ร่วมกันสำหรับคำขอทั้งหมดเมื่อไม่มีการส่ง 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 ยังทำงานได้โดยไม่ขึ้นกับ Host

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

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

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

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

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

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

    • ทำงานจาก 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 เครื่องมือนี้ใช้ได้สามวิธี:

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

    • ใช้ list_followed_projects ก่อนเพื่อรับโปรเจกต์ของคุณ จากนั้น:
    • ตัวอย่าง: "รับ build failures สำหรับ my-project บน main branch"
  2. ใช้ CircleCI URLs:

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

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

เครื่องมือส่งคืน logs ที่จัดรูปแบบรวมถึง:

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

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

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

    • ตัวอย่าง: "รับผลการทดสอบสำหรับ my-project บน main branch"
  2. ใช้ 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
  3. ใช้บริบทโปรเจกต์ในเครื่อง:

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

เครื่องมือส่งคืน:

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

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

get_latest_pipeline_status Retrieves the status ของไปป์ไลน์ล่าสุดสำหรับแบรนช์ที่กำหนด เครื่องมือนี้ใช้งานได้สามวิธี:
  1. การใช้ Project Slug และ Branch (แนะนำ):

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

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

  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. การใช้ 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 ทำงาน เครื่องมือนี้ใช้งานได้สามวิธี:

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

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

  3. การใช้ Local Project Context:

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

เครื่องมือคืนลิงก์สำหรับติดตามการทำงานของ 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. การยืนยัน — สรุปและยืนยันก่อนดำเนินการ

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

Quick Fixes

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

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

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

    "args": ["-y", "@circleci/mcp-server-circleci@latest"]
    
  3. รีสตาร์ท 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 ล้มเหลวอย่างต่อเนื่อง

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

  1. ตรวจสอบ GitHub Issues สำหรับปัญหาที่คล้ายกัน
  2. รวม OS, Node version, และ IDE ของคุณเมื่อรายงานปัญหา
  3. แชร์ข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องจาก 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จำนวนข้อผิดพลาด

การพัฒนา

เริ่มต้น

  1. โคลน repository:

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

    pnpm install
    
  3. สร้างโปรเจกต์:

    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

  1. เริ่มเซิร์ฟเวอร์สำหรับการพัฒนา:

    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