modelcontextprotocol / modelcontextprotocol/servers
Decompose PR #4452 (v2 TypeScript SDK migration) into scoped issues with a tracking issue
@cliffhall is already working on this.
Since Jul 5, 2026.
- Dominant language
- TypeScript
- Stars
- 90.5k
- Forks
- 11.7k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 5
Description
Goal
Decompose PR #4452 (feat: MCP v2 (draft) — migrates the TypeScript servers to the v2 MCP TypeScript SDK; 52 files, +295/−802, explicitly do-not-merge) into scoped, individually-testable issues on the V2 board, under a single tracking issue — then re-implement each one deliberately as its own PR, using #4452's diff as the reference implementation.
This follows the pattern we used successfully on the inspector for a similarly-oversized PR: see modelcontextprotocol/inspector#1579 ("decomposing it into scoped issues and re-implementing each one deliberately, using the PR's diff as the reference implementation"). #4452 stays open as the reference while the work proceeds, and is ultimately closed in favor of the rewrite — none of its commits merge directly.
Branch discipline (differs from normal work)
- All of this work happens on the
v2/mainbranch — every sub-issue must state explicitly that its PR targetsv2/main, notmain. - ⚠️ Because
v2/mainis not the default branch,Closes #Nin those PR bodies is only a cross-reference — it will not auto-close the issue on merge (the same caveat inspector documents for itsv2/main). On merge: manually close the issue and move its card to Done. Keep theCloses #Nline anyway so issues close if/whenv2/mainmerges tomain. - Prerequisite: push the
v2/mainbranch to the repo (it exists locally) and confirm CI runs against it (typescript.yml/python.ymltrigger on all pushes, so it will).
What the decomposition should produce
- One tracking issue (modeled on inspector#1579): background, link to #4452 as reference (pin the head SHA so the reference is stable), the sub-issue list grouped into waves — independent issues first so they can be worked in parallel, dependent ones after.
- Scoped sub-issues, each with: a clearly-defined scope of what it changes, pointers to the relevant files/symbols in #4452's diff, its own test expectations, the
v2label, a card on board 43, and the targets-v2/mainnote.
Starting sketch of the axes (to be refined during decomposition)
The PR's own file distribution suggests the grouping:
| Area | Files in #4452 | Notes |
|---|---|---|
src/everything |
41 (+106/−578) | The bulk — likely splits further (SDK server/registration API migration, transports, tools, resources/prompts, tests) |
src/filesystem |
5 (+51/−54) | Probably one issue |
src/memory |
3 (+49/−50) | Probably one issue |
src/sequentialthinking |
2 (+8/−8) | Small — maybe folds into a shared-mechanics issue |
Root package-lock.json / SDK version |
1 | SDK dependency bump — likely the wave-1 foundation issue everything else builds on |
// @mcp-codemod-error comments |
across diff | The PR's own roadmap flags these for review — each is a decision point the rewrite must resolve deliberately |
Also fold in #4452's roadmap realities: the SDK is moving (alpha → beta → stable), so sub-issues should pin which SDK version they target, and the tracking issue should note the beta/stable re-sync points.
Tasks
- Push
v2/mainand verify CI runs there - Study #4452's full diff; refine the axes above into the final sub-issue list (grouped into waves by dependency)
- Create the tracking issue + sub-issues (all:
v2label, board 43, Status set, targets-v2/mainnote, file/symbol pointers into #4452) - Comment on #4452 explaining the plan, thanking the author, and linking the tracking issue — the PR stays open as reference until the rewrite lands, then closes
- Close this issue once the tracking issue + sub-issues exist (this issue's deliverable is the decomposition, not the migration itself)
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.