Skip to content

Add Skills Extension SEP reference implementation#71

Open
olaservo wants to merge 4 commits intomainfrom
add-sep-example
Open

Add Skills Extension SEP reference implementation#71
olaservo wants to merge 4 commits intomainfrom
add-sep-example

Conversation

@olaservo
Copy link
Member

Summary

Reference implementation of the Skills Extension SEP with working client and server SDK extensions. Demonstrates:

  • skill:// resource convention — multi-segment paths with organizational prefixes (skill://acme/billing/refunds/SKILL.md)
  • SEP-2133 extension declarationio.modelcontextprotocol/skills in server capabilities
  • SEP-2093 featuresresources/metadata (metadata without content), URI-scoped resources/list, per-resource capabilities via _meta
  • SDK wrappers matching the SEP spec — listSkills(), readSkillUri(), fetchSkillMetadata(), READ_RESOURCE_TOOL

What's included

Component Path Purpose
SDK typescript/sdk/ Server + client libraries with SEP-2093 shims
Server example examples/skills-server/ Discovers skills, registers resources, wires SEP-2093 handlers
Client example examples/skills-client/ 7-step demo exercising all features end-to-end
Sample skills examples/sample-skills/ 4 skills — 2 single-segment, 2 multi-segment under acme/
Architecture examples/README.md Diagrams showing system structure, URI anatomy, discovery flow

SEP compliance

Audited point-by-point against PR #69:

  • Final path segment = frontmatter name (validated at discovery time)
  • No-nesting constraint enforced
  • SKILL.md explicit in all URIs
  • Scoped resources/list returns only SKILL.md entries
  • read_resource tool matches SEP schema exactly (server + uri params)
  • Extension declaration via capabilities.extensions

SDK shims

The MCP TypeScript SDK (v1.27.1) doesn't support SEP-2093 or SEP-2133 natively. The resource-extensions.ts module provides workarounds with TODO links to the upstream PRs:

  • typescript-sdk#1630 — extensions in capabilities
  • SEP-2093resources/metadata, uri param on resources/list, per-resource capabilities

Related PRs

Test plan

  • cd typescript/sdk && npm install && npm run build — SDK compiles
  • cd examples/skills-server/typescript && npm install && npm run build — Server compiles
  • cd examples/skills-client/typescript && npm install && npm run build — Client compiles
  • node examples/skills-client/typescript/dist/index.js — Full 7-step demo runs end-to-end
  • Verify 4 skills discovered (2 single-segment, 2 multi-segment)
  • Verify scoped list returns only acme/ skills
  • Verify resources/metadata returns metadata without content

🦉 Generated with Claude Code

olaservo and others added 4 commits March 21, 2026 19:25
Reference implementation demonstrating the Skills Extension SEP with:
- skill:// resource convention with multi-segment paths
- Extension declaration (io.modelcontextprotocol/skills) via SEP-2133
- SEP-2093 shims: resources/metadata, URI-scoped resources/list,
  per-resource capabilities via _meta
- SDK with server-side discovery/registration and client-side wrappers
  (listSkills, readSkillUri, fetchSkillMetadata, READ_RESOURCE_TOOL)
- 4 sample skills: 2 single-segment, 2 multi-segment under acme/
- End-to-end client demo exercising all 7 features

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Each shim function now has a TODO with the specific PR link for
when/if it can be removed. Uses "if" not "when" since the
upstream PRs are drafts not guaranteed to merge.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ASCII diagrams showing: overall system structure, URI anatomy,
discovery flow, SDK-to-protocol mapping, and what's permanent
SEP design vs temporary SDK shims.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@olaservo olaservo requested a review from a team as a code owner March 22, 2026 04:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant