skills-mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@skills-mcp-serverlist all skills"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
skills-mcp-server
A small Model Context Protocol (MCP) server that exposes Cursor-style skill packs (SKILL.md trees) to any MCP client. It uses the official TypeScript SDK and supports:
stdio — local subprocess mode (typical for Cursor / Claude Desktop spawning a command).
Streamable HTTP — remote mode on
POST /mcp(stateless), MCP 2025-03-26+.Legacy SSE —
GET /sse+POST /messages?sessionId=...for clients (including many Cursor remote setups) that expect the older HTTP+SSE transport.
This package is client-agnostic: anything that speaks MCP can use it.
Features (MCP surfaces)
Surface | Purpose |
Resources |
|
Tools |
|
Prompts |
|
Skill ids are the POSIX path from SKILLS_ROOT to the folder containing SKILL.md (root-level file uses id _root).
Related MCP server: Skillz
Quick start (local stdio)
npm install
npm run buildDefault skills/ includes packs copied from .cursor/skills in this repo. Add more folders with SKILL.md as needed. Run:
npx skills-mcp-server
# or: node dist/main.jsIn Cursor MCP settings, use command-based config with MCP_TRANSPORT unset or stdio:
{
"mcpServers": {
"skills": {
"command": "node",
"args": ["C:/absolute/path/to/skills-mcp-server/dist/main.js"],
"env": {
"SKILLS_ROOT": "C:/absolute/path/to/your/skills"
}
}
}
}Remote (hosted — Cursor without local stdio)
Use HOSTING_AND_CURSOR.md for free-tier hosts (Render, Railway, Fly, Koyeb, etc.), env vars, and Cursor mcp.json with url + headers.
Endpoints (same host, HTTPS):
Streamable HTTP:
https://your-host/mcpLegacy SSE (often best for Cursor remote):
https://your-host/sse(messages go to/messages)
Health: GET https://your-host/health. Env reference: env.example.
Claude / other clients
Any MCP client that supports stdio or Streamable HTTP can attach the same server. Configure the vendor’s “remote MCP” or “HTTP MCP” entry with your HTTPS URL and bearer token if enabled.
Documentation
HOSTING_AND_CURSOR.md— free hosting, env vars, Cursor remote MCP (url/ SSE vs streamable).DEPLOYMENT.md— Docker, Compose, reverse proxy, operational checklist.
License
MIT.
Available Tools
3 toolsget_skillA
Load the full SKILL.md contents for a skill id.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_id | Yes | Skill id as returned by list_skills |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states 'Load the full SKILL.md contents' with no details on side effects, authentication needs, or what 'full contents' entails (e.g., format, size limits).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, no wasted words. Perfectly concise for the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 param, no nested objects), the description is adequate but lacks guidance on return format or constraints, which would be helpful since there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the description adds no extra meaning beyond the schema's existing explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Load the full SKILL.md contents') and the resource ('for a skill id'), distinguishing it from sibling tools like list_skills and search_skills.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing the full contents of a specific skill, but no explicit guidance on when to use versus alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_skillsA
Return a manifest of available skills (id, title, description teaser). No filesystem paths are exposed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that no filesystem paths are exposed, implying safety. However, it does not mention auth requirements, rate limits, or other behavioral aspects. For a simple read operation, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and adds a concise safety note. Every word earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's extreme simplicity (no params, no output schema), the description adequately explains the return fields and a key behavioral trait. It provides sufficient context for an agent to invoke correctly, despite not contrasting with siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100%. According to guidelines, zero parameters yield a baseline of 4. The description adds no parameter info as there are none, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a manifest of available skills with specific fields (id, title, description teaser). It uses a specific verb 'Return' and resource 'manifest of available skills', and implicitly distinguishes from siblings like get_skill (single) and search_skills (filtered).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives (get_skill, search_skills). The context implies it is for listing all skills, but no guidance on when to choose it over the others is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_skillsA
Filter skills by free-text query over id, title, and description.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Case-insensitive substring match |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It only describes the operation as filtering without mentioning safety (read-only), pagination, error handling, or what happens with no matches. Insufficient for a tool lacking annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 9 words, front-loaded with verb and resource, no redundant information. Efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has only one parameter and no output schema. While the description covers input, it fails to explain return values (e.g., what fields are returned, pagination). For a straightforward search, this is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter 'query' described as 'Case-insensitive substring match.' The description adds value by specifying which fields (id, title, description) are searched, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Filter skills by free-text query over id, title, and description.' It specifies the verb (filter), resource (skills), and scope (fields searched), distinguishing from sibling tools get_skill and list_skills.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit comparison to siblings or guidance on when to use vs alternatives. However, the context signals indicate siblings exist, and the purpose implies it's for searching, not retrieving a single skill or listing all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
get_skill - First observed
list_skills - First observed
search_skills
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: retrieving full skill content by ID, listing all skills, and searching skills by query. No overlap or ambiguity.
All tool names follow the verb_noun pattern (get_skill, list_skills, search_skills), making them predictable and easy to understand.
Three tools is well-scoped for a skills server: listing, searching, and retrieving full details. No unnecessary extras or missing essentials.
The tool set covers the expected read-only operations for a skills repository: listing all, searching, and getting full content. No apparent gaps for its purpose.
Maintenance
Related MCP Connectors
Search and discover Agent Skills from the skills.sh registry. Powered by HAPI MCP server.
Search, fetch, lint, and install Agent Skills (SKILL.md) from the SkillMD registry.
Governed AI agent skills — one library, distributed to devs and exposed to remote agents over MCP.
The governed runtime for agent skills. Search the catalog and inspect a skill before running it.
Related MCP Servers
- AlicenseAqualityCmaintenanceConverts AI Skills (following Claude Skills format) into MCP server resources, enabling LLM applications to discover, access, and utilize self-contained skill directories through the Model Context Protocol. Provides tools to list available skills, retrieve skill details and content, and read supporting files with security protections.327Apache 2.0
- AlicenseNot gradedqualityDmaintenanceTurns Claude-style skills (SKILL.md files with resources) into callable MCP tools for any agent. Discovers skills from a directory, exposes their instructions and resources, and can execute bundled helper scripts.162 PyPI401MIT
- AlicenseNot gradedqualityCmaintenanceDynamically loads and exposes skills from a directory with hot-reloading support, enabling users to manage and query skill content via MCP resources and tools.12MIT
- AlicenseAqualityCmaintenanceMCP server that serves agent skills (SKILL.md bundles) to any MCP client, exposing them via tools and resources for tool-oriented and resource-aware clients.313 npmISC