MCP server frameworks compared: FastMCP vs mcp-use vs the official Python and TypeScript SDKs
Four ways to build an MCP server in 2026: the official Python SDK (v2) and TypeScript SDK (v2), Prefect's FastMCP and Manufact's mcp-use. Covers languages, schemas, transports, auth, MCP Apps (UI), local testing, deployment and license.
Comparison
| Entry | Language and package | Defining a tool | Transports | Server auth | MCP Apps (UI) | Local testing | Deploy story | License |
|---|---|---|---|---|---|---|---|---|
| MCP Python SDK | Python; PyPI mcp 2.3.0 (README: Python 3.11+). v2 API: from mcp.server import MCPServer | @mcp.tool() on a type-hinted function; schema and validation generated from the hints | stdio, Streamable HTTP and SSE; the same package includes a full Client | Resource-server pattern: implement TokenVerifier to check OAuth 2.1 bearer tokens; client-side OAuth helpers | Yes, as the built-in Apps extension (io.modelcontextprotocol/ui) | mcp dev server.py opens the server in MCP Inspector (cli extra) | Any host that runs a Python web service; mcp run --transport streamable-http | MIT |
| MCP TypeScript SDK | TypeScript on Node.js, Bun and Deno; v2 @modelcontextprotocol/server 2.4.0 and @modelcontextprotocol/client (Node >=20). v1 @modelcontextprotocol/sdk 1.32.2 on the v1.x branch | server.registerTool(name, {inputSchema}, handler); schemas via Standard Schema (Zod v4, Valibot, ArkType) | stdio and Streamable HTTP; thin middleware for Node http, Express, Fastify and Hono | Bearer-token verification with protected-resource metadata and per-operation scopes; client OAuth and machine auth (client credentials, private-key JWT, cross-app access) | Not listed in the v2 docs index | None built in; use MCP Inspector | Any JS runtime; you wire the HTTP framework | Apache-2.0 for v2 (repo is moving from MIT to Apache-2.0; v1 package MIT) |
| FastMCP | Python; PyPI fastmcp 4.1.3 (Python >=3.10). TypeScript counterpart: @prefecthq/fastmcp-ts | @mcp.tool on a plain function; schema, validation and docs generated | stdio and HTTP; clients connect by URL with transport negotiation handled | API keys up to full OAuth 2.1: token verification, remote OAuth (Descope, WorkOS, Auth0, SSO), OAuth and OIDC proxies, a full OAuth server, multiple auth sources, component-level authorization | Yes (Apps pillar: interactive UIs rendered in the conversation) | FastMCP Client connects to any server, programmatically or from the CLI; docs cover AI-assisted development | HTTP deployment, fastmcp.json project config; Prefect Horizon (commercial gateway and hosting from the same team) | Apache-2.0 |
| mcp-use | TypeScript first (npm mcp-use 2.11.2, Node >=22.22.2; scaffold with create-mcp-use-app) plus a Python package (PyPI mcp-use 1.7.1) | server.tool({name, inputSchema, outputSchema, view}, handler) with Zod; typed structured results | Streamable HTTP servers; Redis-backed session storage for distributed deployments | OAuth providers: Auth0, Better Auth, Clerk, Keycloak, Supabase, WorkOS, an OAuth proxy, or custom DCR | Yes: React Views bound to tools (ChatGPT apps, Claude connectors) | Built-in Inspector at /mcp/inspector in dev, plus a hosted Inspector and headless CLI | Manufact Cloud (one-click), Google Cloud Run and other hosts | MIT |
Verdict: Writing Python and want the reference implementation with few dependencies? Use the official SDK v2, which now has MCPServer, a client and MCP Apps. Need production auth (OAuth proxies, SSO, multiple token sources) in Python? FastMCP has the most auth options. In TypeScript, use the official v2 SDK when you want Standard Schema and your own HTTP framework. Pick mcp-use when you're building an MCP App with React views and want an inspector and deploy flow out of the box.
Each of these four turns a function into an MCP tool. They differ in everything around that: auth, UI, testing and deployment. The official SDKs track the spec and keep dependencies light. FastMCP and mcp-use add batteries on top.
The official SDKs grew up
Both official SDKs shipped a v2 in 2026, and they look much more like the frameworks than v1 did:
- The Python SDK v2 has an
MCPServerclass with decorator tools (@mcp.tool()), aClientthat takes a URL,mcp devto open the server in MCP Inspector, and MCP Apps as a built-in extension. Server auth is deliberately minimal. Your server is an OAuth resource server, and you implement aTokenVerifier. - The TypeScript SDK v2 splits into
@modelcontextprotocol/serverand@modelcontextprotocol/client, implements the 2026-07-28 spec, and accepts any Standard Schema library (Zod v4, Valibot, ArkType). Thin middleware packages connect it to Nodehttp, Express, Fastify or Hono. v1 (@modelcontextprotocol/sdk) still gets bug and security fixes for at least six months after the v2 release on 2026-07-27, so plan your migration.
There is also an official Go SDK, maintained with Google, if Go is your server language.
When a framework earns its keep
Auth. This is the biggest gap. FastMCP documents token verification, remote OAuth with external identity providers (Descope, WorkOS, Auth0, corporate SSO), OAuth and OIDC proxies for providers that don't support MCP's flow, a self-contained OAuth server, multiple auth sources and per-component authorization. mcp-use has ready-made providers for Auth0, Better Auth, Clerk, Keycloak, Supabase and WorkOS. With the official SDKs you put the authorization server together yourself. For the steps, see Add OAuth to your MCP server.
UI (MCP Apps). An MCP App is a tool plus a ui:// HTML resource that the host renders in a sandboxed iframe. mcp-use is built around this, with React "Views" bound to tools and typed props. FastMCP has Apps as one of its three pillars, and the Python SDK ships an Apps extension. The TypeScript SDK's v2 docs index doesn't list it.
Testing. mcp-use serves an Inspector at /mcp/inspector while you develop, and the Python SDK's mcp dev opens MCP Inspector. Every option can be tested with a scripted client, as in Test your MCP server.
Deploying. All four can run as a plain HTTP service. The two frameworks also sell hosting: Prefect Horizon from the FastMCP team (gateway, registry, SSO and RBAC) and Manufact Cloud from the mcp-use team. Both are optional. Once the server is up, Publish an MCP server covers registries and listings. If you need a stdio server reachable over HTTP, or the other way round, see Bridge stdio and remote MCP servers.
Adoption claims, with care
FastMCP's README says FastMCP 1.0 was folded into the official Python SDK in 2024 and that "some version of FastMCP powers 70% of MCP servers across all languages". These are the project's own figures and were not checked here. mcp-use publishes MCP conformance badges for its Python server and client. Treat both as signals, not benchmarks.
A client to test against
To drive your server from an agent rather than an inspector, fast-agent connects to stdio or Streamable HTTP servers with /connect, supports sampling and elicitation, and includes transport diagnostics. That makes it handy for checking that a new server works end to end.
Directory entries in this comparison
- MCP Python SDK: Official Python SDK for building Model Context Protocol servers and clients.
- MCP TypeScript SDK: Official TypeScript SDK for building MCP servers and clients on Node.js, Bun and Deno; v2 ships as @modelcontextprotocol/server and @modelcontextprotocol/client.
- FastMCP: The fast, Pythonic framework for building MCP servers, clients and interactive applications.
- mcp-use: Full-stack MCP framework (TypeScript and Python) for building MCP servers and MCP Apps with typed tools, React views, a built-in Inspector and agent clients.
- MCP Go SDK: Official Go SDK for Model Context Protocol servers and clients, maintained in collaboration with Google.
- MCP Inspector: Official interactive developer tool for testing and debugging MCP servers in the browser, on the command line or in the terminal.
- Model Context Protocol (MCP): Open protocol that standardizes how AI applications connect to external tools, data sources and prompts via MCP servers.
- MCP Authorization (OAuth 2.1 for MCP): The MCP specification's transport-level authorization flow for HTTP-based MCP servers, based on a subset of OAuth 2.1 and related RFCs.
- fast-agent: CLI-first Python agent harness and framework with end-to-end MCP support (sampling, elicitation, OAuth), Agent Skills, ACP and declarative multi-agent workflows.
Related
- Publish an MCP server so agents can find it (Guide)
- Test your MCP server with in-process tests and Inspector CI checks (Guide)
- Add OAuth authorization to your own MCP server (Guide)
- Bridge stdio and remote MCP servers: mcp-remote, Supergateway, mcp-proxy and mcpo (Guide)
- Connect an agent to a remote MCP server (Guide)
- MCP gateways compared (Comparison)
- Work-management MCP servers compared: Asana vs monday.com vs Linear vs Notion vs Atlassian (Comparison)
Sources
- MCP Python SDK README, accessed
- MCP Python SDK docs: MCP Apps, accessed
- MCP Python SDK docs: Authorization, accessed
- PyPI: mcp, accessed
- MCP TypeScript SDK README, accessed
- MCP TypeScript SDK v2 docs index, accessed
- npm: @modelcontextprotocol/server, accessed
- FastMCP README, accessed
- FastMCP docs index, accessed
- PyPI: fastmcp, accessed
- mcp-use README, accessed
- mcp-use docs index, accessed
- npm: mcp-use, accessed