Skip to content

Commit 9e9fc3e

Browse files
docs: add contribution guidelines for issues and PRs
1 parent 384311b commit 9e9fc3e

File tree

1 file changed

+82
-16
lines changed

1 file changed

+82
-16
lines changed

CONTRIBUTING.md

Lines changed: 82 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,116 @@
11
# Contributing to MCP TypeScript SDK
22

3-
We welcome contributions to the Model Context Protocol TypeScript SDK! This document outlines the process for contributing to the project.
3+
Welcome, and thanks for your interest in contributing! We're glad you're here.
44

5-
## Getting Started
5+
This document outlines how to contribute effectively to the TypeScript SDK.
6+
7+
## Issues
8+
9+
### Discuss Before You Code
10+
11+
**Please open an issue before starting work on new features or significant changes.** This gives us a chance to align on approach and save you time if we see potential issues.
12+
13+
We'll close PRs for undiscussed features—not because we don't appreciate the effort, but because every merged feature becomes ongoing maintenance for our small team of volunteer maintainers. Talking first helps us figure out together whether something belongs in the SDK.
14+
15+
Straightforward bug fixes can skip this step. For complex bugs that need significant changes, consider opening an issue first.
16+
17+
### What Counts as "Significant"?
18+
19+
- New public APIs or classes
20+
- Architectural changes or refactoring
21+
- Changes that touch multiple modules
22+
- Features that might require spec changes (these need a [SEP](https://github.com/modelcontextprotocol/modelcontextprotocol) first)
23+
24+
### Writing Good Issues
25+
26+
Help us help you:
27+
28+
- Lead with what's broken or what you need
29+
- Include code we can run to see the problem
30+
- Keep it focused—a clear problem statement goes a long way
31+
32+
We're a small team, so issues that include some upfront debugging help us move faster. Low-effort or obviously AI-generated issues will be closed.
33+
34+
### Finding Issues to Work On
35+
36+
| Label | For | Description |
37+
| ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | --------------------------------------------- |
38+
| [`good first issue`](https://github.com/modelcontextprotocol/typescript-sdk/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) | Newcomers | Can tackle without deep codebase knowledge |
39+
| [`help wanted`](https://github.com/modelcontextprotocol/typescript-sdk/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) | Experienced contributors | Maintainers probably won't get to this |
40+
| [`ready for work`](https://github.com/modelcontextprotocol/typescript-sdk/issues?q=is%3Aopen+is%3Aissue+label%3A%22ready+for+work%22) | Maintainers | Triaged and ready for a maintainer to pick up |
41+
42+
Issues labeled `needs confirmation`, `needs repro`, or `needs design` are **not** ready for work—wait for maintainer input before starting.
43+
44+
Before starting work, comment on the issue so we can assign it to you. This lets others know and avoids duplicate effort.
45+
46+
## Pull Requests
47+
48+
By the time you open a PR, the "what" and "why" should already be settled in an issue. This keeps PR reviews focused on implementation rather than revisiting whether we should do it at all.
49+
50+
### Scope
51+
52+
Small PRs get reviewed fast. Large PRs sit in the queue.
53+
54+
We can review a few dozen lines in a few minutes. But a PR touching hundreds of lines across many files takes real effort to verify—and things inevitably slip through. If your change is big, break it into a stack of smaller PRs or get clear alignment from a maintainer on your
55+
approach in an issue before submitting a large PR.
56+
57+
### What Gets Rejected
58+
59+
PRs may be rejected for:
60+
61+
- **Lack of prior discussion** — Features or significant changes without an approved issue
62+
- **Scope creep** — Changes that go beyond what was discussed or add unrequested features
63+
- **Misalignment with SDK direction** — Even well-implemented features may be rejected if they don't fit the SDK's goals
64+
- **Insufficient quality** — Code that doesn't meet clarity, maintainability, or style standards
65+
- **Overengineering** — Unnecessary complexity or abstraction for simple problems
66+
67+
### Submitting Your PR
68+
69+
1. Follow the existing code style
70+
2. Include tests for new functionality
71+
3. Update documentation as needed
72+
4. Keep changes focused and atomic
73+
5. Provide a clear description of changes
74+
75+
## Development
76+
77+
### Getting Started
678

779
1. Fork the repository
880
2. Clone your fork: `git clone https://github.com/YOUR-USERNAME/typescript-sdk.git`
981
3. Install dependencies: `npm install`
1082
4. Build the project: `npm run build`
1183
5. Run tests: `npm test`
1284

13-
## Development Process
85+
### Workflow
1486

1587
1. Create a new branch for your changes
1688
2. Make your changes
1789
3. Run `npm run lint` to ensure code style compliance
1890
4. Run `npm test` to verify all tests pass
1991
5. Submit a pull request
2092

21-
## Pull Request Guidelines
22-
23-
- Follow the existing code style
24-
- Include tests for new functionality
25-
- Update documentation as needed
26-
- Keep changes focused and atomic
27-
- Provide a clear description of changes
28-
29-
## Running Examples
93+
### Running Examples
3094

3195
- Start the server: `npm run server`
3296
- Run the client: `npm run client`
3397

34-
## Code of Conduct
98+
## Policies
99+
100+
### Code of Conduct
35101

36102
This project follows our [Code of Conduct](CODE_OF_CONDUCT.md). Please review it before contributing.
37103

38-
## Reporting Issues
104+
### Reporting Issues
39105

40106
- Use the [GitHub issue tracker](https://github.com/modelcontextprotocol/typescript-sdk/issues)
41107
- Search existing issues before creating a new one
42108
- Provide clear reproduction steps
43109

44-
## Security Issues
110+
### Security Issues
45111

46112
Please review our [Security Policy](SECURITY.md) for reporting security vulnerabilities.
47113

48-
## License
114+
### License
49115

50116
By contributing, you agree that your contributions will be licensed under the MIT License.

0 commit comments

Comments
 (0)