We welcome contributions to the Model Context Protocol TypeScript SDK! This document outlines the process for contributing to the project.
This repository has two main branches:
main– v2 of the SDK (currently in development). This is a monorepo with split packages.v1.x– stable v1 release. Bug fixes and patches for v1 should target this branch.
Which branch should I use as a base?
- For new features or v2-related work: base your PR on
main - For v1 bug fixes or patches: base your PR on
v1.x
This project uses pnpm as its package manager. If you don't have pnpm installed, enable it via corepack (included with Node.js 16.9+):
corepack enableThen:
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/typescript-sdk.git - Install dependencies:
pnpm install - Build the project:
pnpm build:all - Run tests:
pnpm test:all
- Create a new branch for your changes (based on
mainorv1.xas appropriate) - Make your changes
- Run
pnpm lint:allto ensure code style compliance - Run
pnpm test:allto verify all tests pass - Submit a pull request
- Follow the existing code style
- Include tests for new functionality
- Update documentation as needed
- Keep changes focused and atomic
- Provide a clear description of changes
See examples/server/README.md and examples/client/README.md for a full list of runnable examples.
Quick start:
# Run a server example
pnpm --filter @modelcontextprotocol/examples-server exec tsx src/simpleStreamableHttp.ts
# Run a client example (in another terminal)
pnpm --filter @modelcontextprotocol/examples-client exec tsx src/simpleStreamableHttp.tsThe v1.x branch contains the stable v1 release. To release a patch:
git checkout v1.x
git pull origin v1.x
# Apply your fix or cherry-pick commits
npm version patch # Bumps version and creates tag (e.g., v1.25.3)
git push origin v1.x --tagsThe tag push automatically triggers the release workflow.
For patching older minor versions that aren't on the v1.x branch:
# 1. Create a release branch from the last release tag
git checkout -b release/1.23 v1.23.1
# 2. Apply your fixes (cherry-pick or manual)
git cherry-pick <commit-hash>
# 3. Bump version and push
npm version patch # Creates v1.23.2 tag
git push origin release/1.23 --tagsThen manually trigger the "Publish v1.x" workflow from GitHub Actions, specifying the tag (e.g., v1.23.2).
v1.x releases are published with release-X.Y npm tags (e.g., release-1.25), not latest. To install a specific minor version:
npm install @modelcontextprotocol/sdk@release-1.25This project follows our Code of Conduct. Please review it before contributing.
- Use the GitHub issue tracker
- Search existing issues before creating a new one
- Provide clear reproduction steps
Please review our Security Policy for reporting security vulnerabilities.
By contributing, you agree that your code contributions will be licensed under the Apache License 2.0. Documentation contributions (excluding specifications) are licensed under CC-BY 4.0. See the LICENSE file for details.