We chose FastMCP because it treats MCP servers like FastAPI applications.
Decorator-based DX: Instead of writing verbose class-based boilerplate, we just use
@mcp.tool(). It feels exactly like writing a FastAPI route.
Pydantic Native: Since we heavily use Pydantic for data validation (SERP results, GSC data), FastMCP's native integration saved us hours of conversion work.
Built-in Image Support: FastMCP makes it incredibly easy to return multimodal responses (images + text), which is crucial for our "Site Health Check" features that visualize data.
SSE out-of-the-box: Connecting to Claude Desktop requires a robust Server-Sent Events implementation. FastMCP handles the handshake, keep-alive, and transport details automatically.
It's the "FastAPI moment" for the MCP ecosystem.
Raycast
From @jlowin :
FastMCP 3.0 is the platform MCP deserves in 2026, built to be as durable as it is future-proof:
@jlowin jlowin — “context applications” (state + ACL + long tasks + observability) is exactly where MCP gets painful at scale: multi-source fan-out + stale context + non-idempotent tool runs.
Best-practice: treat every tool call as a versioned contract (Pydantic schemas + semver), persist state as an event log (so you can replay/debug), and add distributed tracing with correlation IDs across sources/steps.
Q: is state storage pluggable (Redis/Postgres) with resumable long-jobs, and do you support per-user ACL down to field-level redaction in composed contexts? 🔥
FastMCP 3.0
@ryan_thill state storage is pluggable, yes. The built-in auth hooks are registered at the tool or server level, so applying it at the field level would require leveraging the auth context yourself to modify the result. You could do this either as a custom wrapper for your tools, or a custom middleware.
Love the "context applications" framing - MCP isn’t hard, relevance is.
Curious what you’ve seen as the biggest source of pain in practice: state across sessions, access control, or debugging/observability once you have multiple sources in the loop?
Also - do you have an opinionated default for tracing tool calls end-to-end (so people don’t live in logs)?
FastMCP 3.0
@dmitry_petrakov I think authentication followed by more granular access control has been a major blocker. State across sessions is more of an enabler than blocker; and observability is something we just always want to improve!
FastMCP 3.0
@vouchy We see this in practice all the time -- common gotchas are tightly coupled tools (either that need to be called in sequence, or with correlated information) that the agent doesn't call correctly. Another is simply having too many tools with too many descriptions; choice paralysis is real.
Community Figma MCP server
Can you tell a little bit more about what you do in version 3, please? How does it differ from 2?
FastMCP 3.0
@anton_tishchenko we have a post that covers all the new features here: https://www.jlowin.dev/blog/fastmcp-3-whats-new
Community Figma MCP server
@jlowin Thank you!
love the shift to stateful context apps over just dumb tool servers. does this replace the need for LangGraph in simpler agents?
The integrated tool experience is so seamless—it’s like a universal adapter that lets you plug in all kinds of data sources and use them right away. But it’d be even easier for newbies to build apps if there were pre-built templates for common use cases, like an automatic weekly report generator.