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.
Summary
plane-mcp-server==0.2.10appears to callprojects-litewhen executinglist_projects. On a self-hosted Planev1.3.1instance, that endpoint does not exist, solist_projectsfails with HTTP 404. Pinning the MCP server back toplane-mcp-server==0.2.9fixes the issue because it uses the regularprojectsendpoint.Environment
plane-mcp-server==0.2.10plane-sdk==0.2.19v1.3.1uvxPLANE_API_KEYObserved behavior
Running the MCP tool:
eventually fails with:
The authenticated REST API itself is working:
The Plane self-hosted
v1.3.1backend routes exposeworkspaces/<slug>/projects/, but notworkspaces/<slug>/projects-lite/.Expected behavior
list_projectsshould work against current self-hosted Planev1.3.1, either by:/api/v1/workspaces/<slug>/projects/, or/projects/when/projects-lite/returns 404, orplane-mcp-server==0.2.10requires a newer Plane backend than self-hostedv1.3.1.Workaround
Pinning the MCP server to
0.2.9works:{ "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.9returned the expected project list from/projects/.Notes
This looks like a regression introduced after
0.2.9, where the projects resource switched from the regularprojectsendpoint toprojects-lite.