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
- Check the exact class name and import it from its concrete submodule (e.g. fastmcp.server.providers.proxy.ProxyProvider)
- Run dir(fastmcp.server.providers) or check docs to see which lazy names exist
- 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
- Import provider classes from their concrete submodules
- Pin fastmcp versions and read migration notes on upgrade
- Use hasattr/dir to verify lazy exports before importing
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
- module {__name__!r} has no attribute {name!r}
- module {__name__!r} has no attribute {name!r}
- module {__name__!r} has no attribute {name!r}
- Failed to import {module_name} from {file_path}: {e}
- Cannot load spec for {file_path}
AI-assisted analysis of PrefectHQ/fastmcp@1f02114297 (2026-08-29).
Data as JSON: /api/errors/a113d78f8ad34c96.
Report an issue: GitHub.