Skip to content

[feature]: Public API parity with plane-sdk / plane-mcp-server for Community Edition #10135

Open

Description

@OsiNubis99

Is there an existing issue for this?

  • I have searched the existing issues

Summary

The official MCP server (plane-mcp-server 0.3.5, built on plane-sdk 0.3.1) calls several /api/v1/ routes that Community Edition does not expose, even though CE already has the underlying models and logic in the internal app API. Those MCP tools return 404/405 against a self-hosted CE instance.

We propose adding these routes to the public API (apps/api/plane/api/), following the plane-sdk contract so the official MCP works on CE without changes, and reusing the existing internal logic. No new models.

SDK call CE today Proposal
GET/POST .../work-items/{id}/dependencies/, DELETE .../dependencies/{related_id}/ .../relations/ exists (GET/POST) with a different payload (issues vs work_item_ids) and response shape; no public delete Add dependencies/ endpoints on top of IssueRelation
POST .../work-items/{id}/archive/, DELETE .../work-items/{id}/unarchive/, GET .../archived-work-items/ Internal only (IssueArchiveViewSet) Public endpoints
GET/PATCH .../projects/{id}/features/ Only via project PATCH (module_view, cycle_view, ...) Thin view over the Project flags
PATCH .../intake-issues/{id}/status/ Status change only via detail PATCH Route to the same logic
GET/POST/PATCH/DELETE .../projects/{id}/work-item-types/ IssueType/ProjectIssueType models, no public route Public CRUD
GET .../workspaces/{slug}/roles/ Fixed roles (5/15/20) Read-only list of the built-in roles
GET .../workspaces/{slug}/work-items/count/ None Count over the same filters as the list
GET/POST/PUT/DELETE .../pages/ (project), archive Internal PageViewSet only Public pages API

Why should this be worked on?

  • Self-hosted CE users who connect an AI assistant through the official MCP get broken tools for common actions (e.g. marking a work item as blocked by another, archiving).
  • The logic and models already exist in CE; this only exposes them with API-key auth and the same permission classes as the rest of /api/v1/.
  • We are happy to implement it (tests included) and split it into small PRs if you prefer. Please let us know if any of these routes should not be part of CE.

Activity

  1. OsiNubis99 commented on Oct 28, 2026

    @OsiNubis99
    Author

    Implementation split into four PRs: #10139 (work item dependencies, archive, count), #10140 (project features, work item types, roles, intake status), #10141 (project pages and work item page links), #10142 (PQL filtering, stacked on #10139). Each was tested end to end with the unmodified plane-mcp-server 0.3.5 against a local CE stack.

  2. pitupi commented on Nov 7, 2026

    @pitupi

    Data point from v1.4.3 Community: the public work item list refuses pql/filters, ?parent= is ignored, and work-items/search matches only title/sequence/identifier. Together with the missing pages/views/drafts routes, a client has to download everything and filter locally; an incremental updated_at__gte on the list would remove most of that traffic under the 60 requests/minute key limit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions