FastMCP 2.10.0 delivers full compliance with the 6/18/2025 MCP spec update, introducing powerful new capabilities for building interactive MCP servers. This release adds elicitation support, which enables servers to request additional information from users during interactions, creating opportunities for human-in-the-loop workflows and more dynamic server-client communication. The update also introduces output schemas and structured outputs for tools, allowing servers to define structured response formats that provide more predictable and rich tool results.
Beyond these headline protocol features, 2.10.0 includes substantial improvements across the FastMCP ecosystem: enhanced HTTP routing with OpenAPI extensions support, updated authentication primitives, configurable algorithms, and more robust error handling throughout the transport layer. Note that this release includes a breaking change to the client.call_tool() return signature, which now returns a CallToolResult object with automatic deserialization of structured outputs while maintaining backward compatibility through the .content attribute.
What's Changed
New Features 🎉
- MCP 6/18/25: Add output schema to tools by @jlowin in #901
- MCP 6/18/25: Elicitation support by @jlowin in #889
Enhancements 🔧
- Update types + tests for SDK changes by @jlowin in #888
- MCP 6/18/25: Update auth primitives by @jlowin in #966
- Add OpenAPI extensions support to HTTPRoute by @maddymanu in #977
- Add title field support to FastMCP components by @jlowin in #982
- Support implicit Elicitation acceptance by @jlowin in #983
- Support 'no response' elicitation requests by @jlowin in #992
- Add Support for Configurable Algorithms by @sstene1 in #997
Fixes 🐞
- Improve stdio error handling to raise connection failures immediately by @jlowin in #984
- Fix type hints for FunctionResource:fn by @CfirTsabari in #986
- Update link to OpenAI MCP example by @mossbanay in #985
- Fix output schema generation edge case by @jlowin in #995
- Remove automatic trailing slash modification from server paths by @jlowin in #998
- Fix OpenAPI array parameter explode handling by @jlowin in #1008
Breaking Changes 🛫
Docs 📚
- Fix a problem in the document. by @github0hello in #979
- Update banner by @jlowin in #981
- Introduce Eunomia authorization middleware integration by @tommitt in #975
- Update middleware imports and documentation by @jlowin in #999
- Update OpenAI docs by @jlowin in #1001
- Add CLI banner by @jlowin in #1005
Examples & Contrib 💡
Other Changes 🦾
New Contributors
- @maddymanu made their first contribution in #977
- @github0hello made their first contribution in #979
- @tommitt made their first contribution in #975
- @CfirTsabari made their first contribution in #986
- @mossbanay made their first contribution in #985
- @sstene1 made their first contribution in #997
Full Changelog: v2.9.2...v2.10.0