You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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/main branch — every sub-issue must state explicitly that its PR targets v2/main, not main.
⚠️ Because v2/main is not the default branch, Closes #N in those PR bodies is only a cross-reference — it will not auto-close the issue on merge (the same caveat inspector documents for its v2/main). On merge: manually close the issue and move its card to Done. Keep the Closes #N line anyway so issues close if/when v2/main merges to main.
Prerequisite: push the v2/main branch to the repo (it exists locally) and confirm CI runs against it (typescript.yml/python.yml trigger on all pushes, so it will).
What the decomposition should produce
One tracking issue (modeled on inspector#1579): background, link to feat: MCP v2 (draft) #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 feat: MCP v2 (draft) #4452's diff, its own test expectations, the v2 label, a card on board 43, and the targets-v2/main note.
Starting sketch of the axes (to be refined during decomposition)
The PR's own file distribution suggests the grouping:
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/main and verify CI runs there
Study feat: MCP v2 (draft) #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: v2 label, board 43, Status set, targets-v2/main note, file/symbol pointers into feat: MCP v2 (draft) #4452)
Comment on feat: MCP v2 (draft) #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)
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)
v2/mainbranch — every sub-issue must state explicitly that its PR targetsv2/main, notmain.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.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
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:
src/everythingsrc/filesystemsrc/memorysrc/sequentialthinkingpackage-lock.json/ SDK version// @mcp-codemod-errorcommentsAlso 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
v2/mainand verify CI runs therev2label, board 43, Status set, targets-v2/mainnote, file/symbol pointers into feat: MCP v2 (draft) #4452)