Plane
ทางการเซิร์ฟเวอร์ Plane MCP อย่างเป็นทางการให้การผสานรวมกับ Plane APIs ช่วยให้สามารถทำงานอัตโนมัติด้วย AI เต็มรูปแบบสำหรับโปรเจกต์ Plane, รายการงาน, ไซเคิล และอื่นๆ
คุณทำอะไรได้บ้างด้วย 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
| ส่วนหัว | ค่า |
|---|---|
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 แทน
เครื่องมือ
เซิร์ฟเวอร์ประกาศเครื่องมือ 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_KEY | stdio | API key |
PLANE_WORKSPACE_SLUG | stdio | เวิร์กสเปซเป้าหมาย |
PLANE_BASE_URL | ไม่บังคับ | URL API ของ Plane (ค่าเริ่มต้น https://api.plane.so) |
การส่งข้อมูลระยะไกลนำข้อมูลรับรองในการเชื่อมต่อ — ขั้นตอน OAuth หรือ ส่วนหัว PAT — และไม่จำเป็นต้องใช้สิ่งเหล่านี้
การโฮสต์เซิร์ฟเวอร์ด้วยตัวเอง:
| ตัวแปร | วัตถุประสงค์ |
|---|---|
PLANE_INTERNAL_BASE_URL | URL ภายในสำหรับการเรียกเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์ ดีกว่า 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.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