Browse the blog

The Best TypeScript MCP Server Frameworks in 2026

  • mcp
  • typescript
  • frameworks
  • comparison
  • frontmcp

Dated article; use the maintained reference for current instructions. Technical checks recorded: 2026-11-02. How checks work.

This post compares nine TypeScript libraries for building MCP servers: FrontMCP, the official MCP TypeScript SDK, mcp-handler, FastMCP, mcp-framework, mcp-use, xmcp, Prefect's FastMCP TypeScript and ViteMCP. They don't all do the same job. One is the protocol's reference implementation, one mounts MCP in a route of a web app, and the other seven are frameworks with different ideas about how a server is organized. For each, the post says what it's for and where it falls short, and it says what was checked and when.

I maintain FrontMCP, so it's first, and you should read its entry knowing who wrote it. The other eight are in order of their npm downloads for 2026-10-23 to 2026-10-29, which count installs, not quality. There's no score. Every fact about a library comes from its own documentation, from running it, or from GitHub's and npm's counts. This is the short version: Compare has the long one, with every fact in one table next to its source and a page for each library.

Which TypeScript MCP framework should you use?

  • A server that's becoming an application, with shared services, sign-in, rules about who may call what, tests, background jobs and more than one place to deploy: FrontMCP.
  • A few tools, full control of the protocol, or an MCP client: the official MCP TypeScript SDK.
  • MCP as one route of an existing web app (Next.js, Nuxt, SvelteKit, Hono, Express, Fastify): mcp-handler for Fetch-based frameworks, xmcp's adapters, or the official SDK's Express, Hono and Fastify adapters.
  • An MCP App with React views for ChatGPT or Claude: mcp-use, or xmcp.
  • FastMCP's one-file API: FastMCP for clients on MCP 2025-11-25 or earlier, ViteMCP for stateless servers on 2026-07-28.
  • The Python FastMCP's model in TypeScript, with composition and a client: Prefect's FastMCP TypeScript.
  • A class per tool and code generators, for 2025-era clients: mcp-framework.

At a glance

Each library at the version checked, with its GitHub stars on 2026-11-02 and npm downloads for the week of 2026-10-23 to 2026-10-29:

LibraryWhat it isMCP 2026-07-28StarsDownloads
1. FrontMCP 1.10.16Framework: apps, services, auth, tests, jobsHTTP and stdio1487,513
2. Official SDK 2.3.1Reference implementationHTTP and stdio, opt-in13,69421,176,440
3. mcp-handler 2.3.0Adapter: MCP in a web routeHTTP only, per README; not run6921,947,866
4. FastMCP 4.23.4One-file frameworkNo3,284752,560
5. mcp-framework 0.2.22A class per tool, generatorsNo93162,624
6. mcp-use 2.8.2MCP Apps stackHTTP only10,84044,147
7. xmcp 1.7.1A file per tool, web adaptersHTTP and stdio1,34821,338
8. FastMCP TypeScript 1.7.3Python FastMCP's modelHTTP and stdio8119,555
9. ViteMCP 1.9.5FastMCP's API, statelessHTTP and stdio221,072

The protocol column is what each server answered in our checks on 2026-10-20, at the versions shown. FrontMCP 1.10.16's comes from its source, re-checked on 2026-11-02, and mcp-handler's from its README. Stars are from the GitHub API; mcp-use's include its Python SDK. Downloads are npm's for the week of 2026-10-23 to 2026-10-29, of @frontmcp/sdk, @modelcontextprotocol/server, @prefecthq/fastmcp-ts and @vitemcp/server, and otherwise of the package named after the library.

The nine

1. FrontMCP

What it is. FrontMCP is a TypeScript framework for MCP servers that are becoming applications, made by AgentFront and licensed Apache-2.0: the npm package @frontmcp/sdk, from the agentfront/frontmcp repository. A tool is a @Tool class, or the tool() function, with Zod input and output schemas. Tools are grouped into apps, share services through providers read with this.get(), and run through hooks and plugins. Around them FrontMCP adds sign-in, from static keys and JWTs from your identity provider to FrontMCP as the OAuth server; rules about who may call what; agents, jobs and workflows; widgets through a tool's ui option; @frontmcp/testing, run by frontmcp test; and builds for Node, Vercel, AWS Lambda, Cloudflare Workers and a browser module.

Protocol. FrontMCP 1.10.16 serves MCP 2026-07-28 and the four earlier revisions over Streamable HTTP and stdio, with no setting. It keeps sessions for older clients and can share them between instances through Redis, except on Cloudflare Workers, where older clients are served one request at a time (Cloudflare Workers). It uses the official SDK v1 internally and implements 2026-07-28 itself (Protocol versions).

Choose FrontMCP when a server is growing past a few tools: a database client the tools share, sign-in and per-tool rules, tests in CI, work that runs in the background, or a second team's tools beside the first.

Look elsewhere when you have a few tools in one file, where the official SDK is simpler; you want a schema library other than Zod; you can't use Node 24 for local development; you want the most widely used option, since FrontMCP has fewer GitHub stars than every library here except ViteMCP and FastMCP TypeScript; or you want a longer track record: its first npm release was in November 2025.

More: Why FrontMCP, Evaluate FrontMCP for production.

2. The official MCP TypeScript SDK

What it is. The official MCP TypeScript SDK is the MCP project's own implementation of the protocol. Since v2 it's two packages, @modelcontextprotocol/server and @modelcontextprotocol/client, licensed Apache-2.0 since 2.3.0 (v1 is MIT). Every other library here builds on it, v1 or v2. You register tools with server.registerTool() in a factory function, with any Standard Schema library (Zod 4, ArkType, Valibot) or JSON Schema. It runs on Node 20 or later, Bun, Deno and Cloudflare Workers, with adapters for Express, Hono and Fastify.

Protocol. The official SDK 2.3.1 serves 2024-11-05 to 2026-07-28 over HTTP and stdio through createMcpHandler() and serveStdio(), where 2026-07-28 is opt-in. A transport wired by hand doesn't serve 2026-07-28.

Choose the official SDK when the server is small, MCP is one route of an app you already have, you're building a client, a host or a gateway, or you want the fewest dependencies.

Look elsewhere when you'd otherwise write much of the server around it: for sign-in the SDK documents an OAuth resource server with a verifier you write, for tests an in-process client, and it has no project CLI.

More: FrontMCP vs the official MCP TypeScript SDK, which shows the same server written with each.

3. mcp-handler

What it is. mcp-handler is Vercel's adapter, rather than a framework. Its README calls it "a framework-agnostic HTTP adapter" that turns an MCP server definition into a Web-standard (Request) => Promise<Response> handler, for Next.js route handlers, Nuxt and Nitro, SvelteKit, Hono and other Fetch-compatible frameworks. You write the tools with the official SDK's server.registerTool(). Version 2 needs @modelcontextprotocol/server 2, Zod 4.2 and Node 20 or later; it's licensed Apache-2.0 (README).

Protocol. mcp-handler's README says it serves 2026-07-28 and falls back to stateless Streamable HTTP for 2025-era clients, and points stdio-only clients to mcp-remote. We read it at v2.3.0 but haven't run our protocol checks on it, and it has no page on Compare.

Choose mcp-handler when you already have a Next.js or other Fetch-based app and want MCP as one more route in it.

Look elsewhere when the MCP server is the application. mcp-handler supplies the HTTP handler; sign-in, shared services and tests come from the SDK and your app. Express and other Node-style frameworks need a Web Request adapter, its README says.

4. FastMCP for TypeScript

What it is. FastMCP for TypeScript is Frank Fiegel's (punkpeye) framework, the npm package fastmcp, licensed MIT. A server is one file of server.addTool({ … }) calls with any Standard Schema library, and no build step. It adds an authenticate() hook, an OAuth proxy with Google, GitHub and Azure presets, canAccess per tool, fastmcp dev and fastmcp inspect, and EdgeFastMCP for Cloudflare Workers and Deno Deploy.

Protocol. FastMCP 4.23.4 serves 2024-11-05 to 2025-11-25. Its README says it doesn't support 2026-07-28, and in our check it answered 400 over HTTP and -32601 over stdio. The README points 2026-07-28 users to ViteMCP.

Choose FastMCP when you want one file and no build step, and your clients speak MCP 2025-11-25 or earlier.

Look elsewhere when your clients are moving to 2026-07-28.

More: FrontMCP vs FastMCP for TypeScript, Migrating from FastMCP for TypeScript.

5. mcp-framework

What it is. mcp-framework is Alex Andru's (QuantGeekDev) framework, licensed MIT. Each tool is a class extending MCPTool, one per file, found in a folder, and mcp create, mcp add, mcp build and mcp validate generate and check each kind of component. Schemas are Zod 3. It documents API keys, JWTs and an OAuth resource server, and runs on Node 18.19 or later, AWS Lambda, and Cloudflare Workers and Vercel Edge through handleRequest().

Protocol. mcp-framework 0.2.22 serves 2024-11-05 to 2025-11-25, and in our check didn't serve 2026-07-28. 0.2.22, from 2026-04-16, was still its latest release on 2026-11-02.

Choose mcp-framework when you like a class per tool and generators, for clients on 2025-11-25 or earlier.

Look elsewhere when you need MCP 2026-07-28 or Zod 4.

More: FrontMCP vs mcp-framework.

6. mcp-use

What it is. mcp-use is a TypeScript stack for MCP from mcp-use, Inc. (Manufact), licensed MIT: a server framework, React views for MCP Apps, a client, an agent SDK, an inspector, a CLI and a hosting service. Tools are server.tool({ … }, handler) with a Standard Schema library. Version 2 is built on the official SDK v2 and Hono, and needs Node 22.22.2 or later. For sign-in it documents an OAuth resource server with eight provider presets, and no authorization server or proxy.

Protocol. mcp-use 2.8.2 serves 2026-07-28 and the older revisions over stateless HTTP, with no sessions. It has no stdio server.

Choose mcp-use when you're building an MCP App with React views for ChatGPT or Claude, and want an inspector, a client and an agent from the same vendor.

Look elsewhere when you need stdio, sessions for older clients, an OAuth server of your own, or agents and background jobs that run on the server.

More: FrontMCP vs mcp-use.

7. xmcp

What it is. xmcp is basement.studio's framework, licensed MIT. Each tool is a file in a folder, found automatically, with Zod schemas. It has adapters for ten web frameworks, Next.js among them; API key and JWT middleware, and OAuth through plugins for Auth0, Clerk, WorkOS, Better Auth and others; tools written as React components or HTML for MCP Apps; and deployment to Vercel and Cloudflare Workers. It needs Node 22 or later.

Protocol. xmcp 1.7.1 serves 2026-07-28 and the older revisions over HTTP and stdio. Its HTTP is stateless, with no sessions.

Choose xmcp when you like a file per tool, your server lives in a Next.js or other web app, or you deploy to Vercel without configuration.

Look elsewhere when you need sessions for older clients, or a test library for your tools: its documentation doesn't describe one.

More: FrontMCP vs xmcp.

8. FastMCP TypeScript (Prefect)

What it is. FastMCP TypeScript is Prefect's @prefecthq/fastmcp-ts, the TypeScript counterpart of the Python FastMCP, and a different project from punkpeye's FastMCP. It's built on the official SDK v2: tools are server.tool({ … }, handler) with a Standard Schema library, and it adds middleware, server composition, a client, UI from a component library (FastMCPApp), and JWT, introspection and static-token verifiers. It needs Node 22 or later. Its package.json says Apache-2.0; the repository has no LICENSE file.

Protocol. FastMCP TypeScript 1.7.3 serves 2024-11-05 to 2026-07-28 over HTTP and stdio, both eras with no setting, and keeps sessions for older clients in the instance's memory.

Choose FastMCP TypeScript when you know the Python FastMCP and want its model, composition and client in TypeScript.

Look elsewhere when you want a longer track record, since its first npm release was in April 2026, or an OAuth server from a maintained package: its OAuth server and proxy come from the official SDK's server-legacy package, which is frozen.

More: FrontMCP vs FastMCP TypeScript.

9. ViteMCP

What it is. ViteMCP is punkpeye's successor to FastMCP for MCP 2026-07-28, the npm package @vitemcp/server, licensed MIT. It keeps FastMCP's server.addTool({ … }) API on the official SDK v2, for stateless servers on Node 24 or later, and on Cloudflare Workers and Deno Deploy with EdgeViteMCP.

Protocol. ViteMCP 1.9.5 serves 2026-07-28 over HTTP and stdio. In our run it also answered the older revisions, though its README says 2026-07-28 only. It keeps no sessions.

Choose ViteMCP when you want FastMCP's API on 2026-07-28 for a small stateless server.

Look elsewhere when you need sessions for older clients, or a package with a longer release record: @vitemcp/server was first published in August 2026, though its repository carries FastMCP's history from December 2024.

More: FrontMCP vs ViteMCP.

Not on this list

  • Python frameworks, including the Python FastMCP. This post is about TypeScript.
  • Cloudflare's Agents SDK (agents), whose agents run on Durable Objects and, its README says, can act as MCP servers or connect as MCP clients. It's one platform's agent runtime rather than a general server framework. FrontMCP, the official SDK, FastMCP, ViteMCP, mcp-framework and xmcp also document deploying to Workers; see FrontMCP's Worker target.
  • Generators that turn an OpenAPI description into a server's code, such as openapi-mcp-generator. FrontMCP's OpenAPI adapter does this at runtime instead: one tool per operation, with credentials you configure.
  • MCP servers themselves, such as browser-automation servers. Some lists of "MCP SDKs" include them, but they're servers you run, not libraries for writing one.

How this was checked

  • The seven other libraries on Compare were checked as Compare describes: we read each one's own documentation, repository, changelog and npm entry, ran its quickstart with one add tool, and asked the running server which MCP revisions it serves. That was on 2026-10-10 for the official SDK 2.3.1, mcp-framework 0.2.22, mcp-use 2.8.2 and xmcp 1.7.1, and on 2026-10-20 for FastMCP 4.23.4, ViteMCP 1.9.5 and FastMCP TypeScript 1.7.3; the protocol check was run again for all of them on 2026-10-20.
  • FrontMCP 1.10.16 was re-checked in its source on 2026-11-02; its side of each Compare page is a Playground this site runs on every build.
  • mcp-handler comes from its README and package.json at v2.3.0, read on 2026-11-02. We didn't run it.
  • Newer releases have come out since. On 2026-11-02, npm's latest were the official SDK 2.4.0, FastMCP 4.23.11, ViteMCP 1.9.8, FastMCP TypeScript 1.9.0, mcp-use 2.12.2 and xmcp 1.9.0. A newer release can change a result; each Compare page links the sources to check it against.
  • Popularity is stars from the GitHub API on 2026-11-02 and npm's download counts for 2026-10-23 to 2026-10-29. Downloads count installs, including CI runs and other packages that depend on a library, so they don't count users, and they move a lot from week to week. mcp-use's stars include its Python SDK.
  • There's no overall score. After FrontMCP, the order follows those downloads. "Choose it when" and "Look elsewhere when" are my judgments from the checks above.

Where a library's own sources don't mention a feature, this post doesn't claim it has it, which isn't the same as saying it can't. If something here is wrong or out of date, open an issue.

Common questions

What is the best TypeScript MCP framework?

No single one; it depends on the server. For a server that needs shared services, sign-in, per-tool rules, tests and background jobs in one structure, FrontMCP, which this site's publisher makes. For a few tools or full control of the protocol, the official MCP TypeScript SDK. For MCP inside an existing web app, mcp-handler, xmcp or the official SDK. For MCP Apps with React views, mcp-use. For a one-file server, FastMCP, or ViteMCP on MCP 2026-07-28. Which TypeScript MCP framework should you use? covers all nine.

What's the difference between an MCP SDK and an MCP framework?

The official SDK implements the protocol: its messages, transports, a server and a client. A framework builds on it and decides how a server is organized: how tools are declared and found, how they share services, and how sign-in, tests and deployment work. Every framework here uses the official SDK underneath, v1 or v2.

Which TypeScript MCP frameworks support MCP 2026-07-28?

In our checks on 2026-10-20, the official SDK (opt-in, through createMcpHandler() and serveStdio()), ViteMCP, FastMCP TypeScript and xmcp served it over HTTP and stdio, and mcp-use over HTTP; FastMCP 4.23.4 and mcp-framework 0.2.22 didn't. FrontMCP 1.10.16, re-checked in its source on 2026-11-02, serves it over HTTP and stdio. mcp-handler's README says it does. MCP 2026-07-28 Dropped the Handshake explains what changed and what it means for a server.

The official SDK, by far: npm counted 21,176,440 downloads of @modelcontextprotocol/server and 87,026,138 of the v1 package, @modelcontextprotocol/sdk, in the week of 2026-10-23 to 2026-10-29, and those include installs pulled in by libraries that depend on it. Of the others, mcp-handler and FastMCP had the most downloads that week, and mcp-use has the most GitHub stars, a count that includes its Python SDK.

Report a docs issue. Site usage and privacy.