v3.0.0
WSTransport Removed
The deprecatedWSTransport client transport has been removed. Use StreamableHttpTransport instead.
Provider Architecture
FastMCP v3 introduces a unified provider architecture for sourcing components. All tools, resources, and prompts now flow through providers:- LocalProvider stores decorator-registered components (
@mcp.tool, etc.) - FastMCPProvider wraps another FastMCP server for composition
- ProxyProvider connects to remote MCP servers
- TransformingProvider adds namespacing and renaming
Mount Namespace Parameter
Theprefix parameter for mount() has been renamed to namespace:
Component Enable/Disable
Theenabled field and enable()/disable() methods have been removed from component objects. Use server or provider methods instead:
only=True to restrict visibility to specific components:
FastMCP(include_tags=..., exclude_tags=...) deprecated:
These init parameters emit deprecation warnings. Use the new methods instead:
Component Lookup Method Parameter Names
The server lookup methods now use semantic parameter names instead of generickey:
FastMCP.get_tool(name=...)(waskey)FastMCP.get_resource(uri=...)(waskey)FastMCP.get_resource_template(uri=...)(waskey)FastMCP.get_prompt(name=...)(waskey)
Component Listing Methods Return Lists
Theget_tools(), get_resources(), get_prompts(), and get_resource_templates() methods now return lists instead of dicts:
.name or .uri attributes. Use list comprehensions or next() for lookups.
Prompt Return Types
Prompt functions now useMessage instead of mcp.types.PromptMessage. The Message class provides auto-serialization and a simpler API:
- Use
Message(content, role="user")instead ofPromptMessage(role=..., content=TextContent(...)) Messageauto-serializes dicts, lists, and Pydantic models to JSONPromptResultnow acceptsstr | list[Message](no singleMessage)- Returning
mcp.types.PromptMessagedirectly is no longer supported
Tool Serializer Deprecated
Thetool_serializer parameter on FastMCP is deprecated. Return ToolResult from your tools for explicit control over serialization. See Custom Serialization for examples.
Auth Provider Automatic Environment Variable Loading Removed
Auth providers no longer automatically read configuration from environment variables. You can still use environment variables, but you must read them yourself:GitHubProvider, GoogleProvider, AzureProvider, Auth0Provider, AWSProvider, WorkOSProvider, DescopeProvider, DiscordProvider, ScalekitProvider, SupabaseProvider, OCIProvider, JWTVerifier, and IntrospectionVerifier.
The FastMCPSettings class has also been simplified - it no longer includes auth-related settings that were previously loaded from environment variables.
Server Banner Environment Variable Renamed
The environment variable for controlling the server banner has been renamed:- Before:
FASTMCP_SHOW_CLI_BANNER - After:
FASTMCP_SHOW_SERVER_BANNER
python server.py directly, not just when using fastmcp run.
v2.14.0
OpenAPI Parser Promotion
The experimental OpenAPI parser is now the standard implementation. The legacy parser has been removed. If you were using the legacy parser: No code changes required. The new parser is a drop-in replacement with improved architecture. If you were using the experimental parser: Update your imports from the experimental module to the standard location:FASTMCP_EXPERIMENTAL_ENABLE_NEW_OPENAPI_PARSER environment variable is no longer needed and can be removed.
Deprecated Features Removed
The following deprecated features have been removed in v2.14.0: BearerAuthProvider (deprecated in v2.11):resource_prefix_format parameter and “protocol” format have been removed. Only the “path” format is supported (this was already the default).
FastMCPProxy client parameter:
v2.13.0
OAuth Token Key Management
The OAuth proxy now issues its own JWT tokens to clients instead of forwarding upstream provider tokens. This improves security by maintaining proper token audience boundaries. What changed: The OAuth proxy now implements a token factory pattern - it receives tokens from your OAuth provider (GitHub, Google, etc.), encrypts and stores them, then issues its own FastMCP JWT tokens to clients. This requires cryptographic keys for JWT signing and token encryption. Default behavior (development): By default, FastMCP automatically manages keys based on your platform:- Mac/Windows: Keys are auto-managed via system keyring, surviving server restarts with zero configuration. Suitable only for development and local testing.
- Linux: Keys are ephemeral (random salt at startup, regenerated on each restart).
- OAuth Token Security - Complete production setup guide
- Key and Storage Management - Detailed explanation of defaults and production requirements
- OAuth Proxy Parameters - Parameter documentation

