Summary
add_work_items_to_module appears to attach the work item to the module, but the MCP tool reports:
From what I can see, the Plane API operation itself succeeds. The failure seems to happen when the MCP layer handles the successful response.
Environment
plane-mcp-server==0.2.8
plane-sdk==0.2.8
fastmcp==2.14.4
- Self-hosted Plane instance:
v2.5.0
Reproduction
Call the MCP tool:
add_work_items_to_module(
project_id="<project-id>",
module_id="<module-id>",
issue_ids=["<work-item-id>"],
)
Actual Behavior
The MCP tool returns:
tool call failed for `plane/add_work_items_to_module`
Caused by:
Unexpected response type
However, the work item is attached successfully. A follow-up list_module_work_items call shows the work item in the module, and repeated calls do not create duplicates.
Expected Behavior
If the Plane API operation succeeds, the MCP tool should report success or return the API response in a shape accepted by the MCP/FastMCP layer.
Evidence
Raw Plane API behavior:
POST /api/v1/workspaces/{workspace_slug}/projects/{project_id}/modules/{module_id}/module-issues/
body: { "issues": ["<work-item-id>"] }
response: 200 application/json
top-level response type: JSON array/list of module-issue association records
This matches the public Plane API docs for "Add work items to module", which show Response 200 as a JSON array.
SDK behavior:
client.modules.add_work_items(...)
This succeeds and returns a Python list of module/work-item association records.
MCP behavior:
add_work_items_to_module(...)
This performs the operation successfully, but reports Unexpected response type.
Possible Cause
The SDK method appears to be annotated or advertised as returning None, while the Plane API returns a JSON array and the SDK returns that array.
For example:
def add_work_items(...) -> None:
return self._post(...)
So the MCP/FastMCP response schema may expect None, receive a list, and reject the successful response.
Related
This may be related to #58, but seems distinct: #58 is about array parameters being serialized incorrectly, while here the array request is accepted and the operation succeeds.
Links
Summary
add_work_items_to_moduleappears to attach the work item to the module, but the MCP tool reports:From what I can see, the Plane API operation itself succeeds. The failure seems to happen when the MCP layer handles the successful response.
Environment
plane-mcp-server==0.2.8plane-sdk==0.2.8fastmcp==2.14.4v2.5.0Reproduction
Call the MCP tool:
Actual Behavior
The MCP tool returns:
However, the work item is attached successfully. A follow-up
list_module_work_itemscall shows the work item in the module, and repeated calls do not create duplicates.Expected Behavior
If the Plane API operation succeeds, the MCP tool should report success or return the API response in a shape accepted by the MCP/FastMCP layer.
Evidence
Raw Plane API behavior:
This matches the public Plane API docs for "Add work items to module", which show
Response 200as a JSON array.SDK behavior:
This succeeds and returns a Python
listof module/work-item association records.MCP behavior:
add_work_items_to_module(...)This performs the operation successfully, but reports
Unexpected response type.Possible Cause
The SDK method appears to be annotated or advertised as returning
None, while the Plane API returns a JSON array and the SDK returns that array.For example:
So the MCP/FastMCP response schema may expect
None, receive alist, and reject the successful response.Related
This may be related to #58, but seems distinct: #58 is about array parameters being serialized incorrectly, while here the array request is accepted and the operation succeeds.
Links