FastMCP compatibility
The dependency is declared as fastmcp>=2.12.2,<5. The ceiling moves up once a
new major version passes the test suite.
| FastMCP | Status |
|---|---|
| 2.12.2 | Tested in CI on every push, on SQLite and PostgreSQL |
| 2.14.3 | Tested in CI on every push |
| 3.0.2, 3.3.1, 3.4.7 | Tested before release; CI runs the newest 3.x (>=3.3,<4) |
| 4.0.10 | Tested before release; CI runs the newest 4.x, on SQLite and PostgreSQL |
| 5.x | Not supported yet. A non-blocking CI job runs the suite against the newest FastMCP with no ceiling, to show what breaks before users find out. |
CI also runs weekly, so a new FastMCP release inside the range is tested even when nothing is pushed.
Python 3.11 or newer is required. CI runs Python 3.13; the examples on this site were run on Python 3.12 with FastMCP 4.0.10.
Differences between FastMCP versions
Section titled “Differences between FastMCP versions”The package hides these, but they explain some choices:
- Composition.
import_server()became async in FastMCP 2.14 and was removed in 4. Usemount(server, "prefix"), which works on every supported version. - HTTP client. FastMCP 2 and 3 depend on
httpx, FastMCP 4 onhttpx2.OpenAIEmbedderuses whichever is installed. - MCP errors. From FastMCP 3.4, a result marked
isErrorkeeps the flag on the tool result rather than in its payload; the classifier sees it either way. - Sessions. Clients on MCP protocol 2026-07-28, including FastMCP 4’s own
Client, open no session over HTTP. See How correlation works.