4.6 KiB
FastMCP Common Errors Reference
Quick reference for the 15 most common FastMCP errors and their solutions.
Error 1: Missing Server Object
Error: RuntimeError: No server object found at module level
Fix: Export server at module level: mcp = FastMCP("name")
Why: FastMCP Cloud requires module-level server object
Source: FastMCP Cloud documentation
Error 2: Async/Await Confusion
Error: RuntimeError: no running event loop
Fix: Use async def for async operations, don't mix sync/async
Example: Use await client.get() not client.get()
Source: GitHub issues #156, #203
Error 3: Context Not Injected
Error: TypeError: missing required argument 'context'
Fix: Add type hint: async def tool(context: Context):
Why: Type hint is required for context injection
Source: FastMCP v2 migration guide
Error 4: Resource URI Syntax
Error: ValueError: Invalid resource URI
Fix: Include scheme: @mcp.resource("data://config")
Valid schemes: data://, file://, info://, api://
Source: MCP Protocol specification
Error 5: Resource Template Parameter Mismatch
Error: TypeError: missing positional argument
Fix: Match parameter names: user://{user_id} → def get_user(user_id: str)
Why: Parameter names must exactly match URI template
Source: FastMCP patterns documentation
Error 6: Pydantic Validation Error
Error: ValidationError: value is not valid
Fix: Ensure type hints match data types
Best practice: Use Pydantic models for complex validation
Source: Pydantic documentation
Error 7: Transport/Protocol Mismatch
Error: ConnectionError: different transport
Fix: Match client/server transport (stdio or http)
Server: mcp.run(transport="http")
Client: {"transport": "http", "url": "..."}
Source: MCP transport specification
Error 8: Import Errors (Editable Package)
Error: ModuleNotFoundError: No module named 'my_package'
Fix: Install in editable mode: pip install -e .
Alternative: Use absolute imports or add to PYTHONPATH
Source: Python packaging documentation
Error 9: Deprecation Warnings
Error: DeprecationWarning: 'mcp.settings' deprecated
Fix: Use os.getenv() instead of mcp.settings.get()
Why: FastMCP v2 removed settings API
Source: FastMCP v2 migration guide
Error 10: Port Already in Use
Error: OSError: [Errno 48] Address already in use
Fix: Use different port: --port 8001
Alternative: Kill process: lsof -ti:8000 | xargs kill -9
Source: Common networking issue
Error 11: Schema Generation Failures
Error: TypeError: not JSON serializable
Fix: Use JSON-compatible types (no NumPy arrays, custom classes)
Example: Convert: data.tolist() or data.to_dict()
Source: JSON serialization requirements
Error 12: JSON Serialization
Error: TypeError: Object of type 'datetime' not JSON serializable
Fix: Convert to string: datetime.now().isoformat()
Apply to: datetime, bytes, custom objects
Source: JSON specification
Error 13: Circular Import Errors
Error: ImportError: cannot import name 'X' from partially initialized module
Fix: Avoid factory functions in __init__.py, use direct imports
Example: Import APIClient directly, don't use get_api_client() factory
Why: Cloud deployment initializes modules differently
Source: Production cloud deployment errors
Error 14: Python Version Compatibility
Error: DeprecationWarning: datetime.utcnow() deprecated
Fix: Use datetime.now(timezone.utc) (Python 3.12+)
Why: Python 3.12+ deprecated some datetime methods
Source: Python 3.12 release notes
Error 15: Import-Time Execution
Error: RuntimeError: Event loop is closed
Fix: Don't create async resources at module level
Example: Use lazy initialization: create resources when needed, not at import
Why: Event loop not available during module import
Source: Async event loop management
Quick Debugging Checklist
When encountering errors:
- ✅ Check server is exported at module level
- ✅ Verify async/await usage is correct
- ✅ Ensure Context type hints are present
- ✅ Validate resource URIs have scheme prefixes
- ✅ Match resource template parameters exactly
- ✅ Use JSON-serializable types only
- ✅ Avoid circular imports (especially in
__init__.py) - ✅ Don't execute async code at module level
- ✅ Test locally with
fastmcp dev server.pybefore deploying
Getting Help
- FastMCP GitHub: https://github.com/jlowin/fastmcp/issues
- Context7 Docs:
/jlowin/fastmcp - This Skill: See SKILL.md for detailed solutions