Describe the Bug
When an MCP tool expects an object parameter (e.g. parent with {“type”:“database_id”,“database_id”:“…”}), Cursor appears to serialize it as a string before sending it to the MCP server. The server then receives a string and validation fails (e.g. Zod “Expected object, received string”).
Example: Notion MCP notion-create-pages requires parent to be an object. Calling it with parent: {“type”:“database_id”,“database_id”:“a82efdc4-ab75-4cb0-8aa5-78e6f6e45e4d”} results in the MCP reporting that parent was received as a string.
Steps to Reproduce
Steps to reproduce
Install and connect the Notion MCP (e.g. add https://mcp.notion.com/mcp via mcp-remote in Cursor MCP settings) and sign in to Notion.
Open a new Cursor chat (Chat or Agent).
Ask the assistant to create a page in a Notion database, e.g.:
“Create a task in my Notion ‘My tasks’ database with title ‘Test task’, Due Friday, Status To-do. The database ID is a82efdc4-ab75-4cb0-8aa5-78e6f6e45e4d.”
The assistant will call notion-create-pages with:
parent: {“type”:“database_id”,“database_id”:“a82efdc4-ab75-4cb0-8aa5-78e6f6e45e4d”}
pages: [{ “properties”: { “Task name”: “Test task”, … } }]
Observe the tool result: the Notion MCP returns an error like “Expected object, received string” for the parent argument.
Expected: The tool runs and a new page is created in the database.
Actual: The tool fails with a validation error because parent is received as a string instead of an object.
Optional: mention that the same call works when the MCP client sends parent as a JSON object (e.g. in another client), which points to Cursor serializing object parameters to strings.
Expected Behavior
Expected: Object parameters are sent as JSON objects, not stringified.
Operating System
MacOS
Version Information
Version: 2.4.28 (Universal)
VSCode Version: 1.105.1
Does this stop you from using Cursor
No - Cursor works, but with this issue