The Short Version

SEP-2640 defines how MCP servers expose skills — reusable, discoverable capability bundles — through standard MCP primitives (Resources, not a parallel protocol). On September 11, the MCP conformance repository merged five server scenarios that any implementation must pass to claim compliance. The scenarios cover index integrity, manifest completeness, directory structure, resource binding, and security boundaries.

Why This Matters

Until now, "skills" in MCP were a folk convention. Servers advertised capabilities through custom tools (list_skills, load_skill) with no shared schema, no discovery protocol, and no way for a client to verify what a server actually provides. SEP-2640 changes that by standardizing on Resources:

  • skill://index.json — a canonical index listing every skill with type, name, digest, and skill:// URI
  • skill://{type}/{name}/SKILL.md — a markdown resource with frontmatter (name, description, version, author) that the server binds at runtime
  • Digests — SHA-256 hashes in sha256:{64hex} format so clients can verify integrity
  • Limits — 512 entries max, 16 MiB total index size, preventing unbounded growth

The conformance suite turns these requirements into executable tests. A server either passes or it doesn't — no ambiguity.

The Five Server Scenarios

The merged PR (conformance#330) adds these scenarios under src/scenarios/server/skills/:

1. SkillsIndexScenario (sep-2640-skills-index)

Validates the index resource:

  • skill://index.json exists and is readable
  • Every skills[].type is a value from the SEP enum
  • Every entry has a non-empty name
  • A present digest matches sha256:{64hex} format
  • Entry URLs use the skill:// scheme

2. SkillsManifestScenario (sep-2640-skills-manifest)

Validates each skill's manifest resource:

  • The resource is markdown-typed
  • Frontmatter name and description surface on the resource metadata
  • The final path segment equals the frontmatter name
  • Skill _meta keys use the reverse-domain prefix (e.g., io.modelcontextprotocol/...)

3. SkillsDirectoryScenario (sep-2640-skills-directory)

Validates the directory layout:

  • Capabilities are read from the server's declared skills directory
  • Each skill directory contains exactly one SKILL.md
  • No orphan files; no nested skill directories

4. SkillsResourceBindingScenario (sep-2640-skills-resource-binding)

Validates that the Python SDK's ResourceBinding and MethodBinding primitives correctly serve skill resources through the standard MCP resources/read flow — no custom tooling required.

5. SkillsSecurityBoundaryScenario (sep-2640-skills-security)

Validates the security model Tobin (Anthropic) flagged in February 2025: dynamically served skills must not bypass authorization. The scenario confirms that skill resources respect the same permission boundaries as other MCP resources — no side channels.

What Server Authors Need to Do

If you maintain an MCP server that exposes skills (or plan to), the compliance path is straightforward:

  1. Run the conformance suite against your server. The suite is in modelcontextprotocol/conformance — pin to commit 7169291ec0b68eb370fddcd9947313ab0d5e4156 for the SEP-2640 scenarios.
  2. Structure your skills directory as skills/{type}/{name}/SKILL.md with frontmatter matching the SEP schema.
  3. Expose skill://index.json through a Resource provider that computes digests at serve time (or pre-computes and caches).
  4. Use the SDK primitives — FunctionResource, ResourceBinding, MethodBinding from the MCP Python SDK 2.x. The Stars MCP server (svg153/github-stars-contrib-mcp-server) demonstrated this passes conformance without a parallel FastMCP layer.
  5. Gate skill resources behind the same auth as your other resources. The security scenario will fail if skills leak around authorization.

What Clients Should Expect

For client authors, SEP-2640 means you can now:

  • Discover skills via resources/list with a skill:// URI filter
  • Read a skill's manifest via resources/read — no custom RPC
  • Verify integrity with the provided SHA-256 digest before executing
  • Present a unified skill browser across any compliant server

The ext-skills repository (modelcontextprotocol/experimental-ext-skills) hosts the stable specification page and reference implementation. Note the repo is explicitly labeled experimental; SEP-2640 itself is the canonical proposal.

Ecosystem Signal

The conformance merge is a coordination milestone. Multiple implementations (Python SDK, Scala/JVM via fast-mcp-scala, and the Stars pilot) have now validated against the same test vectors. That convergence is what turns a specification into a standard.

For teams building on MCP, the takeaway is practical: if your server claims to support skills, run the conformance suite in CI. If it passes, you interoperate. If it doesn't, the failures tell you exactly which contract clause you're violating.