Protocol Revision: draft
User Interaction Model
Skills in MCP are designed to be model-controlled, meaning that the language model can discover and load skills automatically based on its contextual understanding of the task at hand. The protocol defines how skills are discovered and read. Clients are responsible for:- Injecting skill metadata into the model’s context at startup
- Determining when to activate skills based on user tasks
- Loading full skill contents when activated
- Executing scripts with appropriate sandboxing
Capabilities
Servers that support skills MUST declare theskills capability:
The protocol does not specify where servers should store or discover skills. Servers may load skills from local directories, remote registries, databases, or any other source. Clients interact with skills through the protocol methods regardless of underlying storage.
listChanged: indicates whether the server will emit notifications when the list of available skills changes.scripts: indicates whether the server’s skills include executable scripts.
Protocol Messages
Listing Skills
To discover available skills, clients send askills/list request. This operation supports pagination.
This returns metadata only—not full skill contents. This enables progressive disclosure and keeps initial context load minimal.
Request:
The
description field should describe both what the skill does AND when to use it.
This helps models determine when to activate the skill. Keep descriptions under 1024 characters.Context Injection
Clients SHOULD inject skill metadata into the model’s system prompt at startup so the model knows what skills are available. Recommended format (for Claude models):location field with the path to the SKILL.md file:
skills/read to fetch the full skill.
Reading Skills
To retrieve full skill contents, clients send askills/read request:
Request:
instructions field contains the full Markdown body of the SKILL.md file. This is what gets loaded into the model’s context when the skill is activated.
Reading Skill References
To retrieve additional reference materials for a skill, clients send askills/read_reference request:
Request:
Executing Skill Scripts
To execute a script provided by a skill, clients send askills/execute request:
Request:
List Changed Notification
When the list of available skills changes, servers that declared thelistChanged capability SHOULD send a notification:
Message Flow
Data Types
Skill Metadata
Returned byskills/list. Lightweight metadata for progressive disclosure:
Skill (Full)
Returned byskills/read. Complete skill definition:
Script Definition
Reference Definition
Annotations
Skills and their contents support optional annotations:audience: Array indicating intended audience ("user","assistant", or both)priority: Number from 0.0 to 1.0 indicating importance for context inclusionlastModified: ISO 8601 timestamp of last modification
Skill Activation
Skill activation follows the same model-controlled pattern as tools. The model sees available skill metadata in context and decides when to load full instructions based on the task at hand.File Paths
Scripts and references use relative paths from the skill root:Error Handling
Servers SHOULD return standard JSON-RPC errors for common failure cases:- Skill not found:
-32002 - Script execution failed:
-32003 - Reference not found:
-32004 - Internal errors:
-32603
Security Considerations
-
Servers MUST:
- Validate all skill names and reference paths
- Implement proper access controls for skill content
- Sandbox script execution environments
- Sanitize script outputs
-
Clients SHOULD:
- Prompt for user confirmation before executing scripts
- Display which skills are loaded into context
- Implement timeouts for script execution
- Log skill usage for audit purposes
- Validate skill content before adding to model context
-
Script Security:
- Scripts SHOULD be executed in isolated environments
- Scripts MUST NOT have access to credentials unless explicitly granted
- Servers SHOULD implement resource limits (CPU, memory, time) for script execution
Relationship to Other Primitives
Skills complement MCP’s other primitives:
Skills may reference or depend on Tools:
- A skill’s instructions might explain when/how to use specific tools
- A skill’s scripts are essentially bundled tool implementations
- Prompts are user-triggered message templates
- Skills are model-pulled instruction sets loaded on demand
Why Skills Over MCP?
Skills can also be loaded directly from the filesystem (see Agent Skills). MCP provides additional capabilities:
For simple local development, filesystem-based skills may be sufficient. MCP becomes valuable when:
- Skills need to be shared across teams or organizations
- Skills require authentication or access control
- Agents operate in environments without direct filesystem access
- You want a unified protocol for tools, resources, and skills