Plane

ทางการ

เซิร์ฟเวอร์ Plane MCP อย่างเป็นทางการให้การผสานรวมกับ Plane APIs ช่วยให้สามารถทำงานอัตโนมัติด้วย AI เต็มรูปแบบสำหรับโปรเจกต์ Plane, รายการงาน, ไซเคิล และอื่นๆ

GitHub
332
ลองใช้ MCP นี้ผู้สนับสนุน

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

  • สร้างงาน (work items) — ขอให้ผู้ช่วยของคุณสร้างงานในโปรเจกต์ โดยระบุชื่อและรายละเอียดอื่นๆ ผ่านเครื่องมือ workitem
  • ค้นหางานด้วย PQL — ใช้ภาษา Plane Query Language เพื่อแสดงรายการหรือนับจำนวนงานที่กรองตามสถานะ ลำดับความสำคัญ หรือผู้รับผิดชอบ เช่น .
  • จัดการรอบการทำงาน (cycles) — เก็บถาวรหรืออัปเดตรอบการทำงานในโปรเจกต์ เช่น cycle(action="archive", project_id=..., cycle_id=...)
  • เข้าถึงเอกสารอ้างอิงไวยากรณ์ PQL — ขอเครื่องมือ get_pql_reference เพื่อดูไวยากรณ์ PQL ฉบับเต็ม ตัวดำเนินการ และตัวอย่างการใช้งาน

เอกสาร

เซิร์ฟเวอร์ MCP ของ Plane

เซิร์ฟเวอร์ Model Context Protocol สำหรับ Plane ให้เครื่องมือแก่เอเจนต์ AI ในการอ่านและจัดการโปรเจกต์ รายการงาน ไซเคิล โมดูล รีลีส ลูกค้า และอื่นๆ

สร้างบน FastMCP และ plane-sdk อย่างเป็นทางการ

  • เครื่องมือ 30 รายการ หนึ่งรายการต่อทรัพยากร Plane ครอบคลุมการดำเนินการ 207 รายการ
  • ภายในเครื่องหรือระยะไกล — stdio, streamable HTTP, SSE
  • การรับรองความถูกต้องแบบ OAuth หรือ API key

เริ่มต้นอย่างรวดเร็ว

รับ API key จาก Plane: การตั้งค่าเวิร์กสเปซ → โทเค็น API

เพิ่มสิ่งนี้ในการกำหนดค่าของ MCP client ของคุณ:

{
  "mcpServers": {
    "plane": {
      "command": "uvx",
      "args": ["plane-mcp-server", "stdio"],
      "env": {
        "PLANE_API_KEY": "<your-api-key>",
        "PLANE_WORKSPACE_SLUG": "<your-workspace-slug>"
      }
    }
  }
}

uvx ไม่ต้องติดตั้ง ต้องใช้ Python 3.10 ขึ้นไป

สำหรับ Plane ที่โฮสต์เอง เพิ่ม "PLANE_BASE_URL": "https://plane.example.com"

การส่งข้อมูล (Transports)

stdio — ภายในเครื่อง

ทำงานเป็นซับพรอเซสของ MCP client ของคุณ การกำหนดค่าตามที่แสดงด้านบน ต้องใช้ PLANE_API_KEY และ PLANE_WORKSPACE_SLUG

PLANE_API_KEY=... PLANE_WORKSPACE_SLUG=... uvx plane-mcp-server stdio

HTTP พร้อม OAuth — โฮสต์

https://mcp.plane.so/http/mcp

ขั้นตอน OAuth จัดการเมื่อเชื่อมต่อ ไม่ต้องมีข้อมูลรับรองในการกำหนดค่าของคุณ สำหรับ client ที่ไม่รองรับ MCP ระยะไกลโดยกำเนิด ให้เชื่อมต่อกับ mcp-remote:

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://mcp.plane.so/http/mcp"]
    }
  }
}

ต้องใช้ Node.js 22 ขึ้นไป

HTTP พร้อมโทเค็นการเข้าถึงส่วนบุคคล — โฮสต์

https://mcp.plane.so/http/api-key/mcp

ส่วนหัวค่า
AuthorizationBearer <PAT>
X-Workspace-slug<workspace-slug>
{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://mcp.plane.so/http/api-key/mcp"],
      "headers": {
        "Authorization": "Bearer <PAT>",
        "X-Workspace-slug": "<workspace-slug>"
      }
    }
  }
}

SSE — เลิกใช้งานแล้ว

https://mcp.plane.so/sse ถูกดูแลเพื่อความเข้ากันได้ย้อนหลังเท่านั้น ใช้ การส่งข้อมูลแบบ HTTP แทน

เครื่องมือ

เซิร์ฟเวอร์ประกาศเครื่องมือ 30 รายการ หนึ่งรายการต่อทรัพยากร แต่ละรายการรับพารามิเตอร์ action ที่เลือกการดำเนินการ:

workitem(action="create", project_id=..., name="Fix login")
workitem(action="list", project_id=..., pql='state__group = "started"')
cycle(action="archive", project_id=..., cycle_id=...)

คำอธิบายของทุกเครื่องมือแสดงรายการการดำเนินการพร้อมพารามิเตอร์ที่จำเป็นและไม่บังคับ ดังนั้นแคตตาล็อกจึงอธิบายตัวเองได้เมื่อเรียกใช้

→ เอกสารอ้างอิงเครื่องมือและการดำเนินการฉบับเต็ม

การสอบถามรายการงาน

การแสดงรายการ การนับ และการค้นหายอมรับ PQL ภาษาคิวรีของ Plane:

workitem(action="list", project_id=..., pql='state__group = "started" AND priority = "urgent"')
workitem(action="count", pql='assignees__id = "<member id>"', group_by="state_id")

เรียก get_pql_reference สำหรับไวยากรณ์ฉบับเต็ม ตัวดำเนินการ และตัวอย่างที่ใช้งานได้

การอัปเกรดจากเครื่องมือแบบต่อการดำเนินการ

รุ่นก่อนหน้าเปิดเผยเครื่องมือหนึ่งรายการต่อการดำเนินการ API การผสานรวมที่มีอยู่ยังคงทำงานได้: 169 จาก 177 ชื่อเหล่านั้นยังคงแก้ไขไปยังเครื่องมือรวม ดังนั้น พรอมป์หรือสคริปต์ที่บันทึกไว้ซึ่งเรียก create_work_item หรือ list_cycles ไม่ต้อง เปลี่ยนแปลง พวกมันไม่ถูกประกาศอีกต่อไป และยังคงใช้ชื่อพารามิเตอร์ที่มาพร้อมกับ (work_item_id, ไม่ใช่ workitem_id)

เจ็ดชื่อเลือกระหว่างสองการดำเนินการด้วยพารามิเตอร์ (manage_project_archive(archive=False)) ซึ่งคู่เครื่องมือและการดำเนินการหนึ่งคู่ไม่สามารถ สร้างซ้ำได้ การเรียกหนึ่งรายการจะบอกการแทนที่ให้คุณ get_pql_reference ไม่มีการ เปลี่ยนแปลง

การกำหนดค่า

การรับรองความถูกต้อง

ตัวแปรจำเป็นสำหรับวัตถุประสงค์
PLANE_API_KEYstdioAPI key
PLANE_WORKSPACE_SLUGstdioเวิร์กสเปซเป้าหมาย
PLANE_BASE_URLไม่บังคับURL API ของ Plane (ค่าเริ่มต้น https://api.plane.so)

การส่งข้อมูลระยะไกลนำข้อมูลรับรองในการเชื่อมต่อ — ขั้นตอน OAuth หรือ ส่วนหัว PAT — และไม่จำเป็นต้องใช้สิ่งเหล่านี้

การโฮสต์เซิร์ฟเวอร์ด้วยตัวเอง:

ตัวแปรวัตถุประสงค์
PLANE_INTERNAL_BASE_URLURL ภายในสำหรับการเรียกเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์ ดีกว่า PLANE_BASE_URL
REDIS_URLการจัดเก็บโทเค็น OAuth เป็น URL การเชื่อมต่อเดียว (redis:// หรือ rediss:// สำหรับ TLS); ชนะเหนือโฮสต์/พอร์ต
REDIS_HOST / REDIS_PORTการจัดเก็บโทเค็น OAuth; กลับไปใช้ในหน่วยความจำ
PLANE_OAUTH_PROVIDER_*ข้อมูลรับรอง OAuth client และ URL พื้นฐาน
MCP_PATH_PREFIXคำนำหน้าเส้นทางสำหรับเส้นทาง HTTP เมื่อติดตั้งหลังพร็อกซี — /plane ให้บริการ /plane/http/mcp

URI เปลี่ยนเส้นทาง OAuth

การส่งข้อมูล OAuth ตรวจสอบ URI เปลี่ยนเส้นทางของแต่ละ client กับรายการที่อนุญาต client ทั่วไป (Cursor, VS Code, Claude.ai, ตัวเชื่อมต่อ ChatGPT, localhost) ได้รับ อนุญาตโดยค่าเริ่มต้น

เพื่อเพิ่ม client ใหม่โดยไม่ต้องออกเวอร์ชัน ให้เพิ่มรูปแบบ:

export PLANE_OAUTH_ALLOWED_REDIRECT_URIS="https://newclient.com/cb,https://other.app/oauth/*"

* ตรงกับพอร์ต ส่วนเส้นทาง หรือซับโดเมนใดๆ ตรึงโฮสต์ไว้และใช้ ไวลด์การ์ดเฉพาะพอร์ตหรือเส้นทาง

การบันทึก

JSON แบบมีโครงสร้าง การเรียกเครื่องมือแต่ละครั้งบันทึกชื่อ ระยะเวลา สถานะ และ — เมื่อมี — รหัสผู้ใช้ที่ไม่ระบุตัวตนและสลักเวิร์กสเปซ

export LOG_USER_INFO=false    # also log the display name (PII);
export LOG_PAYLOADS=false    # keep request payloads out of logs; default true

เฉพาะการส่งข้อมูล OAuth และ PAT เท่านั้นที่มีชื่อที่แสดง stdio ไม่ได้รับผลกระทบ

การพัฒนา

git clone https://github.com/makeplane/plane-mcp-server
cd plane-mcp-server
uv pip install -e ".[dev]"

รันเซิร์ฟเวอร์กับเวิร์กสเปซ:

PLANE_API_KEY=... PLANE_WORKSPACE_SLUG=... python -m plane_mcp stdio
python -m plane_mcp http            # port 8211

การทดสอบ การจัดรูปแบบ การตรวจสอบ:

pytest                              # no network or credentials needed
ruff format plane_mcp/ tests/       # line length 120
ruff check plane_mcp/ tests/        # rules E, F, I, UP, B

ชุดทดสอบทำงานออฟไลน์เต็มรูปแบบ — ทุกการดำเนินการของทุกทรัพยากรถูก ดำเนินการกับตัวแทนที่ผูกการเรียกแต่ละครั้งกับลายเซ็น plane-sdk จริง ดู plane_mcp/tools/README.md

การทดสอบการผสานรวมแบบสดจะถูกข้ามเว้นแต่คุณจะชี้ไปที่เซิร์ฟเวอร์ที่กำลังทำงาน:

export PLANE_TEST_API_KEY=... PLANE_TEST_WORKSPACE_SLUG=...
export PLANE_TEST_MCP_URL=http://localhost:8211    # optional; this is the default
pytest tests/test_integration.py -v

พวกมันเขียนข้อมูลจริงไปยังเวิร์กสเปซนั้น

โครงสร้างพื้นที่เก็บข้อมูล

เส้นทางเนื้อหา
plane_mcp/__main__.pyจุดเข้า; เลือกการส่งข้อมูลจาก argv[1]
plane_mcp/server.pyหนึ่งแฟกทอรีต่อการส่งข้อมูล
plane_mcp/client.pyแก้ไขข้อมูลรับรองเป็น client plane-sdk
plane_mcp/auth/ผู้ให้บริการ OAuth และการรับรองความถูกต้องส่วนหัว
plane_mcp/tools/พื้นผิวเครื่องมือ: หนึ่งโมดูลต่อทรัพยากร Plane
plane_mcp/toolkit/บล็อกการสร้างที่ใช้ร่วมกันสำหรับพื้นผิวเครื่องมือ
plane_mcp/pql_reference.pyเอกสารอ้างอิงไวยากรณ์ PQL ที่ให้บริการแก่โมเดล

การมีส่วนร่วม

ยินดีต้อนรับ pull requests โปรดรัน pytest และ ruff check ก่อนส่ง เครื่องมือใหม่ ควรมาพร้อมกับค่าคงที่ที่อธิบายใน plane_mcp/tools/README.md

ดู CONTRIBUTING.md และ CODE_OF_CONDUCT.md

การย้ายจากเซิร์ฟเวอร์ Node.js

@makeplane/plane-mcp-server (Node.js) เลิกใช้งานแล้วและไม่ได้รับการดูแล การใช้งาน Python นี้แทนที่

Node.jsPython
PLANE_API_KEYPLANE_API_KEY
PLANE_API_HOST_URLPLANE_BASE_URL
PLANE_WORKSPACE_SLUGPLANE_WORKSPACE_SLUG

แทนที่ command และ args ด้วยการกำหนดค่า stdio ใน เริ่มต้นอย่างรวดเร็ว

สัญญาอนุญาต

MIT — ดู LICENSE