Contributing to MCP changedcommunity/contributing
Nearest release: v2.1.280, published an hour after upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Upstream edited this page at 22 Sep 2026 14:26 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 20 Oct 2026 20:07 UTC.
Upstream edited
Recorded here
Lines+225added
Lines−243removed
From line
35
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits4to this page, all time
The whole hunk
from line 35, old and new numbered
/
from line 35
3535git --version # Any recent version
3636```
3737
38<Note>
39 These commands work the same on macOS, Linux, and Windows, so you're good to
40 go on any platform.
41</Note>
38> [!NOTE]
39>
40> These commands work the same on macOS, Linux, and Windows, so you're good to
41> go on any platform.
4242
4343### Repository Structure
4444
from line 85
8585
8686Start here if you are new to MCP and contributing to its ecosystem.
8787
88<Note>
89 While we use the specification repository as an example, the key patterns are
90 applicable to other MCP repos as well.
91</Note>
88> [!NOTE]
89>
90> While we use the specification repository as an example, the key patterns are
91> applicable to other MCP repos as well.
9292
9393### Step 1: Set Up Your Environment
9494
9595Set up your local environment so you can test and validate changes before submitting them.
9696
97<Steps>
98 <Step title="Fork the repository">
99 Click the **Fork** button on the [repository page](https://github.com/modelcontextprotocol/modelcontextprotocol) to create your own copy. This gives you a personal workspace where you can make changes without affecting the main project.
100 </Step>
97**1. Fork the repository**
10198
102 <Step title="Clone your fork">
103 ```bash theme={null}
104 git clone https://github.com/YOUR-USERNAME/modelcontextprotocol.git
105 cd modelcontextprotocol
106 ```
99Click the **Fork** button on the [repository page](https://github.com/modelcontextprotocol/modelcontextprotocol) to create your own copy. This gives you a personal workspace where you can make changes without affecting the main project.
107100
108 Replace `YOUR-USERNAME` with your GitHub username.
109 </Step>
101**2. Clone your fork**
110102
111 <Step title="Install dependencies">
112 ```bash theme={null}
113 npm install
114 ```
103```bash theme={null}
104git clone https://github.com/YOUR-USERNAME/modelcontextprotocol.git
105cd modelcontextprotocol
106```
115107
116 This installs the tools needed for schema generation, documentation building, and validation.
117 </Step>
108Replace `YOUR-USERNAME` with your GitHub username.
118109
119 <Step title="Verify everything works">
120 ```bash theme={null}
121 npm run check
122 ```
110**3. Install dependencies**
123111
124 This runs TypeScript compilation, schema validation, example validation, documentation link checks, and formatting checks. If everything passes, your environment is good and you're ready to contribute.
125 </Step>
126</Steps>
112```bash theme={null}
113npm install
114```
127115
116This installs the tools needed for schema generation, documentation building, and validation.
117
118**4. Verify everything works**
119
120```bash theme={null}
121npm run check
122```
123
124This runs TypeScript compilation, schema validation, example validation, documentation link checks, and formatting checks. If everything passes, your environment is good and you're ready to contribute.
125
128126If `npm run check` fails, see [Troubleshooting](#troubleshooting) below.
129127
130128### Step 2: Find Something to Work On
from line 142
144142
145143Create your changes in a dedicated branch.
146144
147<Steps>
148 <Step title="Create a branch">
149 ```bash theme={null}
150 git checkout -b fix/your-description
151 ```
145**1. Create a branch**
152146
153 Use a descriptive branch name that reflects your change, like `fix/typo-in-tools-doc` or `feat/add-example-for-resources`.
154 </Step>
147```bash theme={null}
148git checkout -b fix/your-description
149```
155150
156 <Step title="Make your changes">
157 Edit the relevant files in your local copy. If you're editing schema files, remember to run `npm run generate:schema` to regenerate the JSON schema and documentation.
158 </Step>
151Use a descriptive branch name that reflects your change, like `fix/typo-in-tools-doc` or `feat/add-example-for-resources`.
159152
160 <Step title="Run checks">
161 ```bash theme={null}
162 npm run check
163 ```
153**2. Make your changes**
164154
165 Fix any issues before committing. If you have formatting errors, `npm run format` can auto-fix most of them.
166 </Step>
155Edit the relevant files in your local copy. If you're editing schema files, remember to run `npm run generate:schema` to regenerate the JSON schema and documentation.
167156
168 <Step title="Commit with a clear message">
169 ```bash theme={null}
170 git commit -m "Fix typo in tools documentation"
171 ```
157**3. Run checks**
172158
173 Write a concise message that describes what you changed and why. Reference issue numbers if applicable (e.g., `Fix typo in tools documentation (#123)`).
174 </Step>
175</Steps>
159```bash theme={null}
160npm run check
161```
176162
163Fix any issues before committing. If you have formatting errors, `npm run format` can auto-fix most of them.
164
165**4. Commit with a clear message**
166
167```bash theme={null}
168git commit -m "Fix typo in tools documentation"
169```
170
171Write a concise message that describes what you changed and why. Reference issue numbers if applicable (e.g., `Fix typo in tools documentation (#123)`).
172
177173### Step 4: Submit a Pull Request
178174
179175When you're ready, push your branch and open a pull request.
180176
181<Steps>
182 <Step title="Push your branch">
183 ```bash theme={null}
184 git push origin fix/your-description
185 ```
186 </Step>
177**1. Push your branch**
187178
188 <Step title="Open a PR on GitHub">
189 You can use the [GitHub CLI](https://cli.github.com/) to make this process easier:
179```bash theme={null}
180git push origin fix/your-description
181```
190182
191 ```bash theme={null}
192 gh pr create --fill
193 ```
183**2. Open a PR on GitHub**
194184
195 Alternatively, navigate to your fork on GitHub and click **Compare & pull request**.
196 </Step>
185You can use the [GitHub CLI](https://cli.github.com/) to make this process easier:
197186
198 <Step title="Fill in the PR template">
199 Provide a clear description of your changes and link any related issues.
200 </Step>
187```bash theme={null}
188gh pr create --fill
189```
201190
202 <Step title="Wait for review">
203 Maintainers typically respond within 1-5 business days.
204 </Step>
205</Steps>
191Alternatively, navigate to your fork on GitHub and click **Compare & pull request**.
206192
207<Tip>
208 That's it, **congratulations on your first contribution**! Every improvement,
209 no matter how small, helps make MCP better for everyone.
210</Tip>
193**3. Fill in the PR template**
211194
195Provide a clear description of your changes and link any related issues.
196
197**4. Wait for review**
198
199Maintainers typically respond within 1-5 business days.
200
201> [!TIP]
202>
203> That's it, **congratulations on your first contribution**! Every improvement,
204> no matter how small, helps make MCP better for everyone.
205
212206### What Makes a Good Contribution
213207
214208Help us review your contribution quickly by following these patterns:
from line 219
225219
226220Different contributions follow different processes depending on their scope.
227221
228<Tip>
229 Not sure which category your change falls into? Ask in the [MCP Contributor
230 Discord](/community/communication#discord) before starting any significant
231 work.
232</Tip>
222> [!TIP]
223>
224> Not sure which category your change falls into? Ask in the [MCP Contributor
225> Discord](/community/communication#discord) before starting any significant
226> work.
233227
234228### Small Changes (Direct PR)
235229
from line 273
279273
280274To modify the schema:
281275
282<Steps>
283 <Step title="Edit the TypeScript schema">
284 Make your changes in `schema/draft/schema.ts`.
285 </Step>
276**1. Edit the TypeScript schema**
286277
287 <Step title="Add examples (optional)">
288 Add JSON examples in `schema/draft/examples/[TypeName]/` (e.g., `Tool/my-example.json`). Reference them in the schema using `@example` + `@includeCode` JSDoc tags.
289 </Step>
278Make your changes in `schema/draft/schema.ts`.
290279
291 <Step title="Generate JSON schema and docs">
292 ```bash theme={null}
293 npm run generate:schema
294 ```
295 </Step>
280**2. Add examples (optional)**
296281
297 <Step title="Validate your changes">
298 ```bash theme={null}
299 npm run check
300 ```
301 </Step>
302</Steps>
282Add JSON examples in `schema/draft/examples/[TypeName]/` (e.g., `Tool/my-example.json`). Reference them in the schema using `@example` + `@includeCode` JSDoc tags.
303283
284**3. Generate JSON schema and docs**
285
286```bash theme={null}
287npm run generate:schema
288```
289
290**4. Validate your changes**
291
292```bash theme={null}
293npm run check
294```
295
304296### Documentation Changes
305297
306298Docs are written in [MDX format](https://mdxjs.com/) (Markdown with JSX components) and powered by
from line 303
311303
312304Here is how you can contribute to our documentation:
313305
314<Steps>
315 <Step title="Start the local docs server">
316 ```bash theme={null}
317 npm run serve:docs
318 ```
306**1. Start the local docs server**
319307
320 This launches a live preview at `http://localhost:3000` with hot reloading.
321 </Step>
308```bash theme={null}
309npm run serve:docs
310```
322311
323 <Step title="Make your changes">
324 Edit the relevant `.mdx` files. You can use [Mintlify components](https://www.mintlify.com/docs/components) like `<Note>`, `<Tip>`, `<Steps>`, and `<Card>` for richer formatting.
325 </Step>
312This launches a live preview at `http://localhost:3000` with hot reloading.
326313
327 <Step title="Check for issues">
328 ```bash theme={null}
329 npm run check:docs
330 ```
314**2. Make your changes**
331315
332 This validates formatting, broken links, and other common issues.
333 </Step>
334</Steps>
316Edit the relevant `.mdx` files. You can use [Mintlify components](https://www.mintlify.com/docs/components) like `<Note>`, `<Tip>`, `<Steps>`, and `<Card>` for richer formatting.
335317
318**3. Check for issues**
319
320```bash theme={null}
321npm run check:docs
322```
323
324This validates formatting, broken links, and other common issues.
325
336326### Major Protocol Changes
337327
338328For significant changes, follow the [SEP process](/community/sep-guidelines). Prior to spending a
339329lot of time on a spec proposal, make sure to follow these best practices.
340330
341<Steps>
342 <Step title="Validate your idea first">
343 Discuss in an [Interest Group](/community/working-interest-groups) or on
344 [Discord](https://discord.gg/6CSzBmMkjX).
345 </Step>
331**1. Validate your idea first**
346332
347 <Step title="Build a prototype">
348 Demonstrate practical application of your idea.
349 </Step>
333Discuss in an [Interest Group](/community/working-interest-groups) or on
334[Discord](https://discord.gg/6CSzBmMkjX).
350335
351 <Step title="Find a sponsor">
352 A maintainer from the [maintainer
353 list](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/MAINTAINERS.md)
354 who will champion your proposal. See [Finding a Sponsor for
355 SEPs](#finding-a-sponsor-for-seps) below.
356 </Step>
336**2. Build a prototype**
357337
358 <Step title="Write the SEP">
359 Follow the [SEP Guidelines](/community/sep-guidelines).
360 </Step>
361</Steps>
338Demonstrate practical application of your idea.
362339
340**3. Find a sponsor**
341
342A maintainer from the [maintainer
343list](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/MAINTAINERS.md)
344who will champion your proposal. See [Finding a Sponsor for
345SEPs](#finding-a-sponsor-for-seps) below.
346
347**4. Write the SEP**
348
349Follow the [SEP Guidelines](/community/sep-guidelines).
350
363351### Finding a Sponsor for SEPs
364352
365353A **sponsor** is a Core Maintainer or Maintainer who champions your SEP through the review
from line 354
366354process. They provide feedback, help refine your proposal, and present it at Core Maintainer
367355meetings.
368356
369<Warning>
370 Every SEP needs a sponsor to move forward. SEPs that don't find a sponsor
371 within 6 months are marked as **dormant**. Dormant SEPs aren't rejected
372 outright - they can be revived later if a sponsor is found or the proposal is
373 re-assessed to be needed.
374</Warning>
357> [!WARNING]
358>
359> Every SEP needs a sponsor to move forward. SEPs that don't find a sponsor
360> within 6 months are marked as **dormant**. Dormant SEPs aren't rejected
361> outright - they can be revived later if a sponsor is found or the proposal is
362> re-assessed to be needed.
375363
376364To find a sponsor:
377365
378<Steps>
379 <Step title="Find relevant maintainers">
380 Look at the [maintainer
381 list](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/MAINTAINERS.md)
382 to find maintainers working in your area.
383 </Step>
366**1. Find relevant maintainers**
384367
385 <Step title="Tag maintainers in your PR">
386 Tag 1-2 relevant maintainers (don't spam everyone).
387 </Step>
368Look at the [maintainer
369list](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/MAINTAINERS.md)
370to find maintainers working in your area.
388371
389 <Step title="Share in Discord">
390 Post your PR in the relevant Discord channel to increase visibility.
391 </Step>
372**2. Tag maintainers in your PR**
392373
393 <Step title="Follow up if needed">
394 If no response after 2 weeks, ask in `#general` or reach out to a Core
395 Maintainer.
396 </Step>
397</Steps>
374Tag 1-2 relevant maintainers (don't spam everyone).
398375
376**3. Share in Discord**
377
378Post your PR in the relevant Discord channel to increase visibility.
379
380**4. Follow up if needed**
381
382If no response after 2 weeks, ask in `#general` or reach out to a Core
383Maintainer.
384
399385Maintainers review open proposals regularly, but response time varies based on complexity and
400386availability.
401387
from line 390
404390MCP maintains official SDKs in multiple languages. Contributions are welcome - whether you're
405391fixing bugs, improving performance, adding features, or enhancing documentation.
406392
407<Note>
408 Each SDK has its own repository, maintainers, and contribution guidelines.
409 Some SDKs are maintained in collaboration with larger partner organizations,
410 such as Google, Microsoft, JetBrains, and others, so processes may vary
411 slightly between repositories.
412</Note>
393> [!NOTE]
394>
395> Each SDK has its own repository, maintainers, and contribution guidelines.
396> Some SDKs are maintained in collaboration with larger partner organizations,
397> such as Google, Microsoft, JetBrains, and others, so processes may vary
398> slightly between repositories.
413399
414400### Before Contributing to an SDK
415401
416402Before diving into code, follow these steps.
417403
418<Steps>
419 <Step title="Open an issue first">
420 Before starting significant work, open an issue to discuss your approach.
421 This helps avoid duplicate effort, ensures your contribution aligns with the
422 SDK's direction, and gives maintainers a chance to provide early feedback.
423 </Step>
404**1. Open an issue first**
424405
425 <Step title="Join the SDK channel">
426 Find the relevant channel in [Discord](https://discord.gg/6CSzBmMkjX) (e.g.,
427 `#typescript-sdk-dev`, `#python-sdk-dev`).
428 </Step>
406Before starting significant work, open an issue to discuss your approach.
407This helps avoid duplicate effort, ensures your contribution aligns with the
408SDK's direction, and gives maintainers a chance to provide early feedback.
429409
430 <Step title="Read the SDK's CONTRIBUTING.md">
431 Each repository has its own `CONTRIBUTING.md` with specific instructions for
432 setting up your development environment, coding standards, commit message
433 conventions, and PR requirements.
434 </Step>
410**2. Join the SDK channel**
435411
436 <Step title="Write tests">
437 All contributions should include appropriate test coverage. Bug fixes should
438 include a test that reproduces the issue, and new features should have tests
439 covering the expected behavior. This helps maintain SDK reliability and
440 prevents regressions.
441 </Step>
442</Steps>
412Find the relevant channel in [Discord](https://discord.gg/6CSzBmMkjX) (e.g.,
413`#typescript-sdk-dev`, `#python-sdk-dev`).
443414
415**3. Read the SDK's CONTRIBUTING.md**
416
417Each repository has its own `CONTRIBUTING.md` with specific instructions for
418setting up your development environment, coding standards, commit message
419conventions, and PR requirements.
420
421**4. Write tests**
422
423All contributions should include appropriate test coverage. Bug fixes should
424include a test that reproduces the issue, and new features should have tests
425covering the expected behavior. This helps maintain SDK reliability and
426prevents regressions.
427
444428### SDK Repositories
445429
446<CardGroup cols={2}>
447 <Card title="TypeScript SDK" icon="square-js" href="https://github.com/modelcontextprotocol/typescript-sdk" />
430> **[TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)**
448431
449 <Card title="Python SDK" icon="python" href="https://github.com/modelcontextprotocol/python-sdk" />
432> **[Python SDK](https://github.com/modelcontextprotocol/python-sdk)**
450433
451 <Card title="Go SDK" icon="golang" href="https://github.com/modelcontextprotocol/go-sdk" />
434> **[Go SDK](https://github.com/modelcontextprotocol/go-sdk)**
452435
453 <Card title="Kotlin SDK" icon="square-k" href="https://github.com/modelcontextprotocol/kotlin-sdk" />
436> **[Kotlin SDK](https://github.com/modelcontextprotocol/kotlin-sdk)**
454437
455 <Card title="Java SDK" icon="java" href="https://github.com/modelcontextprotocol/java-sdk" />
438> **[Java SDK](https://github.com/modelcontextprotocol/java-sdk)**
456439
457 <Card title="C# SDK" icon="square-c" href="https://github.com/modelcontextprotocol/csharp-sdk" />
440> **[C# SDK](https://github.com/modelcontextprotocol/csharp-sdk)**
458441
459 <Card title="Swift SDK" icon="swift" href="https://github.com/modelcontextprotocol/swift-sdk" />
442> **[Swift SDK](https://github.com/modelcontextprotocol/swift-sdk)**
460443
461 <Card title="Rust SDK" icon="rust" href="https://github.com/modelcontextprotocol/rust-sdk" />
444> **[Rust SDK](https://github.com/modelcontextprotocol/rust-sdk)**
462445
463 <Card title="Ruby SDK" icon="gem" href="https://github.com/modelcontextprotocol/ruby-sdk" />
446> **[Ruby SDK](https://github.com/modelcontextprotocol/ruby-sdk)**
464447
465 <Card title="PHP SDK" icon="php" href="https://github.com/modelcontextprotocol/php-sdk" />
466</CardGroup>
448> **[PHP SDK](https://github.com/modelcontextprotocol/php-sdk)**
467449
468450## Getting Help
469451
No line in this hunk matches that.