Mirror of https://github.com/modelcontextprotocol/typescript-sdk — The official TypeScript SDK for Model Context Protocol servers and clients
  • TypeScript 97.3%
  • JavaScript 2.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
bhosmer-ant 9a8f37b366
Default to client_secret_basic when server omits token_endpoint_auth_methods_supported (#1594)
Co-authored-by: Matt <77928207+mattzcarey@users.noreply.github.com>
2026-03-02 11:31:29 +00:00
.changeset Import "Build an LLM-powered chatbot" quickstart guide (#1550) 2026-02-18 00:09:20 +00:00
.github fix: fix multidoc cross-version links and remove duplication (#1588) 2026-02-25 22:54:20 +00:00
common Add sync-snippets script for type-checked examples (#1487) 2026-02-13 16:30:49 +00:00
docs docs: make DNS rebinding protection more prominent in server.md (#1586) 2026-02-26 16:58:46 +00:00
examples fix(examples): create fresh McpServer per client in three examples (#1610) 2026-03-02 10:49:56 +00:00
packages Default to client_secret_basic when server omits token_endpoint_auth_methods_supported (#1594) 2026-03-02 11:31:29 +00:00
scripts fix: update doc links to custom domain and add project documents (#1589) 2026-02-25 15:44:57 -08:00
test feat: add streaming methods for elicitation and sampling (#1210) 2026-02-11 17:14:58 +02:00
.git-blame-ignore-revs Jerome/fix/dev oauth server required scopes change (#629) 2025-06-17 10:18:58 +01:00
.gitattributes Ignore package-lock.json in diffs 2024-10-28 10:23:57 +00:00
.gitignore docs: update v1 references to link to hosted V1 API docs (#1584) 2026-02-25 22:26:16 +00:00
.npmrc chore: disable pnpm manage-package-manager-versions in .npmrc (#1452) 2026-02-03 09:29:11 +00:00
.prettierignore Import "Build an LLM-powered chatbot" quickstart guide (#1550) 2026-02-18 00:09:20 +00:00
.prettierrc.json run prettier (#995) 2025-10-02 18:21:00 +01:00
CLAUDE.md Add sync-snippets script for type-checked examples (#1487) 2026-02-13 16:30:49 +00:00
CODE_OF_CONDUCT.md run prettier (#995) 2025-10-02 18:21:00 +01:00
CONTRIBUTING.md v2 ESlint fixes (#1403) 2026-01-20 12:21:53 +00:00
LICENSE chore: update licensing to Apache 2.0 for new contributions (#1377) 2026-01-13 23:26:17 +00:00
package-lock.json Add API documentation with GitHub Pages deployment (#1109) 2026-01-20 17:22:24 +02:00
package.json docs: update v1 references to link to hosted V1 API docs (#1584) 2026-02-25 22:26:16 +00:00
pnpm-lock.yaml fix: prevent command injection in example URL opening (#1553) 2026-02-24 17:08:04 +00:00
pnpm-workspace.yaml feat!: drop Zod v3 support (#1460) 2026-02-03 19:48:08 +00:00
README.md fix: update doc links to custom domain and add project documents (#1589) 2026-02-25 15:44:57 -08:00
SECURITY.md Update SECURITY.md to use GitHub Security Advisories (#1555) 2026-02-18 23:35:16 -08:00
typedoc.config.mjs fix: update doc links to custom domain and add project documents (#1589) 2026-02-25 15:44:57 -08:00
vitest.workspace.js [v2] Мonorepo, sdk-client, sdk-server, sdk-core package split (#1279) 2025-12-19 14:19:02 +01:00

MCP TypeScript SDK

[!IMPORTANT] This is the main branch which contains v2 of the SDK (currently in development, pre-alpha).

We anticipate a stable v2 release in Q1 2026. Until then, v1.x remains the recommended version for production use. v1.x will continue to receive bug fixes and security updates for at least 6 months after v2 ships to give people time to upgrade.

For v1 documentation, see the V1 API docs. For v2 API docs, see /v2/.

NPM Version NPM Version MIT licensed

Table of Contents

Overview

The Model Context Protocol (MCP) allows applications to provide context for LLMs in a standardized way, separating the concerns of providing context from the actual LLM interaction.

This repository contains the TypeScript SDK implementation of the MCP specification and ships:

  • MCP server libraries (tools/resources/prompts, Streamable HTTP, stdio, auth helpers)
  • MCP client libraries (transports, high-level helpers, OAuth helpers)
  • Optional middleware packages for specific runtimes/frameworks (Express, Hono, Node.js HTTP)
  • Runnable examples (under examples/)

Packages

This monorepo publishes split packages:

  • @modelcontextprotocol/server: build MCP servers
  • @modelcontextprotocol/client: build MCP clients

Both packages have a required peer dependency on zod for schema validation. The SDK uses Zod v4.

Middleware packages (optional)

The SDK also publishes small "middleware" packages under packages/middleware/ that help you wire MCP into a specific runtime or web framework.

They are intentionally thin adapters: they should not introduce new MCP functionality or business logic. See packages/middleware/README.md for details.

  • @modelcontextprotocol/node: Node.js Streamable HTTP transport wrapper for IncomingMessage / ServerResponse
  • @modelcontextprotocol/express: Express helpers (app defaults + Host header validation)
  • @modelcontextprotocol/hono: Hono helpers (app defaults + JSON body parsing hook + Host header validation)

Installation

Server

npm install @modelcontextprotocol/server zod

Client

npm install @modelcontextprotocol/client zod

Optional middleware packages

The SDK also publishes optional “middleware” packages that help you wire MCP into a specific runtime or web framework (for example Express, Hono, or Node.js http).

These packages are intentionally thin adapters and should not introduce additional MCP features or business logic. See packages/middleware/README.md for details.

# Node.js HTTP (IncomingMessage/ServerResponse) Streamable HTTP transport:
npm install @modelcontextprotocol/node

# Express integration:
npm install @modelcontextprotocol/express express

# Hono integration:
npm install @modelcontextprotocol/hono hono

Quick Start (runnable examples)

The runnable examples live under examples/ and are kept in sync with the docs.

  1. Install dependencies (from repo root):
pnpm install
  1. Run a Streamable HTTP example server:
pnpm --filter @modelcontextprotocol/examples-server exec tsx src/simpleStreamableHttp.ts

Alternatively, from within the example package:

cd examples/server
pnpm tsx src/simpleStreamableHttp.ts
  1. Run the interactive client in another terminal:
pnpm --filter @modelcontextprotocol/examples-client exec tsx src/simpleStreamableHttp.ts

Alternatively, from within the example package:

cd examples/client
pnpm tsx src/simpleStreamableHttp.ts

Next steps:

Documentation

Building docs locally

To generate the API reference documentation locally:

pnpm docs          # Generate V2 docs only (output: tmp/docs/)
pnpm docs:multi    # Generate combined V1 + V2 docs (output: tmp/docs-combined/)

The docs:multi script checks out both the v1.x and main branches via git worktrees, builds each, and produces a combined site with V1 docs at the root and V2 docs under /v2/.

v1 (legacy) documentation and fixes

If you are using the v1 generation of the SDK, the v1 API documentation is available at https://ts.sdk.modelcontextprotocol.io/. The v1 source code and any v1-specific fixes live on the long-lived v1.x branch. V2 API docs are at /v2/.

Contributing

Issues and pull requests are welcome on GitHub at https://github.com/modelcontextprotocol/typescript-sdk.

License

This project is licensed under the Apache License 2.0 for new contributions, with existing code under MIT. See the LICENSE file for details.