mrkeyoor.com_
Wed 16 Sept 23:53 UTC
AI Toolsevaluationupdated 26 Aug 2026

fastmcp review

FastMCP is a Python framework for building Model Context Protocol servers, clients, and interactive MCP apps. It turns ordinary functions into tools with generated schemas and handles protocol details such as transports, validation, lifecycle, and authentication.

+116stars / 7d
Verdict

Our FastMCP run installed 95 packages and built in 9 seconds, but test collection failed after 9 seconds on a missing OpenTelemetry SDK module. Use FastMCP when a Python team wants productive server and client abstractions and will test authentication as a separate subsystem. Start with the official SDK when control and minimal dependencies matter more than generated schemas, apps, and framework conveniences.

We ran it

Lab card: what happened when we ran fastmcpScreenshot of fastmcp (gofastmcp.com)
Install✓ · 46s95 packages · 89 MB
Build✓ · 9s
Tests✗ · 9sran, no count parsed
Known vulns0(pip-audit)
Repo1554 files~237,504 lines of source · 59.3 MB · 20 CI workflows · tests dir

Answers from our run

Does fastmcp build from source?

Dependencies installed in 46 seconds (95 packages), and the build succeeded in 9 seconds. We cloned commit 258554d into a clean Debian container with 3 CPUs and no project-specific setup.

Do fastmcp's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does fastmcp have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use fastmcp?

Developers who want the smallest official protocol layer: FastMCP adds an application framework around the official Python SDK.

What are the alternatives to fastmcp?

MCP Python SDK, mcp-use, mcp-agent. Our FastMCP run installed 95 packages and built in 9 seconds, but test collection failed after 9 seconds on a missing OpenTelemetry SDK module.

Setup4/546-second install and 9-second build; test collection failed
Docs5/5Quickstart, API docs, llms.txt, and migration guides are linked
Community5/527,393 stars with active work on August 26, 2026
Maturity4/5v3.4.7 covers server, client, apps, and OAuth with edge cases

Discussed on

  1. hnAccelerating AI with FastMCP Cloud15 points

Who it’s for

Python developers exposing internal functions or data to MCP-compatible assistants.
Teams that need both server and client code under one framework.
Builders adding interactive MCP app interfaces alongside tools, resources, and prompts.
Organizations prepared to test their exact OAuth provider, proxy, and client combination.

Who it’s NOT for

Developers who want the smallest official protocol layer: FastMCP adds an application framework around the official Python SDK.
OAuth deployments that cannot test concurrent refreshes: issue 4901 reports permanent session loss when two client refresh requests race.
Teams generating MCP tools from OpenAPI specs with arrays or non-string headers: issue 4897 reports incorrect path serialization and header type errors.
Operators standardizing on an ASGI server other than Uvicorn and refusing the extra dependency: issue 4883 says importing FastMCP or Client still requires Uvicorn.
Microsoft Entra users assuming ChatGPT Remote MCP works from the sample provider configuration: issue 4839 reports a resource and scope mismatch in v3.4.7.

Setup reality

Our sandbox install succeeded in 46 seconds, adding 95 packages and using 89 MB on disk. The build passed in 9 seconds. Tests failed with exit code 4 after 9 seconds because tests/conftest.py imported opentelemetry.sdk, which was unavailable. Pip-audit found 0 known vulnerabilities.

A local stdio server can start with ordinary Python and no hosted credential. Remote HTTP deployment adds a public base URL, transport choices, TLS, and usually authentication. OAuth providers require their own client IDs, secrets, issuer metadata, scopes, and redirect configuration.

The repository has 20 CI workflow files and a tests directory, but no Dockerfile. Migration guides cover several earlier FastMCP and MCP SDK generations, a clue that version boundaries matter. OpenAPI conversion, proxy authentication, and interactive apps each need tests beyond the small tool example.

A Python function can become an MCP tool

FastMCP wraps an ordinary typed Python function and derives its tool schema, validation, and documentation. The same project includes clients for local or remote servers and interactive apps that can render interfaces inside a conversation. Tools, resources, and prompts are the server building blocks. This is useful when a team wants application-level conventions around MCP rather than assembling protocol messages, transports, and lifecycle handling directly from lower-level pieces.

The checked-out code is substantial. At commit 258554d, our sandbox saw 1,554 files, about 237,504 source lines, and a 59.3 MB checkout. The repository contains a tests directory and 20 CI workflow files, with no Dockerfile. That size reflects more than the decorator shown in the quick example: server transports, client behavior, authentication providers, OpenAPI conversion, apps, and compatibility code all live behind the small public surface.

Servers, clients, and apps share one framework

The server API exposes Python functions as tools and supports resources and prompts. The client side connects to local processes or remote URLs while handling transport negotiation and protocol lifecycle. Apps add interactive interfaces to tool results. Prefect also maintains a separate TypeScript counterpart, but this repository is the Python implementation. For teams using both ends of an MCP connection, shared concepts can reduce glue code and make integration tests easier to read.

The core dependency result was modest for the repository's scope. Our install added 95 packages in 46 seconds and occupied 89 MB. A local stdio tool may need no remote service at all. HTTP changes the job: operators need a reachable URL, TLS termination, authentication policy, and client-specific redirect behavior. FastMCP supplies provider and proxy components, yet credentials, issuer settings, scopes, and deployment secrets remain the application's responsibility.

What happened when we ran it

We ran commit 258554d in a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, Python 3.12, and no secrets. Installation succeeded in 46 seconds. The build completed in 9 seconds. Pip-audit found 0 known vulnerabilities in the installed Python environment. We did not publish a remote server, complete an OAuth login, connect an MCP host, or render an interactive app.

Pytest stopped with exit code 4 after 9 seconds while loading tests/conftest.py. The import from opentelemetry.sdk.trace import TracerProvider raised ModuleNotFoundError: No module named 'opentelemetry.sdk'. The log did not reach a test total, and it does not identify why the package was absent. The finding is therefore precise: the dependencies present in our sandbox could build FastMCP, but they could not collect its repository suite as configured.

OAuth behavior needs concurrency and client tests

Authentication is where the quick tool example stops being representative. Release v3.4.7 fixed an OAuth proxy assertion audience mismatch for one deployment shape. Open issue 4901 reports another edge: concurrent refresh requests can rotate the same client token, leaving the later request with an invalid token and forcing a new login. Issue 4839 describes Microsoft Entra rejecting the resource and scopes generated when ChatGPT Remote MCP connected through AzureProvider. Each report names a specific configuration, so neither supports a claim that FastMCP OAuth is generally broken.

They do support a stricter acceptance plan than our 9-second build. Test login, expiry, refresh, concurrent tabs, retries, and the exact MCP host before production. Also run more than one server worker if that is the intended deployment. Authentication failures can sit outside tool logic, which means a perfectly valid Python function may never be reached. Pin FastMCP, document the provider metadata, and preserve request traces that omit secrets.

OpenAPI conversion still has type edges

FastMCP can turn an OpenAPI description into MCP tools, which is attractive for an existing service. Issue 4897 reports that non-string header values raise type errors and array path values are serialized as Python list representations, while similar query parameters work. That issue applies to specific parameter types and says the relevant code is shared with the v3.4.7 line. Teams converting a large API should test arrays, booleans, headers, paths, and error responses rather than sampling one string query.

GitHub recorded the last push on August 26, 2026, with 27,393 stars and 286 combined issues and pull requests. Release v3.4.7 landed on August 10. That is active maintenance, and the 20 workflow files show considerable automation in the repository. The 46-second install and 89 MB dependency footprint make evaluation easy. Adoption depends on whether FastMCP's abstractions save more code than its version migrations and authentication surface add for your particular server.

Alternatives

ProjectWhat it isPick it when
MCP Python SDK gh↗The official Python SDK for MCP servers and clients.pick this instead when you want the protocol's official abstractions with less framework policy.
mcp-use gh↗A full-stack framework for MCP apps, servers, and agent clients.pick this instead when its web app and agent tooling fit the product better than a Python-first framework.
mcp-agentA Python framework for agents and workflows built around MCP servers.pick this instead when agent orchestration is the main problem and MCP server authoring is secondary.

Sources

  1. FastMCP repository and README
  2. FastMCP v3.4.7 release
  3. Issue 4901: concurrent OAuth refresh rotation
  4. Issue 4897: OpenAPI parameter serialization
  5. Issue 4839: AzureProvider with ChatGPT Remote MCP
  6. Issue 4883: Uvicorn import dependency

More ai tools reviews

eve · MemOS · LongCat-Video · Concat · DLSS5-Feeder · Concat · the whole board →