Files
gh-jezweb-claude-skills-ski…/references/common-errors.md
2025-11-30 08:24:49 +08:00

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:

  1. Check server is exported at module level
  2. Verify async/await usage is correct
  3. Ensure Context type hints are present
  4. Validate resource URIs have scheme prefixes
  5. Match resource template parameters exactly
  6. Use JSON-serializable types only
  7. Avoid circular imports (especially in __init__.py)
  8. Don't execute async code at module level
  9. Test locally with fastmcp dev server.py before deploying

Getting Help