Complex parameters to tools are not working

Describe the Bug

Cursor does not pass complex parameters to tools. It does however seems to get tool description somehow right still. Which possibly seems to be a problem with how cursor passes the parameter to the server. According FastMCP docs pydantic models are supported on the server side.

Steps to Reproduce

from typing import Literal
from pydantic import BaseModel
from fastmcp import FastMCP

mcp = FastMCP("MCP server")

class DeployConfig(BaseModel):
    """Deployment configuration."""
    environment: Literal["dev", "staging", "prod"]
    version: str
    rollback_on_error: bool = True
    
@mcp.tool()
def deploy_application(config: DeployConfig) -> dict:
    """Deploy application to specified environment.
    
    Args:
        config: Deployment configuration
        
    Returns:
        Deployment status and details
    """
    # Validate environment
    if config.environment == "prod" and not config.version:
        raise ValueError("Version required for production")
    
    # Perform deployment
    result = trigger_deployment(
        env=config.environment,
        version=config.version,
        rollback=config.rollback_on_error
    )
    
    return {
        "status": "success",
        "environment": config.environment,
        "version": config.version,
        "deployment_id": result.id,
        "url": result.url
    }
mcp.run(transport="http", port=8999)

Expected Behavior

The model should be shown when hovering over the tool in mcp configuration and also should be called correctly.

Screenshots / Screen Recordings

Operating System

Linux

Current Cursor Version (Menu → About Cursor → Copy)

Version: 1.7.17
VSCode Version: 1.99.3
Commit: 34881053400013f38e2354f1479c88c9067039a0
Date: 2025-09-29T03:10:26.099Z
Electron: 34.5.8
Chromium: 132.0.6834.210
Node.js: 20.19.1
V8: 13.2.152.41-electron.0
OS: Linux x64 6.14.0-32-generic

It seems cursor always passes that parameter as string instead of passing it as object. Maybe making sure it passes it as object when calling the tool will fix the issue.

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