modelcontextprotocol / modelcontextprotocol/servers
[Asana] V2 MCP Server crashes (500 Error) on get_task / update_tasks due to hardcoded V1 schema (task_id)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 90.5k
- Forks
- 11.7k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 5
Description
Describe the bug
The Asana MCP Connector (currently utilized in Claude.ai) is broken for single-task operations like get_task and update_tasks. The connector appears to still rely on the deprecated V1 tool schema, specifically sending the task_id parameter instead of the required V2 task_gid parameter.
When this legacy payload is sent to the new Asana V2 MCP server (https://mcp.asana.com/v2/mcp), the Asana server fails to handle the missing V2 schema parameters, crashes, and returns a 500 Internal Server Error. List operations like get_tasks continue to work normally as their schema requirements are less strict.
To Reproduce
Steps to reproduce the behavior:
Enable the Asana MCP connector in Claude.ai.
Prompt Claude to read or update a specific single task (e.g., "Read task 1213431798432341").
Claude executes the tool call using the hardcoded V1 schema parameter: {"task_id": "1213431798432341"}.
The connector forwards this payload to the Asana V2 MCP server.
The request fails with a 500 Internal Server Error because the V2 server strictly expects task_gid.
Expected behavior
The MCP connector should fetch and respect the current tool parameters from the Asana V2 tools/list command. Specifically, it needs to use task_gid instead of task_id for single-task operations to ensure compatibility with the V2 endpoint.
Logs
Instead of a 400 Bad Request, the Asana V2 server crashes and returns the following 500 error trace back to Claude:
JSON
{
"error": "server_error",
"message": "Oops! An unexpected error occurred...",
"phrase": "2 bright starfish dig awfully often"
}
Example of the V1 payload Claude attempts to generate based on the current connector schema:
JSON
{
"name": "get_task",
"input": {
"task_id": "1213431798432341",
"opt_fields": "name,completed"
}
}
Additional context
The issue started appearing around May 27, 2026. I reached out to Asana's API Support regarding the 500 crash, and they confirmed the root cause lies in the outdated connector schema:
Asana Support Response:
"You’re right: a legacy payload (like task_id instead of task_gid) should be rejected as invalid (400), not crash as a 500. The V2 MCP server expects the current parameter names and constraints, and the only authoritative source for those is the tools/list command (not any static schema). To unblock the connector, the fix is to update the tool call to use the V2 parameter names shown in tools/list (for example, task_gid for single-task operations)."
Since the tool schema is hardcoded within the connector, users cannot bypass this by prompting Claude to use task_gid (the call fails pre-validation on Anthropic's side). The schema must be updated in the repository.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the connector's hardcoded schemas for the get_task and update_tasks entry points, then compare them with the parameters returned by the Asana V2 tools/list command. Done means single-task calls use the current task_gid parameter and no longer reproduce the reported 500 error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api, backend-api-design
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100