modelcontextprotocol / modelcontextprotocol/servers
Adopt AGENTS.md (with CLAUDE.md pointer) modeled on the inspector repo
@cliffhall is already working on this.
Since Jul 4, 2026.
- Dominant language
- TypeScript
- Stars
- 90.5k
- Forks
- 11.7k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 5
Description
Goal
Adopt the agent-guidance pattern from the inspector repo — specifically the AGENTS.md on v2/main, which is the proper reference (the main-branch version is a thin early draft). A single AGENTS.md dev guide that all coding agents read, with CLAUDE.md reduced to a one-line pointer:
@./AGENTS.md
Rules become tool-agnostic — Claude Code, Copilot, Cursor, etc. consume the same document — and nothing is maintained twice.
Starting point
This repo already has a substantial CLAUDE.md (monorepo structure, build/test commands per language, code style, CI notes, contributing guidelines). So this is a migration + extension: move that content into AGENTS.md, reorganize it into the v2/main reference's shape, extend with the sections below, then replace CLAUDE.md with the pointer.
Content plan — mapped from the v2/main reference
Project Structure — the annotated src/ tree (7 servers, 4 TS / 3 Py) with each server's package name and registry. (Adapts inspector's annotated tree.)
Development setup / Build & test commands — largely exists in current CLAUDE.md: npm workspaces for TS (Node 22, vitest + coverage-v8 required for new tests), uv/hatchling for Python (pytest, pyright, ruff).
Repository & Project Board — servers-specific equivalent of inspector's section:
- Repo: https://github.com/modelcontextprotocol/servers.git — base branch
main - Board: Servers V2 board (project 43 — the single board; all work goes here)
- Include the
ghrecipes with the stable-ID table, exactly as the reference does:
| Thing | ID |
|---|---|
| Project node ID | PVT_kwDOCt2Azc4BcZgq |
| Status field ID | PVTSSF_lADOCt2Azc4BcZgqzhXCpm0 |
| Status | Option ID |
|---|---|
| Todo | f75ad846 |
| In Progress | 98236657 |
| In Review | 47fc9ee4 |
| Done | 25b87ca0 |
Issue-driven Work Style — adapt the reference's rules to this repo:
- An issue isn't "created" until it is labeled
v2and on board 43 and has a Status — three distinct steps - Only issues go on the board, never PRs (PRs tracked via their linked issue's card)
- Every board item is a real issue (no draft cards); check for duplicates before creating; assign the creator
- Status flow: Todo → In Progress (work begins, feature branch) → In Review (PR open) → Done (merge)
- PR body's first line:
Closes #<ISSUE>. Simpler than inspector here: our PRs targetmain(the default branch), so closing keywords do auto-close the issue on merge — but the board Status still needs to be moved to Done manually (auto-close doesn't touch the project board) - New tasks discovered mid-work → new issues on the board
Maintenance Rules — keep docs in sync (README, per-server READMEs, RELEASING.md, and AGENTS.md itself when implementation/testing rules change). Reference RELEASING.md for the release process rather than duplicating it.
Always test new or modified code — vitest for TS (with @vitest/coverage-v8), pytest for Python; tests required for new/changed code. (We don't inherit inspector's 90% per-file gate on day one — set expectations honestly and tighten later if wanted.)
Responding to Code Reviews — copy the reference's etiquette verbatim: not every suggestion must be implemented; divergence or rejection is fine with a reason; respond to each review comment with what was done or why not.
Lint-fixed, Formatted code + validate (decided — in scope for this issue):
- Add Prettier (root config,
format/format:checkscripts) and ESLint (flat config) shared across the TS workspaces - Root
npm run validate=format:check→lint→build→test, chaining the per-workspace validations exactly like the reference's per-client chain - The rules, per the reference: always
npm run formatbefore committing;npm run validatebefore pushing - CI (
typescript.yml) runsvalidateso the checks gate PRs - Python's equivalent one-liner documented per server (
uv run pyright && uv run ruff check . && uv run pytest)
TypeScript instructions — adopt the reference's rules (never any; never suppress compiler/linter errors via config; leverage inference, generics, type guards) plus servers-specific idioms: ES modules with .js import suffixes, Zod schemas for tool input validation, naming conventions (camelCase/PascalCase/UPPER_CASE/kebab-case, verb-first tool names), MCP patterns (registerTools/registerResources/registerPrompts, tool annotations readOnlyHint/idempotentHint/destructiveHint, stdio + Streamable HTTP transports).
Python instructions — the counterpart section inspector doesn't need: type hints enforced by pyright, ruff clean, async/await idioms (pytest-asyncio), per-server module layout.
Contribution boundaries — carried from current CLAUDE.md: accepted / selective / not-accepted, no new server implementations (registry instead), PR checklist expectations.
(Inspector's React/Mantine section and web-auth-token section have no equivalent here — omitted.)
Acceptance
-
AGENTS.mdat repo root, organized per the v2/main reference, containing the merged + extended guidance -
CLAUDE.mdreplaced with the one-line@./AGENTS.mdpointer - Prettier + ESLint configured at the root, shared across TS workspaces
- Root
npm run validate(format:check + lint + build + test) passes on a clean checkout - CI (
typescript.yml) runsvalidateso the checks gate PRs - Board section's
ghrecipes verified working (IDs above are live — they were used to place this very issue) - Verified Claude Code picks up the guidance through the pointer
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.