Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
README.md | 2025-06-23 | 5.6 kB | |
v2.9.0_ Stuck in the Middleware With You source code.tar.gz | 2025-06-23 | 2.7 MB | |
v2.9.0_ Stuck in the Middleware With You source code.zip | 2025-06-23 | 2.8 MB | |
Totals: 3 Items | 5.5 MB | 6 |
FastMCP 2.9 introduces two important features that push beyond the basic MCP protocol. MCP Middleware brings a flexible middleware system for intercepting and controlling server operations - think authentication, logging, rate limiting, and custom business logic without touching core protocol code. Server-side type conversion solves a major developer pain point: while MCP requires string arguments, your functions can now work with native Python types like lists and dictionaries, with automatic conversion handling the complexity.
These features transform FastMCP from a simple protocol implementation into a powerful framework for building sophisticated MCP applications. Combined with the new File utility for binary data and improvements to authentication and serialization, this release makes FastMCP significantly more flexible and developer-friendly while maintaining full protocol compliance.
What's Changed
New Features 🎉
- Add File utility for wrapping binary data by @gorocode in https://github.com/jlowin/fastmcp/pull/843
- Consolidate prefix logic into FastMCP methods by @jlowin in https://github.com/jlowin/fastmcp/pull/861
- Add MCP Middleware by @jlowin in https://github.com/jlowin/fastmcp/pull/870
- Implement server-side type conversion for prompt arguments by @jlowin in https://github.com/jlowin/fastmcp/pull/908
Enhancements 🔧
- fix tool description indentation issue [#844] https://github.com/jlowin… by @zfflxx in https://github.com/jlowin/fastmcp/pull/845
- Add version parameter to FastMCP constructor by @mkyutani in https://github.com/jlowin/fastmcp/pull/842
- Update version to not be positional by @jlowin in https://github.com/jlowin/fastmcp/pull/848
- Add key to component by @jlowin in https://github.com/jlowin/fastmcp/pull/869
- Add session_id property to Context for data sharing by @jlowin in https://github.com/jlowin/fastmcp/pull/881
- Fix CORS documentation example to properly handle preflight requests by @jlowin in https://github.com/jlowin/fastmcp/pull/895
- Simplify trailing slash handling for HTTP endpoints by @jlowin in https://github.com/jlowin/fastmcp/pull/896
- Openapi recursive components by @owtaylor in https://github.com/jlowin/fastmcp/pull/897
- Add httpx.Auth Support to RemoteMCPServer for Custom Authentication methods to multiple MCP Servers by @Jason-CKY in https://github.com/jlowin/fastmcp/pull/906
- Add client-side prompt argument serialization by @jlowin in https://github.com/jlowin/fastmcp/pull/910
Fixes 🐞
- fix: report_progress missing passing related_request_id causes notifications not working in streaming-http by @alexsee in https://github.com/jlowin/fastmcp/pull/838
- Fix JWT issuer validation to support string values per RFC 7519 by @jlowin in https://github.com/jlowin/fastmcp/pull/892
- Fix BearerAuthProvider audience type annotations by @jlowin in https://github.com/jlowin/fastmcp/pull/894
Docs 📚
- Add CLAUDE.md development guidelines by @jlowin in https://github.com/jlowin/fastmcp/pull/880
- Update context docs for session_id property by @jlowin in https://github.com/jlowin/fastmcp/pull/882
- add api ref by @zzstoatzz in https://github.com/jlowin/fastmcp/pull/893
- Fix api ref rendering by @zzstoatzz in https://github.com/jlowin/fastmcp/pull/900
- Simplify docs nav by @jlowin in https://github.com/jlowin/fastmcp/pull/902
- Add fastmcp inspect command by @jlowin in https://github.com/jlowin/fastmcp/pull/904
- Update client docs by @jlowin in https://github.com/jlowin/fastmcp/pull/912
- Update docs nav by @jlowin in https://github.com/jlowin/fastmcp/pull/913
- Update integration documentation for Claude Desktop, ChatGPT, and Claude Code by @jlowin in https://github.com/jlowin/fastmcp/pull/915
- Add http as an alias for streamable http by @jlowin in https://github.com/jlowin/fastmcp/pull/917
- Clean up parameter documentation by @jlowin in https://github.com/jlowin/fastmcp/pull/918
- use new
--exclude
flag by @zzstoatzz in https://github.com/jlowin/fastmcp/pull/907 - Add middleware examples for timing, logging, rate limiting, and error handling by @jlowin in https://github.com/jlowin/fastmcp/pull/919
- ControlFlow -> FastMCP 😅 by @jlowin in https://github.com/jlowin/fastmcp/pull/922
Examples & Contrib 💡
- contrib.mcp_mixin: add support for enabled, mcp_tool: annotations, excl. parm, serializer by @rsp2k in https://github.com/jlowin/fastmcp/pull/860
- Add ATProto (Bluesky) MCP Server Example by @zzstoatzz in https://github.com/jlowin/fastmcp/pull/916
- fix path in atproto example pyproject by @zzstoatzz in https://github.com/jlowin/fastmcp/pull/920
- remove uv source in example by @zzstoatzz in https://github.com/jlowin/fastmcp/pull/921
New Contributors
- @alexsee made their first contribution in https://github.com/jlowin/fastmcp/pull/838
- @zfflxx made their first contribution in https://github.com/jlowin/fastmcp/pull/845
- @mkyutani made their first contribution in https://github.com/jlowin/fastmcp/pull/842
- @gorocode made their first contribution in https://github.com/jlowin/fastmcp/pull/843
- @rsp2k made their first contribution in https://github.com/jlowin/fastmcp/pull/860
- @owtaylor made their first contribution in https://github.com/jlowin/fastmcp/pull/897
- @Jason-CKY made their first contribution in https://github.com/jlowin/fastmcp/pull/906
Full Changelog: https://github.com/jlowin/fastmcp/compare/v2.8.1...v2.9.0