MCP Reference
SkillRepo exposes an MCP (Model Context Protocol) server that IDEs connect to over Streamable HTTP. This reference covers authentication, available tools, and integration examples.
On this page
Authentication
All MCP requests require a Bearer token in the Authorization header. Generate access keys from Settings → Access Keys in the dashboard.
Authorization: Bearer sk_live_your_access_key_hereKeys start with sk_live_ for production. Requests without a valid key receive an error response.
| Scope | Permissions |
|---|---|
registry:read | Discover, search, and read skill content and files |
registry:write | Everything in registry:read plus create, update, and delete skills |
Security note
Access keys are hashed before storage. The plaintext key is shown only once at creation time. Rotate compromised keys immediately via the dashboard.
MCP Endpoint
The MCP server is available at the following URL via Streamable HTTP transport:
https://skillrepo.dev/api/mcpAny MCP-compatible IDE or client can connect by configuring this URL and your access key. The server implements the Model Context Protocol specification.
Rate Limits
Rate limits are applied per access key and reset daily at midnight UTC.
| Plan | MCP Calls / Day |
|---|---|
| Free | 1,000 |
| Business | 50,000 |
| Enterprise | Unlimited |
MCP Tools
The following tools are available through the MCP server. They follow the agentskills.io progressive disclosure model: lightweight discovery first, full content on activation, supporting files on demand.
discover_skillsReturns a lightweight list of all skills available to the authenticated user. Designed to be called at IDE startup. Each skill entry is approximately 100 tokens, keeping context budgets small.
Parameters
None
Returns
{
"skills": [
{
"owner": "acme",
"name": "code-review",
"description": "Review code for bugs...",
"compatibility": "cursor claude-code",
"visibility": "global"
}
],
"count": 1
}search_skillsFull-text search across skill names and descriptions. Supports pagination via limit and offset parameters.
Parameters
| Parameter | Type | Description |
|---|---|---|
query | string | Search query text (required) |
visibility | string | all (default), global, or private |
limit | integer | Max results, 1-100 (default: 20) |
offset | integer | Pagination offset (default: 0) |
get_skillReturns full metadata for a specific skill including description, version, frontmatter fields, and the list of supporting files. Use the owner/name format to identify the skill.
Parameters
| Parameter | Type | Description |
|---|---|---|
owner | string | Skill owner (account slug) |
name | string | Skill name |
Returns
{
"name": "code-review",
"owner": "acme",
"description": "Review code for bugs...",
"visibility": "global",
"version": "1.2.0",
"license": "MIT",
"compatibility": "cursor claude-code",
"files": [
{ "path": "references/style-guide.md", "size": 2048, "contentType": "text/markdown" }
],
"stats": { "activations": 1250, "rating": 4.8 }
}get_skill_contentReturns the full SKILL.md content including frontmatter and instructions. This is the primary tool for activating a skill — the agent injects the returned content into its context.
Parameters
| Parameter | Type | Description |
|---|---|---|
owner | string | Skill owner (account slug) |
name | string | Skill name |
Returns
Raw SKILL.md text (frontmatter + markdown body). Calling this tool logs an activation event.
get_skill_fileFetches an individual supporting file from a skill. Use this when the SKILL.md body references a file path (e.g. scripts/extract.py). Text files are returned as plain text; binary files as base64-encoded JSON.
Parameters
| Parameter | Type | Description |
|---|---|---|
owner | string | Skill owner (account slug) |
name | string | Skill name |
path | string | Relative file path (e.g. scripts/extract.py) |
add_skillAdds a new skill or updates an existing one in your account. Skills are private by default. Creates the skill if it does not exist, or saves a new version if it does.
Parameters
| Parameter | Type | Description |
|---|---|---|
skillMdContent | string | Full SKILL.md content with frontmatter (required) |
versionLabel | string | Semantic version label (default: "1.0") |
changelog | string | Optional changelog entry |
files | array | Optional supporting files, each with path and base64-encoded content. Total limit: 5 MB. |
delete_skillPermanently deletes a skill and all its versions from your account. Only skills owned by your account can be deleted. This action cannot be undone.
Parameters
| Parameter | Type | Description |
|---|---|---|
name | string | Skill name to delete (required) |
Example response
{
"deleted": true,
"name": "code-review",
"message": "Deleted skill code-review"
}setup_skillrepoGenerates a Cursor rules file (.cursor/rules/skillrepo.mdc) that maps your library skills to their MCP tool names for reliable activation. The agent writes the returned content to disk. Re-run whenever your library changes to keep the rules in sync.
Parameters
None
Example response
{
"file": {
"path": ".cursor/rules/skillrepo.mdc",
"content": "---\ndescription: SkillRepo...\nalwaysApply: true\n---\n..."
},
"instructions": "Write the content above to .cursor/rules/skillrepo.mdc...",
"skillCount": 5
}This tool is primarily for Cursor, which only sends tool names (not descriptions) to the model. Claude Code sends full descriptions natively and does not need this step.
skill__<owner>__<name>Each skill in your library is automatically registered as its own MCP tool named skill__<owner>__<name> (e.g. skill__anthropic__commit). Calling it returns the full SKILL.md content — identical to get_skill_content. When dynamic tools are present, get_skill_content is automatically hidden from the tool list since it is fully replaced.
Parameters
None
Behavior
- Returns the complete SKILL.md content (tier 2 activation)
- Logs an activation event and increments the skill's activation count
- Appends a file manifest if the skill has supporting files
Error Responses
When a tool encounters an error, it returns a JSON string with an error field describing the issue.
{ "error": "Skill not found" }Common Errors
| Error | Description |
|---|---|
Unauthorized | Missing or invalid access key |
Insufficient permissions | Valid key but missing the required scope (e.g. registry:write) |
Skill not found | Skill does not exist or is not visible to your account |
SKILL.md validation failed | Published content fails spec validation (details in response) |
File not found | Requested supporting file path does not exist in the skill |
IDE Integration Examples
Below are examples showing how IDEs connect to SkillRepo and follow the progressive disclosure flow.
Progressive disclosure flow
- Discovery — IDE calls
discover_skillsat startup (~100 tokens per skill) - Activation — Agent calls the skill's dynamic tool (
skill__owner__name) orget_skill_content(<5,000 tokens) - Execution — Agent requests supporting files on-demand via
get_skill_file
Claude Code
Add SkillRepo as a remote MCP server:
claude mcp add --transport http skillrepo \
https://skillrepo.dev/api/mcp \
--header "Authorization: Bearer sk_live_YOUR_KEY"Restart Claude Code and verify with /mcp. Skills are automatically available as tools.
Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"skillrepo": {
"url": "https://skillrepo.dev/api/mcp",
"headers": {
"Authorization": "Bearer sk_live_YOUR_KEY"
}
}
}
}After connecting, tell your agent: update skills from skillrepo. This calls setup_skillrepo to generate a rules file that maps your skills for reliable activation in Cursor.
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"skillrepo": {
"serverUrl": "https://skillrepo.dev/api/mcp",
"headers": {
"Authorization": "Bearer sk_live_YOUR_KEY"
}
}
}
}Need help?
Check the Getting Started guide for initial setup or the Publishing Guide to learn how to create skills.