Plane
ทางการเซิร์ฟเวอร์ Plane MCP อย่างเป็นทางการให้การผสานรวมกับ Plane APIs ช่วยให้สามารถทำงานอัตโนมัติด้วย AI เต็มรูปแบบสำหรับโปรเจกต์ Plane, รายการงาน, ไซเคิล และอื่นๆ
คุณทำอะไรได้บ้างด้วย Plane MCP?
- สร้างงาน (work items) — สร้างงานในโปรเจกต์ผ่าน
workitemแอ็กชันcreate - สอบถามงานด้วย PQL — แสดงรายการหรือนับจำนวนงานที่กรองด้วย PQL (เช่น สถานะ, ความสำคัญ) โดยใช้
workitemแอ็กชันlist/count - ดูข้อมูลอ้างอิง PQL — ขอไวยากรณ์และตัวดำเนินการ PQL ทั้งหมดผ่าน
get_pql_reference - เก็บถาวรไซเคิล — เก็บถาวรไซเคิลโดยใช้
cycleแอ็กชันarchive
เอกสาร
เซิร์ฟเวอร์ MCP ของ Plane
เซิร์ฟเวอร์ Model Context Protocol สำหรับ Plane ให้เครื่องมือแก่เอเจนต์ AI ในการอ่านและจัดการโปรเจกต์ ไอเท็มงาน ไซเคิล โมดูล รีลีส ลูกค้า และอื่นๆ
สร้างบน FastMCP และ plane-sdk อย่างเป็นทางการ
- 28 เครื่องมือ หนึ่งรายการต่อทรัพยากร Plane ครอบคลุม 183 การดำเนินการ
- ในเครื่องหรือระยะไกล — stdio, streamable HTTP, SSE
- การรับรองความถูกต้อง ด้วย OAuth หรือ API key
เริ่มต้นอย่างรวดเร็ว
รับ API key จาก Plane: การตั้งค่าเวิร์กสเปซ → API tokens
เพิ่มสิ่งนี้ในการกำหนดค่าของ 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"
ทรานสปอร์ต
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 จัดการเมื่อเชื่อมต่อ ไม่ต้องมีข้อมูลประจำตัวในการกำหนดค่าของคุณ สำหรับไคลเอนต์ที่ไม่รองรับ MCP ระยะไกลแบบเนทีฟ ให้เชื่อมบริดจ์ด้วย mcp-remote:
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["mcp-remote@latest", "https://mcp.plane.so/http/mcp"]
}
}
}
ต้องใช้ Node.js 22 ขึ้นไป
HTTP พร้อม personal access token — โฮสต์
https://mcp.plane.so/http/api-key/mcp
| ส่วนหัว | ค่า |
|---|---|
Authorization | Bearer <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 transport แทน
เครื่องมือ
เซิร์ฟเวอร์ประกาศเครื่องมือ 28 รายการ หนึ่งรายการต่อทรัพยากร แต่ละตัวรับพารามิเตอร์ 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_KEY | stdio | API key |
PLANE_WORKSPACE_SLUG | stdio | เวิร์กสเปซเป้าหมาย |
PLANE_BASE_URL | ไม่บังคับ | URL ของ Plane API (ค่าเริ่มต้น https://api.plane.so) |
ทรานสปอร์ตระยะไกลนำข้อมูลประจำตัวในการเชื่อมต่อ — ขั้นตอน OAuth หรือส่วนหัว PAT — และไม่จำเป็นต้องใช้สิ่งเหล่านี้
การโฮสต์เซิร์ฟเวอร์เอง:
| ตัวแปร | วัตถุประสงค์ |
|---|---|
PLANE_INTERNAL_BASE_URL | URL ภายในสำหรับการเรียกระหว่างเซิร์ฟเวอร์ ดีกว่า PLANE_BASE_URL |
REDIS_HOST / REDIS_PORT | ที่จัดเก็บโทเค็น OAuth; สำรองเป็นหน่วยความจำ |
PLANE_OAUTH_PROVIDER_* | ข้อมูลรับรอง OAuth client และ URL ฐาน |
MCP_PATH_PREFIX | คำนำหน้าเส้นทางสำหรับเส้นทาง HTTP เมื่อติดตั้งหลังพร็อกซี — /plane ให้บริการ /plane/http/mcp |
OAuth redirect URI
OAuth transporters ตรวจสอบ redirect URI ของแต่ละไคลเอนต์กับรายการที่อนุญาต ไคลเอนต์ทั่วไป (Cursor, VS Code, Claude.ai, ตัวเชื่อมต่อ ChatGPT, localhost) อนุญาตโดยค่าเริ่มต้น
เพื่อเพิ่มไคลเอนต์ใหม่โดยไม่ต้องออกเวอร์ชัน ให้เพิ่มรูปแบบ:
export PLANE_OAUTH_ALLOWED_REDIRECT_URIS="https://newclient.com/cb,https://other.app/oauth/*"
* ตรงกับพอร์ต ส่วนเส้นทาง หรือซับโดเมนใดก็ได้ ให้ยึดโฮสต์และใช้ไวลด์การ์ดเฉพาะพอร์ตหรือเส้นทาง
การบันทึก
JSON แบบมีโครงสร้าง ทุกการเรียกเครื่องมือบันทึกชื่อ ระยะเวลา สถานะ และเมื่อมี — รหัสผู้ใช้ที่ไม่ระบุตัวตนและสลักเวิร์กสเปซ
export LOG_USER_INFO=true # also log the display name (PII); default false
เฉพาะ OAuth และ PAT transport ที่มีชื่อแสดง; 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
พวกเขาเขียนข้อมูลจริงลงในเวิร์กสเปซนั้น
โครงสร้าง Repository
| เส้นทาง | เนื้อหา |
|---|---|
plane_mcp/__main__.py | จุดเริ่มต้น; เลือกทรานสปอร์ตจาก argv[1] |
plane_mcp/server.py | หนึ่งแฟคทอรีต่อทรานสปอร์ต |
plane_mcp/client.py | แก้ไขข้อมูลประจำตัวเป็นไคลเอนต์ plane-sdk |
plane_mcp/auth/ | ผู้ให้บริการ OAuth และการรับรองส่วนหัว |
plane_mcp/tools/ | พื้นผิวเครื่องมือ: หนึ่งโมดูลต่อทรัพยากร Plane |
plane_mcp/toolkit/ | บล็อกพื้นฐานที่ใช้ร่วมกันสำหรับพื้นผิวเครื่องมือ |
plane_mcp/pql_reference.py | เอกสารอ้างอิงไวยากรณ์ PQL ที่ให้บริการแก่โมเดล |
การมีส่วนร่วม
ยินดีรับ pull requests โปรดรัน pytest และ ruff check ก่อนส่ง; เครื่องมือใหม่ควรมาพร้อมกับ invariant ที่อธิบายใน plane_mcp/tools/README.md
ดู CONTRIBUTING.md และ CODE_OF_CONDUCT.md
การย้ายจากเซิร์ฟเวอร์ Node.js
@makeplane/plane-mcp-server (Node.js) เลิกใช้งานและไม่ได้รับการดูแล การใช้งาน Python นี้แทนที่
| Node.js | Python |
|---|---|
PLANE_API_KEY | PLANE_API_KEY |
PLANE_API_HOST_URL | PLANE_BASE_URL |
PLANE_WORKSPACE_SLUG | PLANE_WORKSPACE_SLUG |
แทนที่ command และ args ด้วยการกำหนดค่า stdio ใน เริ่มต้นอย่างรวดเร็ว
ใบอนุญาต
MIT — ดู LICENSE