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

ส่วนหัวค่า
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 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_KEYstdioAPI key
PLANE_WORKSPACE_SLUGstdioเวิร์กสเปซเป้าหมาย
PLANE_BASE_URLไม่บังคับURL ของ Plane API (ค่าเริ่มต้น https://api.plane.so)

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

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

ตัวแปรวัตถุประสงค์
PLANE_INTERNAL_BASE_URLURL ภายในสำหรับการเรียกระหว่างเซิร์ฟเวอร์ ดีกว่า 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.jsPython
PLANE_API_KEYPLANE_API_KEY
PLANE_API_HOST_URLPLANE_BASE_URL
PLANE_WORKSPACE_SLUGPLANE_WORKSPACE_SLUG

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

ใบอนุญาต

MIT — ดู LICENSE