* docs: add CONTRIBUTORS.md issues-only policy (#1517) Document the contribution policy: we accept issues, not pull requests. Maintainers handle design and implementation through a prompt-driven workflow. Contributors who have already built a change locally should share the prompt they used rather than a diff. Cross-reference the policy from AGENTS.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: add PR template redirecting external authors to issues-only policy (#1517) GitHub auto-populates pull_request_template.md into every new PR body, so it steers would-be external PR authors to CONTRIBUTORS.md before they submit a diff. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: drop version-board details from CONTRIBUTORS.md (#1517) The policy takes effect after v2/main merges into main, leaving a single line of development. Tell contributors to open a well-formed issue rather than routing them to per-version project boards. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: add version-board/label table to CONTRIBUTORS.md (closes #1595) Completes requirement #2 of #1517: a table mapping each active version to its base branch, project board, and version label, plus a "Label by version" note mirroring AGENTS.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S3fTN8H3R8YV4yUGvZjYnX * docs: drop v1.5 from CONTRIBUTORS.md, invite deeper contribution (#1517) Review feedback on PR #1604: - Remove the v1.5 row/bullet from the version table — v1.5 was an internal intermediate branch that external contributors never saw, so surfacing it in an outward-facing doc is noise. The table is now v1 / v2 only. - Add a "Want to work on the Inspector with us?" section pointing at the MCP Contributor Discord (#inspector-dev) and the community calls, framing the issues-only rule as being about unsolicited patches rather than a closed door, with supervised work as the path toward maintainership. - Link that section from "Why this policy exists", and add the same Discord pointer to the PR template. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Txmv2qqv3yeKgRzoqXytzD * docs: drop project-board links from CONTRIBUTORS.md (#1517) The org project boards aren't visible to anyone outside the organization, so linking them in an outward-facing doc points contributors at a 404. The version table is now base branch + label only, and the PR template names the version labels instead of "the appropriate version board". Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Txmv2qqv3yeKgRzoqXytzD * docs: v1 takes security fixes only (#1517) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Txmv2qqv3yeKgRzoqXytzD * docs: use post-runbook branch names (v1/main, main) (#1517) This doc will be read after the branch runbook completes, when v1 lives on v1/main and v2 is the default main. Update the version table, the label-by- version line, and the PR template's label hint + CONTRIBUTORS.md links accordingly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Txmv2qqv3yeKgRzoqXytzD --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
116 lines
5.3 KiB
Markdown
116 lines
5.3 KiB
Markdown
# Contributing to MCP Inspector
|
|
|
|
Thank you for your interest in improving the MCP Inspector. Contributors are
|
|
genuinely valued — the goal of this document is to channel your input into a
|
|
form we can act on quickly and consistently.
|
|
|
|
## TL;DR
|
|
|
|
**We accept issues, not pull requests.** Design and implementation are done by
|
|
the maintainers. If you've already built a fix or feature locally, share **the
|
|
prompt you used** to produce it — not the source code.
|
|
|
|
## Why this policy exists
|
|
|
|
The Inspector v2 is developed with an AI-assisted, prompt-driven workflow built
|
|
around a consistent architecture, a shared design system, and strict testing
|
|
gates (see [`AGENTS.md`](./AGENTS.md)). Every component follows the same
|
|
conventions: "dumb" components that take data and callbacks as props, Mantine
|
|
for all UI, theme variants instead of ad-hoc CSS, and a uniform per-file
|
|
coverage gate of ≥ 90% on lines, statements, functions, and branches.
|
|
|
|
Accepting raw source PRs creates friction: a diff written outside this pipeline
|
|
has to be reverse-engineered to fit our component/theme conventions, coverage
|
|
gates, and review process — often it's faster to re-derive the change than to
|
|
adapt the patch. Capturing your **intent** (a well-formed issue) or the
|
|
**prompt** that generated your local change lets us reproduce the work inside
|
|
our own workflow and standards, with the quality bar already baked in.
|
|
|
|
This policy is about efficiency, not gatekeeping. Your ideas, bug reports, and
|
|
prompts directly shape what gets built. And if you'd like to contribute more
|
|
than an issue, see
|
|
[Want to work on the Inspector with us?](#want-to-work-on-the-inspector-with-us)
|
|
below — we'd rather bring you into the workflow than turn you away.
|
|
|
|
## How to contribute a bug report or feature request
|
|
|
|
Open a well-formed issue describing the bug or the feature you have in mind.
|
|
A great issue gives us everything we need to act on it without a round-trip —
|
|
see [What makes a good issue or prompt submission](#what-makes-a-good-issue-or-prompt-submission)
|
|
below. That's the whole process: you describe the intent, we handle the design
|
|
and implementation.
|
|
|
|
### Which version and label?
|
|
|
|
The Inspector is maintained across two versions, each with its own base branch
|
|
and version label. File your issue against the version your report or request
|
|
targets:
|
|
|
|
| Version | Base branch | Label |
|
|
| ------- | ----------- | ----- |
|
|
| v1 | `v1/main` | `v1` |
|
|
| v2 | `main` | `v2` |
|
|
|
|
- **v1** (`v1/main`) is the legacy Inspector — it takes **security fixes
|
|
only**.
|
|
- **v2** (`main`) is where all current work happens — when in doubt, target v2.
|
|
|
|
**Label by version.** Every issue (and the PRs maintainers open for it) must
|
|
carry the label matching the target branch — `v1` for `v1/main` and `v2` for
|
|
`main`. This mirrors the "Label by version" convention documented in
|
|
[`AGENTS.md`](./AGENTS.md).
|
|
|
|
## If you've already fixed it locally
|
|
|
|
Please don't send a diff or open a pull request. Instead, open an issue that
|
|
includes:
|
|
|
|
- **The prompt(s) you used** to generate the change — the exact text, so we can
|
|
reproduce it through our own workflow.
|
|
- **A description of the behavior before and after** your change.
|
|
- **How you verified it** (steps you ran, tests you added, what you observed).
|
|
|
|
We'll reproduce the change through our pipeline so it lands with the right
|
|
conventions, tests, and coverage.
|
|
|
|
## What makes a good issue or prompt submission
|
|
|
|
A great submission gives us everything we need to act without a round-trip:
|
|
|
|
- **Clear reproduction or use case** — exact steps to reproduce a bug, or a
|
|
concrete description of the feature and the problem it solves.
|
|
- **Expected vs. actual behavior** — what you saw, and what you expected
|
|
instead.
|
|
- **Affected client** — which incarnation is involved: **Web**, **TUI**, or
|
|
**CLI** (or "all" / "core" if it's shared logic).
|
|
- **Environment details** when relevant — OS, Node version, the MCP server you
|
|
were inspecting, and any relevant config.
|
|
- **The exact prompt text**, if you generated a local change and want us to
|
|
reproduce it.
|
|
|
|
## Want to work on the Inspector with us?
|
|
|
|
The issues-only policy is about how **unsolicited patches** are handled — it is
|
|
not a closed door. If you want to contribute at a deeper level, either in
|
|
general or in a specific area, we'd genuinely like to hear from you:
|
|
|
|
- **Join the [MCP Contributor Discord](https://discord.gg/6CSzBmMkjX)** and say
|
|
hello in **`#inspector-dev`**. That's where day-to-day Inspector development
|
|
is discussed and the fastest way to reach the maintainers.
|
|
- **Attend the community calls** at
|
|
[meet.modelcontextprotocol.io](https://meet.modelcontextprotocol.io/) — see
|
|
[Contributor Communication](https://modelcontextprotocol.io/community/communication)
|
|
for the full set of channels and how they're used.
|
|
|
|
From there we can scope a piece of work with you and supervise it through our
|
|
workflow — which is also the path toward becoming a maintainer. What we want to
|
|
avoid is drive-by diffs that have to be reverse-engineered into our pipeline;
|
|
what we want to encourage is sustained, coordinated contribution.
|
|
|
|
All participation is governed by the MCP
|
|
[Code of Conduct](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/CODE_OF_CONDUCT.md).
|
|
|
|
## Questions
|
|
|
|
If you're unsure how to scope something, open the issue anyway and say so —
|
|
we'll help shape it. Thanks for helping make the Inspector better.
|