FastMCP 3.0 is stable. Two betas, two release candidates, 21 new contributors, and more than 100,000 pre-release installs later โ the architecture held up, the upgrade path was smooth, and we're shipping it.
The surface API is largely unchanged โ @mcp.tool() still works exactly as before. What changed is everything underneath: a provider/transform architecture that makes FastMCP extensible, observable, and composable in ways v2 couldn't support. If we did our jobs right, you'll barely notice the redesign. You'll just notice that more is possible.
This is also the release where FastMCP moves from jlowin/fastmcp to PrefectHQ/fastmcp. GitHub forwards all links, PyPI is the same, imports are the same. A major version felt like the right moment to make it official.
Build servers from anything
๐ Components no longer have to live in one file with one server. FileSystemProvider discovers tools from directories with hot-reload. OpenAPIProvider wraps REST APIs. ProxyProvider proxies remote MCP servers. SkillsProvider delivers agent skills as resources. Write your own provider for whatever source makes sense. Compose multiple providers into one server, share one across many, or chain them with transforms that rename, namespace, filter, version, and secure components as they flow to clients. ResourcesAsTools and PromptsAsTools expose non-tool components to tool-only clients.
Ship to production
๐ Component versioning: serve @tool(version="2.0") alongside older versions from one codebase. Granular authorization on individual components with async auth checks, server-wide policies via AuthMiddleware, and scope-based access control. OAuth gets CIMD, Static Client Registration, Azure OBO via dependency injection, JWT audience validation, and confused-deputy protections. OpenTelemetry tracing with MCP semantic conventions. Response size limiting. Background tasks with distributed Redis notification and ctx.elicit() relay. Security fixes include dropping diskcache (CVE-2025-69872) and upgrading python-multipart and protobuf for additional CVEs.
Adapt per session
๐พ Session state persists across requests via ctx.set_state() / ctx.get_state(). ctx.enable_components() and ctx.disable_components() let servers adapt dynamically per client โ show admin tools after authentication, progressively reveal capabilities, or scope access by role.
Develop faster
โก --reload auto-restarts on file changes. Standalone decorators return the original function, so decorated tools stay callable in tests and non-MCP contexts. Sync functions auto-dispatch to a threadpool. Tool timeouts, MCP-compliant pagination, composable lifespans, PingMiddleware for keepalive, and concurrent tool execution when the LLM returns multiple calls in one response.
Use FastMCP as a CLI
๐ฅ๏ธ fastmcp list and fastmcp call query and invoke tools on any server from a terminal. fastmcp discover scans your editor configs (Claude Desktop, Cursor, Goose, Gemini CLI) and finds configured servers by name. fastmcp generate-cli writes a standalone typed CLI where every tool is a subcommand. fastmcp install registers your server with Claude Desktop, Cursor, or Goose in one command.
Build apps (3.1 preview)
๐ฑ Spec-level support for MCP Apps is in: ui:// resource scheme, typed UI metadata via AppConfig, extension negotiation, and runtime detection. The full Apps experience lands in 3.1.
If you hit 3.0 because you didn't pin your dependencies and something breaks โ the upgrade guides will get you sorted. We minimized breaking changes, but a major version is a major version.
Refactor resource behavior and add meta support by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2611
Refactor prompt behavior and add meta support by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2610
feat: Provider abstraction for dynamic MCP components by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2622
Unify component storage in LocalProvider by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2680
Introduce ResourceResult as canonical resource return type by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2734
Introduce Message and PromptResult as canonical prompt types by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2738
Add --reload flag for auto-restart on file changes by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2816
Add FileSystemProvider for filesystem-based component discovery by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2823
Add standalone decorators and eliminate fastmcp.fs module by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2832
Add authorization checks to components and servers by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2855
Decorators return functions instead of component objects by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2856
Add transform system for modifying components in provider chains by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2836
Add OpenTelemetry tracing support by @chrisguidry in https://github.com/PrefectHQ/fastmcp/pull/2869
Add component versioning and VersionFilter transform by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2894
Add version discovery and calling a certain version for components by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2897
Refactor visibility to mark-based enabled system by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2912
Add session-specific visibility control via Context by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2917
Add Skills Provider for exposing agent skills as MCP resources by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2944
Add MCP Apps Phase 1 โ SDK compatibility (SEP-1865) by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3009
Add fastmcp list and fastmcp call CLI commands by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3054
Add fastmcp generate-cli command by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3065
Add CIMD (Client ID Metadata Document) support for OAuth by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2871
Enhancements ๐ง
Convert mounted servers to MountedProvider by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2635
Simplify .key as computed property by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2648
Refactor MountedProvider into FastMCPProvider + TransformingProvider by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2653
Enable background task support for custom component subclasses by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2657
Use CreateTaskResult for background task creation by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2660
Refactor provider execution: components own their execution by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2663
Add supports_tasks() method to replace string mode checks by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2664
Replace type: ignore[attr-defined] with isinstance assertions in tests by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2665
Add poll_interval to TaskConfig by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2666
Refactor task module: rename protocol.py to requests.py and reduce redundancy by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2667
Refactor FastMCPProxy into ProxyProvider by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2669
Move OpenAPI to providers/openapi submodule by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2672
Use ergonomic provider initialization pattern by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2675
Fix ty 0.0.5 type errors by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2676
Remove execution methods from Provider base class by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2681
Add type-prefixed keys for globally unique component identification by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2704
Skip parallel MCP config test on Windows by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2711
Consolidate notification system with unified API by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2710
Skip test_multi_client on Windows by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2714
Parallelize provider operations by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2716
Consolidate get_* and list* methods into single API by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2719
Consolidate execution method chains into single public API by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2728
Add documentation check to required PR workflow by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2730
Parallelize list_* calls in Provider.get_tasks() by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2731
Consistent decorator-based MCP handler registration by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2732
Make ToolResult a BaseModel for serialization support by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2736
Align prompt handler with resource pattern by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2740
Update classes to inherit from FastMCPBaseModel instead of BaseModel by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2739
Convert provider tests to use direct server calls by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2748
Add explicit task_meta parameter to FastMCP.call_tool() by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2749
Add task_meta parameter to read_resource() for explicit task control by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2750
Add task_meta to prompts and centralize fn_key enrichment by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2751
Remove unused include_tags/exclude_tags settings by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2756
Parallelize provider access when executing components by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2744
Add tests for OAuth generator cleanup and use aclosing by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2759
Deprecate tool_serializer parameter by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2753
Feature/supabase custom auth route by @EloiZalczer in https://github.com/PrefectHQ/fastmcp/pull/2632
Add regression tests for caching with mounted server prefixes by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2762
Update CLI banner with FastMCP 3.0 notice by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2766
Make FASTMCP_SHOW_SERVER_BANNER apply to all server startup methods by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2771
Add MCP tool annotations to smart_home example by @bryankthompson in https://github.com/PrefectHQ/fastmcp/pull/2777
Cherry-pick debug logging for OAuth token expiry to main by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2797
Turn off negative CLI flags by default by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2801
Configure ty to fail on warnings by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2804
Dereference $ref in tool schemas for MCP client compatibility by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2814
Add v3.0 feature tracking document by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2822
Remove deprecated WSTransport by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2826
Add composable lifespans by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2828
Replace FastMCP.as_proxy() with create_proxy() function by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2829
Add docs-broken-links command and fix docstring markdown parsing by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2830
Add PingMiddleware for keepalive connections by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2838
Add CLI update notifications by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2840
Add agent skills for testing and code review by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2846
Add loq pre-commit hook for file size enforcement by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2847
Add transport property to Context by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2850
Add loq file size limits and clean up type ignores by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2859
Run sync tools/resources/prompts in threadpool automatically by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2865
Add timeout parameter for tool foreground execution by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2872
Adopt OpenTelemetry MCP semantic conventions by @chrisguidry in https://github.com/PrefectHQ/fastmcp/pull/2886
Add client_secret_post authentication to IntrospectionTokenVerifier by @shulkx in https://github.com/PrefectHQ/fastmcp/pull/2884
Add enable_rich_logging setting to disable rich formatting by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/2893
Rename _fastmcp metadata namespace to fastmcp and make non-optional by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2895
Refactor FastMCP to inherit from Provider by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2901
Swap public/private method naming in Provider by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2902
Add MCP-compliant pagination support by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2903
Support VersionSpec in enable/disable for range-based filtering by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2914
Remove sync notification infrastructure by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2915
Immutable transform wrapping for providers by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2913
Unify discovery API: deduplicate at protocol layer only by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2919
Split transports.py into modular structure by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2921
Move session visibility logic to enabled.py by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2924
Refactor Client class into mixins and add timeout utilities by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2933
Refactor OAuthProxy into focused modules by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2935
Refactor LocalProvider into mixin modules by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2936
Refactor server.py into mixins by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2939
Consolidate test fixtures and refactor large test files by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2941
Refactor transform list methods to pure function pattern by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2942
Add ResourcesAsTools transform by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2943
Add PromptsAsTools transform by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2946
Add client utilities for downloading skills by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2948
Rename Enabled transform to Visibility by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2950
Make duplicate bot less aggressive by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2981
Remove uv lockfile monitoring from Dependabot by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2986
Run static checks with --upgrade, remove lockfile check by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2988
Adjust workflow triggers for Marvin by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3010
Move tests to a reusable action and enable nightly checks by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3017
feat: option to add upstream claims to the FastMCP proxy JWT by @JonasKs in https://github.com/PrefectHQ/fastmcp/pull/2997
Fix ty 0.0.14 compatibility and upgrade dependencies by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3027
fix: automatically include offline_access as a scope in the Azure provider to enable automatic token refreshing by @JonasKs in https://github.com/PrefectHQ/fastmcp/pull/3001
feat: expand --reload to watch frontend file types by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3028
Add fastmcp install stdio command by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3032
Update martian-issue-triage.yml for Workflow editing guidance by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3033
feat: Goose integration + dedicated install command by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3040
[Doc]: fixing spelling issues in multiple files by @didier-durand in https://github.com/PrefectHQ/fastmcp/pull/2996
Add fastmcp discover and name-based server resolution by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3055
feat(context): Add background task support for Context (SEP-1686) by @gfortaine in https://github.com/PrefectHQ/fastmcp/pull/2905
Add server version to banner by @richardkmichael in https://github.com/PrefectHQ/fastmcp/pull/3076
Add @handle_tool_errors decorator for standardized error handling by @dgenio in https://github.com/PrefectHQ/fastmcp/pull/2885
Update Anthropic and OpenAI clients to use Omit instead of NotGiven by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3088
Add ResponseLimitingMiddleware for tool response size control by @dgenio in https://github.com/PrefectHQ/fastmcp/pull/3072
Infer MIME types from OpenAPI response definitions by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3101
Remove require_auth in favor of scope-based authorization by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3103
generate-cli: auto-generate SKILL.md agent skill by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3115
Scope Martian triage to bug-labeled issues for jlowin by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3124
Add Azure OBO dependencies, auth token injection, and documentation by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2918
feat: add Static Client Registration (#3085) by @martimfasantos in https://github.com/PrefectHQ/fastmcp/pull/3086
Add concurrent tool execution with sequential flag by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3022
Add validate_output option for OpenAPI tools by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3134
Relay task elicitation through standard MCP protocol by @chrisguidry in https://github.com/PrefectHQ/fastmcp/pull/3136
Bump py-key-value-aio to >=0.4.0,<0.5.0 by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3143
Support async auth checks by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3152
Make $ref dereferencing optional via FastMCP(dereference_refs=...) by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3151
Expose local_provider property, deprecate FastMCP.remove_tool() by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3155
Add helpers for converting FunctionTool and TransformedTool to SamplingTool by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3062
Updates to github actions / workflows for claude by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3157
Minimize resolved review threads in PRs by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3200
Exclude auto-generated python-sdk docs from CodeRabbit reviews by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3206
Update repository references for transfer to prefecthq by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3207
Fix MDX parsing error and update card images by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3213
Fixes ๐
Let FastMCPError propagate from dependencies by @chrisguidry in https://github.com/PrefectHQ/fastmcp/pull/2646
Fix task execution for tools with custom names by @chrisguidry in https://github.com/PrefectHQ/fastmcp/pull/2645
fix: check the cause of the tool error by @rjolaverria in https://github.com/PrefectHQ/fastmcp/pull/2674
Bump pydocket to 0.16.3 for task cancellation support by @chrisguidry in https://github.com/PrefectHQ/fastmcp/pull/2683
Fix uvicorn 0.39+ test timeouts and FastMCPError propagation by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2699
Fix Prefect website URL in docs footer by @mgoldsborough in https://github.com/PrefectHQ/fastmcp/pull/2701
Fix: resolve root-level $ref in outputSchema for MCP spec compliance by @majiayu000 in https://github.com/PrefectHQ/fastmcp/pull/2720
Fix Provider.get_tasks() to include custom component subclasses by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2729
Fix Proxy provider to return all resource contents by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2742
Fix prompt return type documentation by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2741
fix: Client OAuth async_auth_flow() method causing MCP-SDK self.context.lock error. by @lgndluke in https://github.com/PrefectHQ/fastmcp/pull/2644
Fix rate limit detection during teardown phase by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2757
fix: set pytest-asyncio default fixture loop scope to function by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2758
Fix OAuth Proxy resource parameter validation by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2764
[BugFix] Fix openapi_version Check So 3.1 Is Included by @deeleeramone in https://github.com/PrefectHQ/fastmcp/pull/2768
Fix titled enum elicitation schema to comply with MCP spec by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2773
Fix base_url fallback when url is not set by @bhbs in https://github.com/PrefectHQ/fastmcp/pull/2776
Lazy import DiskStore to avoid sqlite3 dependency on import by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2784
Fix OAuth token storage TTL calculation by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2796
Use consistent refresh_ttl for JTI mapping store by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2799
Return 401 for invalid_grant token errors per MCP spec by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2800
Fix client hanging on HTTP 4xx/5xx errors by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2803
Fix unawaited coroutine warning and treat as test error by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2806
Fix keep_alive passthrough in StdioMCPServer.to_transport() by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2791
Dereference $ref in tool schemas for MCP client compatibility by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2808
Prefix Redis keys with docket name for ACL isolation by @chrisguidry in https://github.com/PrefectHQ/fastmcp/pull/2811
fix smart_home example: HueAttributes schema and deprecated prefix by @zzstoatzz in https://github.com/PrefectHQ/fastmcp/pull/2818
Fix redirect URI validation docs to match implementation by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2824
Fix timeout not propagating to proxy clients in multi-server MCPConfig by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2809
Fix ContextVar propagation for ASGI-mounted servers with tasks by @chrisguidry in https://github.com/PrefectHQ/fastmcp/pull/2844
Fix HTTP transport timeout defaulting to 5 seconds by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2849
Fix decorator error messages to link to correct doc pages by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2858
Fix task capabilities location (issue #2870) by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2875
Bump the uv group across 1 directory with 2 updates by @dependabot[bot] in https://github.com/PrefectHQ/fastmcp/pull/2890
Fix FastAPI mounting examples in docs by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2962
Remove outdated 'FastMCP 3.0 is coming!' CLI banner by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2974
Pin httpx < 1.0 and simplify beta install docs by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2975
Add enabled field to ToolTransformConfig by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2991
fix phue2 import in smart_home example by @zzstoatzz in https://github.com/PrefectHQ/fastmcp/pull/2999
fix: broaden combine_lifespans type to accept Mapping return types by @aminsamir45 in https://github.com/PrefectHQ/fastmcp/pull/3005
fix: type narrowing for skills resource contents by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3023
fix: correctly send resource when exchanging code for the upstream toโฆ by @JonasKs in https://github.com/PrefectHQ/fastmcp/pull/3013
MCP Apps: structured CSP/permissions types, resource meta propagation fix, QR example by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3031
chore: upgrade python-multipart to 0.0.22 (CVE-2026-24486) by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3042
chore: upgrade protobuf to 6.33.5 (CVE-2026-0994) by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3043
fix: use MCP spec error code -32002 for resource not found by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3041
Fix tool_choice reset for structured output sampling by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3014
Fix workflow notification URL formatting in upgrade checks by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3047
Fix Field() handling in prompts by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3050
fix: use SkipJsonSchema to exclude callable fields from JSON schema generation by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3048
fix: Preserve metadata in FastMCPProvider component wrappers by @NeelayS in https://github.com/PrefectHQ/fastmcp/pull/3057
Mock network calls in CLI tests and use MemoryStore for OAuth tests by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3051
Remove OpenAPI timeout parameter, make client optional, surface timeout errors by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3067
fix: enforce redirect URI validation when allowed_client_redirect_uris is supplied by @nathanwelsh8 in https://github.com/PrefectHQ/fastmcp/pull/3066
Fix --reload port conflict when using explicit port by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3070
Fix compress_schema to preserve additionalProperties: false for MCP compatibility by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3102
Fix CIMD redirect allowlist bypass and cache revalidation by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3098
Exclude content-type from get_http_headers() to prevent HTTP 415 errors by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3104
Updated deprecation URL for V3 by @SrzStephen in https://github.com/PrefectHQ/fastmcp/pull/3108
Fix Windows test timeouts in OAuth proxy provider tests by @strawgate in https://github.com/PrefectHQ/fastmcp/pull/3123
Fix session visibility marks leaking across sessions by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3132
Fix unhandled exceptions in OpenAPI POST tool calls by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3133
feat: distributed notification queue + BLPOP elicitation for background tasks by @gfortaine in https://github.com/PrefectHQ/fastmcp/pull/2906
fix: snapshot access token for background tasks (#3095) by @gfortaine in https://github.com/PrefectHQ/fastmcp/pull/3138
Stop duplicating path parameter descriptions into tool prose by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3149
fix: guard client pagination loops against misbehaving servers by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3167
Fix stale get_* references in docs and examples by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3168
Support non-serializable values in Context.set_state by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3171
Fix stale request context in StatefulProxyClient handlers by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3172
Fix include_tags/exclude_tags ignored without tools in MCPConfig by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3186
fix: correct dark mode logo file extension in README by @jfBiswajit in https://github.com/PrefectHQ/fastmcp/pull/3193
Return 405 for GET SSE on stateless HTTP servers by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3195
Fix ty 0.0.17 diagnostics by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3198
Drop diskcache dependency (CVE-2025-69872) by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3185
Fix confused deputy attack via consent binding cookie by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3201
Add JWT audience validation and RFC 8707 warnings to auth providers by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3204
Cache OBO credentials on AzureProvider for token reuse by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3212
Fix invalid uv add command in upgrade guide by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3217
Use standard traceparent/tracestate keys per OTel MCP semconv by @chrisguidry in https://github.com/PrefectHQ/fastmcp/pull/3221
Breaking Changes ๐ซ
Add VisibilityFilter for hierarchical enable/disable by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2708
Remove automatic environment variable loading from auth providers by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2752
Make pydocket optional and unify DI systems by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2835
Add session-scoped state persistence by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2873
Rename ui= to app= and consolidate ToolUI/ResourceUI into AppConfig by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3117
Remove deprecated FastMCP() constructor kwargs by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3148
Move fastmcp dev to fastmcp dev inspector by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3188
Docs ๐
Undocumented McpError exceptions by @ivanbelenky in https://github.com/PrefectHQ/fastmcp/pull/2656
docs(server): add http to transport options in run() method docstring by @Ashif4354 in https://github.com/PrefectHQ/fastmcp/pull/2707
Add v3 breaking changes notice to README by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2712
Add changelog entries for v2.13.1 through v2.14.1 by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2725
Reorganize docs around provider architecture by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2723
Fix documentation to use 'meta' instead of '_meta' for MCP spec field by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2735
Enhance documentation on tool transformation by @shea-parkes in https://github.com/PrefectHQ/fastmcp/pull/2781
Add FastMCP 4.0 preview to documentation by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2831
Add release notes for v2.14.2 and v2.14.3 by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2852
Add missing 3.0.0 version badges and document tasks extra by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2866
Add missing v3 features to tracking docs by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2888
Fix custom provider docs to show correct interface by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2920
Update v3 features that were missed in PRs by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2947
Restructure documentation for FastMCP 3.0 by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2951
Fix broken documentation links by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2952
Clarify installation for FastMCP 3.0 beta by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2953
Prepare docs for v3.0 beta release by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2954
Restructure docs: move transforms to dedicated section by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2956
Remove unecessary pip warning by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2958
Update example MCP version in installation docs by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2959
Update brand images by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2960
Restructure README and welcome page with motivated narrative by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2963
Restructure README and docs with motivated narrative by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2964
Favicon update and Prefect Horizon docs by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2978
Add dependency injection documentation and DI-style dependencies by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2980
docs: document expanded reload behavior and restructure beta sections by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3039
Add output_schema caveat to response limiting docs by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3099
Document token passthrough security in OAuth Proxy docs by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3100
Add missing beta2 features to v3 release tracking by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3105
Update docs to reference beta 2 by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3112
docs: add pre-registered OAuth clients to v3-features by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3129
docs: update all references from 3.0.0b2 to 3.0.0rc1 by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3173
Document cache key identity behavior by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3194
Reorganize docs navigation around Server/Client/Apps pillars by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3197
Overhaul v3.0 upgrade guide by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3205
Update docs for 3.0 GA release by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3216
Add upgrade guides for users coming from the MCP SDK by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3215
Update thumbnail background by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3219
v3.0.0 release notes, changelog, and README updates by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3222
Dependencies ๐ฆ
Bump peter-evans/create-pull-request from 7 to 8 by @dependabot[bot] in https://github.com/PrefectHQ/fastmcp/pull/2623
Bump ty to 0.0.7+ by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/2737
Bump the uv group across 1 directory with 4 updates by @dependabot[bot] in https://github.com/PrefectHQ/fastmcp/pull/2891
Bump ty from 0.0.12 to 0.0.13 by @dependabot[bot] in https://github.com/PrefectHQ/fastmcp/pull/2984
Bump prek from 0.2.30 to 0.3.0 by @dependabot[bot] in https://github.com/PrefectHQ/fastmcp/pull/2982
chore(deps): bump cryptography from 46.0.3 to 46.0.5 in /examples/testing_demo in the uv group across 1 directory by @dependabot[bot] in https://github.com/PrefectHQ/fastmcp/pull/3140
chore(deps): bump cryptography from 46.0.4 to 46.0.5 in the uv group across 1 directory by @dependabot[bot] in https://github.com/PrefectHQ/fastmcp/pull/3147
Other Changes ๐ฆพ
Normalize resource URLs before comparison to support RFC 8707 query parameters by @abhijeethp in https://github.com/PrefectHQ/fastmcp/pull/2967
Bump pydocket to 0.17.2 (memory leak fix) by @chrisguidry in https://github.com/PrefectHQ/fastmcp/pull/2998
Add AzureJWTVerifier for Managed Identity token verification by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3058
Add release notes for v2.14.4 and v2.14.5 by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3064
docs: add v3.0.0rc1 features to v3-features tracking by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3145
docs: remove nonexistent MSALApp from rc1 notes by @jlowin in https://github.com/PrefectHQ/fastmcp/pull/3146
New Contributors
@ivanbelenky made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2656
@rjolaverria made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2674
@mgoldsborough made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2701
@Ashif4354 made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2707
@majiayu000 made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2720
@lgndluke made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2644
@EloiZalczer made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2632
@deeleeramone made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2768
@shea-parkes made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2781
@bryankthompson made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2777
@bhbs made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2776
@shulkx made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2884
@abhijeethp made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2967
@aminsamir45 made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/3005
@JonasKs made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2997
@NeelayS made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/3057
@gfortaine made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2905
@nathanwelsh8 made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/3066
@dgenio made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/2885
@martimfasantos made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/3086
@jfBiswajit made their first contribution in https://github.com/PrefectHQ/fastmcp/pull/3193
Full Changelog: https://github.com/PrefectHQ/fastmcp/compare/v2.14.5...v3.0.0