Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
402e5aaf-9ff8-4eae-a895-22c05eaad91f
I’ve run into a limitation in how MCP tools work in Cursor that currently prevents full integration of our task system (TaskTime) with the agent.
What I’ve done
In my TaskTime MVP (vibe-code) project I run the backend on http://localhost:3000 and expose a task API.
I implemented an MCP server user-tasktime-issues (Node + @modelcontextprotocol/sdk) which:
via the get_issue_by_key tool calls TaskTime and returns a ticket by key (TTMP-81, LIVE-3, etc.),
via the update_issue_ai_flags and update_issue_ai_status tools updates AI-related flags for an issue,
via the list_mvp_livecode_active_issues tool returns active issues from the meta‑project.
The MCP server is successfully registered in Cursor (~/.cursor/mcp.json):
“mcpServers”: {
“tasktime-gatekeeper”: { … },
“user-tasktime-issues”: {
“command”: “node”,
“args”: [“/Users/pavelnovak/tasktime-mvp/mcps/tasktime-issues/dist/index.js”],
“env”: {
“TASKTIME_API_BASE_URL”: “http://localhost:3000”
}
}
}
In Tools & MCP the server appears as user-tasktime-issues, and all four tools work:
when I call get_issue_by_key manually with
{ “key”: “TTMP-81” }
the MCP server correctly returns the ticket JSON from TaskTime.
What I’m trying to achieve
I want the Cursor agent, given a user phrase like:
“возьми TTMP‑81” (“take TTMP‑81”)
to do the following:
Parse the issue key TTMP-81 using the regexp [A-Z]{2,10}-\d+.
Call the MCP tool get_issue_by_key with the argument { “key”: “TTMP-81” }.
Use the response to build a concrete plan for working on that issue.
The parsing logic and tool selection are already described in the tasktime-issues-gateway skill, so on the prompt/skill side everything is prepared.
What’s going wrong now
From the logs I can see that:
Cursor does find the MCP server user-tasktime-issues and the get_issue_by_key tool.
But when the tool is called automatically via CallMcpTool, no arguments are passed at all:
the MCP server receives a request with no key field;
on the Cursor side I see errors like:
{“error”: “MCP error -32603: Missing required "key" argument”}
If I call the same tool manually via the MCP panel with { “key”: “TTMP-81” }, everything works:
MCP calls TaskTime,
returns the correct ticket,
no errors.
From the agent’s reply it’s also clear that it is aware of some limitation: it mentions that the “CallMcpTool schema doesn’t support dynamic arguments, so it has to ask for the ticket text manually”.
So technically:
the MCP server and tools are implemented correctly,
but the current CallMcpTool behavior in Cursor/the agent does not pass dynamic arguments (in particular key), even though the skill explicitly says they should be provided.
What I’d like from the platform
Confirmation whether this is indeed a current limitation of CallMcpTool (arguments not supported / being ignored) for the agent I’m using.
Information on whether there is already a plan/timeline for:
allowing CallMcpTool to accept and forward arguments to MCP tools; or
providing another recommended way to pass parameters (e.g. a standard JSON argument format).
Ideally, a small example of the “correct” schema/usage for calling such tools, e.g.:
get_issue_by_key({ “key”: “TTMP-81” })
derived from user text.
It’s very important for me that the agent can pull tasks from our system by ticket key without manually copying the description. The MCP server and backend are already implemented and working; the only missing piece is the ability to safely pass arguments from CallMcpTool into the MCP tool.
Steps to Reproduce
Set up a simple MCP server (Node + @modelcontextprotocol/sdk) with a tool that has a required argument, e.g.:
{
“name”: “get_issue_by_key”,
“inputSchema”: {
“type”: “object”,
“properties”: {
“key”: { “type”: “string” }
},
“required”: [“key”],
“additionalProperties”: false
}
}
Register this server in ~/.cursor/mcp.json under mcpServers (in my case as user-tasktime-issues) and verify in Settings → Tools & MCP that:
the server is listed and green,
the tool get_issue_by_key can be called manually with:
{ “key”: “TTMP-81” }
and returns a JSON payload (any static JSON is fine to reproduce).
Create a skill / rule that tells the agent:
to extract an issue key from the user message using regex [A-Z]{2,10}-\d+ (e.g. TTMP-81);
and then call MCP tool get_issue_by_key with arguments:
{“key”: “<extracted_key>”}.
Open a new chat in Cursor (with that skill active) and send a message like:
возьми TTMP‑81 (or take TTMP-81)
Observe in the MCP tool output and server logs that:
Cursor does select the MCP server and the get_issue_by_key tool,
but the actual CallMcpTool request is sent without the key argument, and the MCP server returns an error such as:
{“error”: “MCP error -32603: Missing required "key" argument”}
As a control, call the same tool manually via the MCP panel with:
{ “key”: “TTMP-81” }
and verify that it succeeds, which confirms the bug is specifically in the automatic CallMcpTool invocation not passing arguments.
Operating System
MacOS
Version Information
Version: 2.6.18 (Universal)
VSCode Version: 1.105.1
Commit: 68fbec5aed9da587d1c6a64172792f505bafa250
Date: 2026-03-10T02:01:17.430Z
Build Type: Stable
Release Track: Default
Electron: 39.6.0
Chromium: 142.0.7444.265
Node.js: 22.22.0
V8: 14.2.231.22-electron.0
OS: Darwin arm64 25.3.0
For AI issues: add Request ID with privacy disabled
402e5aaf-9ff8-4eae-a895-22c05eaad91f
Does this stop you from using Cursor
No - Cursor works, but with this issue