PrefectHQ/fastmcp · error · AttributeError

module {__name__!r} has no attribute {name!r}

Error message

module {__name__!r} has no attribute {name!r}

What it means

The fastmcp.server.providers package uses a lazy __getattr__ to import provider classes on demand (e.g. ProxyProvider, OpenAPIProvider). If the requested name is not in the lazy-import table, it raises AttributeError('module ... has no attribute ...').

Source

Thrown at fastmcp_slim/fastmcp/server/providers/__init__.py:69

    "OpenAPIProvider",
    "Provider",
    "ProxyProvider",
    "SkillProvider",
    "SkillsDirectoryProvider",
]


def __getattr__(name: str) -> object:
    """Lazy import for providers to avoid circular imports."""
    if name == "ProxyProvider":
        from fastmcp.server.providers.proxy import ProxyProvider

        return ProxyProvider
    if name == "OpenAPIProvider":
        from fastmcp.server.providers.openapi import OpenAPIProvider

        return OpenAPIProvider
    raise AttributeError(f"module {__name__!r} has no attribute {name!r}")

View on GitHub (pinned to 1f02114297)

Solutions

  1. Check the exact class name and import it from its concrete submodule (e.g. fastmcp.server.providers.proxy.ProxyProvider)
  2. Run dir(fastmcp.server.providers) or check docs to see which lazy names exist
  3. Fix the import path after a fastmcp upgrade by reading the changelog

Example fix

// before
from fastmcp.server.providers import ProxyProvider as P  # ok, but ...
from fastmcp.server.providers import FastMCPProvider  # AttributeError

// after
from fastmcp.server.providers.fastmcp import FastMCPProvider  # concrete submodule
Defensive patterns

Strategy: try-catch

Validate before calling

import fastmcp.server.providers as p
if not hasattr(p, 'ProxyProvider'):
    raise ImportError('This fastmcp version does not lazy-export ProxyProvider')

Type guard

def providers_attr(name: str) -> bool:
    import fastmcp.server.providers as p
    return name in getattr(p, '__getattr__').__code__.co_consts or hasattr(p, name)

Try / catch

try:
    from fastmcp.server.providers import ProxyProvider
except AttributeError:
    from fastmcp.server.providers.proxy import ProxyProvider  # concrete path

Prevention

When it happens

Trigger: from fastmcp.server.providers import SomeProvider where SomeProvider is misspelled, removed, or never exported (e.g. FastMCPProvider, CompositeProvider names that live elsewhere).

Common situations: Migrating from an older fastmcp version where providers were exported directly; IDE auto-imports guessing a wrong module; internal refactors renaming provider classes.

Related errors


AI-assisted analysis of PrefectHQ/fastmcp@1f02114297 (2026-08-29). Data as JSON: /api/errors/a113d78f8ad34c96. Report an issue: GitHub.