Skip to content

Decompose PR #4452 (v2 TypeScript SDK migration) into scoped issues with a tracking issue #4475

Description

@cliffhall

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/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

  1. 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.
  2. 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:

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/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)

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions