MCP tool object parameters are sent as strings; Notion create-pages fails

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

Hey, thanks for the report. This is a known issue with MCP parameter serialization, there’s a very similar thread here: Cursor Auto-Selected Model Stringifies MCP Tool Parameters.

Quick question: are you using auto model selection, or a specific model (like Sonnet or Opus)? In the previous report, the bug only showed up with auto selection, while explicitly selecting a model worked correctly.

If you’re using auto selection, try explicitly selecting Sonnet or Opus as a temporary workaround. If you’re already on a specific model and still hitting the issue, that would be new and important info.

The team is aware of this category of issues. Your report helps with prioritization.

This topic was automatically closed 22 days after the last reply. New replies are no longer allowed.