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
Corvid Agent 327243cebd
fix: add missing hono peer dependency to @modelcontextprotocol/node (#1504)
Co-authored-by: Matt <77928207+mattzcarey@users.noreply.github.com>
2026-02-10 10:28:39 +00:00
.changeset fix: add missing hono peer dependency to @modelcontextprotocol/node (#1504) 2026-02-10 10:28:39 +00:00
.github ci: add Claude GitHub Actions for @claude mentions and code review (#1481) 2026-02-05 15:34:08 +00:00
common eslint fixes in tests (#1418) 2026-01-22 12:26:48 +00:00
docs refactor: replace RequestHandlerExtra with structured context types (#1467) 2026-02-03 20:35:02 +00:00
examples [RFC] refactor: remove vestigial generic type parameters from Protocol, Server, and Client (#1451) 2026-02-03 20:55:32 +00:00
packages fix: add missing hono peer dependency to @modelcontextprotocol/node (#1504) 2026-02-10 10:28:39 +00:00
scripts v2: Move conformance into workspace (#1470) 2026-02-03 19:56:49 +02:00
test Fix: Respect explicit listChanged: false capability setting (#1513) 2026-02-10 11:24:47 +01: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 [v2] Decouple server from express and hono - http framework-agnostic MCP server (#1326) 2026-01-16 12:13:25 +02:00
.npmrc chore: disable pnpm manage-package-manager-versions in .npmrc (#1452) 2026-02-03 09:29:11 +00:00
.prettierignore FIX: use a nightly spec.types.ts (#1087) 2025-11-07 14:16:11 +00:00
.prettierrc.json run prettier (#995) 2025-10-02 18:21:00 +01:00
CLAUDE.md refactor: replace RequestHandlerExtra with structured context types (#1467) 2026-02-03 20:35:02 +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 v2: Move conformance into workspace (#1470) 2026-02-03 19:56:49 +02:00
pnpm-lock.yaml fix: add missing hono peer dependency to @modelcontextprotocol/node (#1504) 2026-02-10 10:28:39 +00:00
pnpm-workspace.yaml feat!: drop Zod v3 support (#1460) 2026-02-03 19:48:08 +00:00
README.md feat!: drop Zod v3 support (#1460) 2026-02-03 19:48:08 +00:00
SECURITY.md Fix ToC in README and markdown linting warnings 2025-05-05 21:53:47 +02:00
typedoc.config.mjs fix: resolve pnpm audit vulnerabilities by removing @pnpm/workspace.* deps (#1422) 2026-01-23 18:30:29 +02: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 and code, see the v1.x branch.

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

v1 (legacy) documentation and fixes

If you are using the v1 generation of the SDK, the v1 documentation (and any v1-specific fixes) live on the long-lived v1.x branch. See: https://github.com/modelcontextprotocol/typescript-sdk/tree/v1.x.

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.