# exposure grep -rn "mcp.server.fastmcp" . grep -A1 "^@mcp\." server.py | grep -c "^def" grep -n "Hint\b\|inputSchema\|outputSchema\|mimeType" tests/*.py grep -n "^import httpx" server.py; grep -n "^httpx" requirements.txt # the rename, in ONE edit # from mcp.server.fastmcp import FastMCP -> from mcp.server.mcpserver import MCPServer # FastMCP("name") -> MCPServer("name") # attribute reads: .destructiveHint -> .destructive_hint, .inputSchema -> .input_schema # constructors: ToolAnnotations(destructiveHint=True) still works, leave it # requirements.txt: mcp -> mcp>=2,<3, and declare httpx if you import it make lint && python3 -m unittest discover -s tests # stdio smoke test: hold stdin open { printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"p","version":"0"}}}' \ '{"jsonrpc":"2.0","method":"notifications/initialized"}' \ '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'; sleep 5; } | python3 server.py 2>/dev/null