Skip to content

list_projects fails on self-hosted Plane v1.3.1 because projects-lite endpoint returns 404 #169

Description

@neo-clon

Summary

plane-mcp-server==0.2.10 appears to call projects-lite when executing list_projects. On a self-hosted Plane v1.3.1 instance, that endpoint does not exist, so list_projects fails with HTTP 404. Pinning the MCP server back to plane-mcp-server==0.2.9 fixes the issue because it uses the regular projects endpoint.

Environment

  • Plane MCP server: plane-mcp-server==0.2.10
  • Plane SDK dependency from PyPI package: plane-sdk==0.2.19
  • Plane self-hosted version: v1.3.1
  • Transport: stdio via uvx
  • Authentication: API key / PAT configured with PLANE_API_KEY
  • Workspace slug: existing workspace slug, redacted here

Observed behavior

Running the MCP tool:

list_projects({"per_page": 10, "order_by": "name"})

eventually fails with:

HTTP 404: Not Found: Page not found.

The authenticated REST API itself is working:

GET /api/v1/users/me/                              -> 200
GET /api/v1/workspaces/<workspace-slug>/projects/  -> 200
GET /api/v1/workspaces/<workspace-slug>/projects-lite/ -> 404

The Plane self-hosted v1.3.1 backend routes expose workspaces/<slug>/projects/, but not workspaces/<slug>/projects-lite/.

Expected behavior

list_projects should work against current self-hosted Plane v1.3.1, either by:

  • using /api/v1/workspaces/<slug>/projects/, or
  • falling back to /projects/ when /projects-lite/ returns 404, or
  • documenting that plane-mcp-server==0.2.10 requires a newer Plane backend than self-hosted v1.3.1.

Workaround

Pinning the MCP server to 0.2.9 works:

{
  "mcpServers": {
    "plane": {
      "command": "uvx",
      "args": ["plane-mcp-server==0.2.9", "stdio"],
      "env": {
        "PLANE_BASE_URL": "https://<self-hosted-plane>",
        "PLANE_API_KEY": "<redacted>",
        "PLANE_WORKSPACE_SLUG": "<workspace-slug>"
      }
    }
  }
}

Direct SDK test with plane-mcp-server==0.2.9 returned the expected project list from /projects/.

Notes

This looks like a regression introduced after 0.2.9, where the projects resource switched from the regular projects endpoint to projects-lite.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions