Skip to content

v2.11.0: Auth to a Good Start

Choose a tag to compare

@jlowin jlowin released this 01 Aug 21:29
· 1072 commits to main since this release
8f8f169

FastMCP 2.11 doubles down on what developers need most: speed and simplicity. This massive release delivers significant performance improvements and a dramatically better developer experience.

🔐 Enterprise-Ready Authentication brings comprehensive OAuth 2.1 support with WorkOS's AuthKit integration. The new AuthProvider interface leverages MCP's support for separate resource and authorization servers, handling API keys and remote authentication with Dynamic Client Registration. AuthKit integration means you can plug into existing enterprise identity systems without rebuilding your auth stack, setting the stage for plug-and-play auth that doesn't require users to become security experts overnight.

⚡ The Experimental OpenAPI Parser delivers dramatic performance improvements through single-pass schema processing and optimized memory usage. OpenAPI integrations are now significantly faster, with cleaner, more maintainable code. (Note: the experimental parser is disabled by default, set FASTMCP_EXPERIMENTAL_ENABLE_NEW_OPENAPI_PARSER=1 to enable it. A message will be shown to all users on the legacy parser encouraging them to try the new one before it becomes the default.)

🧠 Context State Management finally gives you persistent state across tool calls with a simple dict interface, while enhanced meta support lets you expose rich component metadata to clients. Combined with improved type annotations, string-based argument descriptions, and UV transport support, this release makes FastMCP feel more intuitive than ever.

This release represents a TON of community contributions and sets the foundation for even more ambitious features ahead.

What's Changed

New Features 🎉

  • Introduce experimental OpenAPI parser with improved performance and maintainability by @jlowin in #1209
  • Add state dict to Context (#1118) by @mukulmurthy in #1160
  • Expose FastMCP tags to clients via component meta dict by @jlowin in #1281
  • Add _fastmcp meta namespace by @jlowin in #1290
  • Add TokenVerifier protocol support alongside existing OAuthProvider authentication by @jlowin in #1297
  • Add comprehensive OAuth 2.1 authentication system with WorkOS integration by @jlowin in #1327

Enhancements 🔧

  • [🐶] Transform MCP Server Tools by @strawgate in #1132
  • Add --python, --project, and --with-requirements options to CLI commands by @jlowin in #1190
  • Support fastmcp run mcp.json by @strawgate in #1138
  • Support from future import annotations by @jlowin in #1199
  • Optimize OpenAPI parser performance with single-pass schema processing by @jlowin in #1214
  • Log tool name on transform validation error by @strawgate in #1238
  • Refactor get_http_request and context.session_id by @hopeful0 in #1242
  • Support creating tool argument descriptions from string annotations by @jlowin in #1255
  • feat: Add Annotations support for resources and resource templates by @chughtapan in #1260
  • Add UV Transport by @strawgate in #1270
  • Improve OpenAPI-to-JSONSchema conversion utilities by @jlowin in #1283
  • Ensure proxy components forward meta dicts by @jlowin in #1282
  • fix: server argument passing in CLI run command by @chughtapan in #1293
  • Add meta support to tool transformation utilities by @jlowin in #1295
  • feat: Allow Resource Metadata URL as field in OAuthProvider by @dacamposol in #1287
  • Use a simple overwrite instead of a merge for meta by @jlowin in #1296
  • Remove unused TimedCache by @strawgate in #1303
  • refactor: standardize logging usage across OpenAPI utilities by @chi2liu in #1322
  • perf: optimize OpenAPI parsing by reducing dict copy operations by @chi2liu in #1321
  • Structured client-side logging by @cjermain in #1326

Fixes 🐞

  • fix: preserve def reference when referenced in allOf / oneOf / anyOf by @algirdasci in #1208
  • fix: add type hint to custom_route decorator by @zzstoatzz in #1210
  • chore: typo by @richardkmichael in #1216
  • fix: handle non-string $ref values in experimental OpenAPI parser by @jlowin in #1217
  • Skip repeated type conversion and validation in proxy client elicitation handler by @chughtapan in #1222
  • Ensure default fields are not marked nullable by @jlowin in #1224
  • Fix stateful proxy client mixing in multi-proxies sessions by @hopeful0 in #1245
  • Fix invalid async context manager usage in proxy documentation by @zzstoatzz in #1246
  • fix: experimental FastMCPOpenAPI server lost headers in request when init(client with headers) by @itaru2622 in #1254
  • Fix typing, add tests for tool call middleware by @jlowin in #1269
  • Fix: prune hidden parameter defs by @muhammadkhalid-03 in #1257
  • Fix nullable field handling in OpenAPI to JSON Schema conversion by @jlowin in #1279
  • Ensure fastmcp run supports v1 servers by @jlowin in #1332

Breaking Changes 🛫

Docs 📚

Other Changes 🦾

New Contributors

Full Changelog: v2.10.6...v2.11.0