Skip to content

Adopt the SDK's Skills client (SEP-2640) and replace the Inspector's own Skills protocol code #2804

Closed

Description

@cliffhall

Problem

The Inspector supports the Skills extension (SEP-2640) through its own implementation, built in #2234 and #2248 before the SDK had one. That covers skills/list, skills/get, resources/directory/read, and size/digest/frontmatter verification, in about 2.3k lines of core/:

  • core/mcp/skills.ts
  • core/mcp/skillsSchemas.ts
  • core/mcp/skillsVerification.ts
  • core/mcp/skillFile.ts

MCP TypeScript SDK 2.4.0 (adopted in #2784 / #2799) now ships the client side of the same extension:

It works on 2025-11-25 and 2026-07-28. The SDK's announcement marks only the server-side SkillsExtension.attach as @experimental; the client API is stable.

So, as with Tasks before #2565, the Inspector is carrying a second copy of protocol logic the SDK now owns, and every spec change has to be tracked twice.

What to do

Replace the Inspector's Skills protocol code with the SDK's, following the shape #2565 set up for Tasks:

  • Take schemas, types and constants from @modelcontextprotocol/core/ext/skills, and drive list/get/read/readDirectory through SkillsClient.
  • Delete the Inspector's copies those replace.
  • Keep what the SDK does not cover in core/extension/skills/, importing nothing from InspectorClient. For example:
  • Confirm the ext/skills subpath imports stay external in the built output. The bundler external lists (clients/{mcpdo,tui}/tsup.config.ts, clients/web/tsup.runner.config.ts) already name @modelcontextprotocol/client and core, which should cover their subpaths; npm run verify:bundle-externals checks the built output.

First step: compare SkillsClient's verification against ours before deleting anything. Where the SDK is stricter, looser, or reports less than the Inspector needs to show, that part stays ours in core/extension/skills/. Write down which parts were kept and why.

No user-facing behavior change: the Skills screens in all three clients stay as they are, and both protocol eras must keep working end to end.

Activity

  1. added this to the v2.14.0 milestone on Oct 25, 2026
  2. added
    v2Issues and PRs for v2
    choreMaintenance: deps, build tooling, CI, cleanup — no user-facing behavior change
    on Oct 25, 2026
  3. cliffhall commented on Oct 25, 2026

    @cliffhall
    MemberAuthor

    Triage: Priority Low (total 4)

    • Severity 2: an internal refactor with no user-facing change; nothing is broken today
    • Urgency 2: wanted eventually, so the Inspector stops tracking SEP-2640 changes twice
    • Bonuses: none (milestone set at create time, which this rubric does not count)

    Milestone v2.14.0: v2.13.0 is due 2026-10-28, too soon for a ~2.3k-line replacement.

  4. modified the milestones: v2.14.0, v2.13.0 on Oct 25, 2026
  5. self-assigned this
    on Oct 25, 2026
  6. cliffhall commented on Oct 25, 2026

    @cliffhall
    MemberAuthor

    Shipped in #2808.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

choreMaintenance: deps, build tooling, CI, cleanup — no user-facing behavior changev2Issues and PRs for v2

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions