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
