skills-mcp
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-mcpload the skills catalog and tell me what's available"
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
MCP server that exposes Claude Code style skills (SKILL.md folders) in any harness that supports MCP but not skills. Load the skill catalog, invoke a skill by id, and read its files, all through four small tools.
What it does
load-skillsmust be called once at the start of a session. It returns the catalog of every registered skill (name, description, model-invokable flag, when_to_use) and the exact rules for invoking them.skillloads one skill's full instructions by id. Skills markeddisable_model_invocation: truerequireuser_approved: true, the MCP analogue of user-only invocation.list-skill-fileslists the files a skill directory ships.read-skill-filereads one file inside a skill directory (references/, scripts/, templates/), rejecting paths that escape the skill root.
The server parses SKILL.md exactly as Claude Code does: YAML frontmatter between
--- markers, with the full community field set passing through untouched
(name, description, when_to_use, version, license, author,
allowed_tools, argument_hint, arguments, disable_model_invocation,
user_invocable, model, effort, context, agent, shell, paths,
compatibility, metadata).
Only the four tools are registered, so the model sees a small, stable tool surface. The catalog loads skill frontmatter at session start; skill bodies load on demand when a skill is invoked.
Related MCP server: Skillz
Build
npm install
npm run builddist/index.cjs is a single self-contained CommonJS bundle (esbuild), startable with
node dist/index.cjs or directly via its shebang. It has no runtime dependencies, so
the file alone is the whole server. Pass it to any MCP-capable harness.
Run
The server reads skills from a directory resolved in this order:
--skills <dir>argumentSKILLS_MCP_DIRenvironment variable<cwd>/skills
node dist/index.cjs --skills /central/path/to/skillsClaude Desktop example:
{
"mcpServers": {
"skills": {
"command": "node",
"args": ["/home/you/skills-mcp/dist/index.cjs", "--skills", "/central/path/to/skills"]
}
}
}Skills directory layout
Any of:
~/.claude/skills/<skill-name>/SKILL.md(personal)<project>/.claude/skills/<skill-name>/SKILL.md(shared)any folder you point
--skillsat, as long as each skill lives in its own subdirectory with aSKILL.mdentry file.
A skill without a SKILL.md falls back to the first *.md in its directory.
Invoking skills
MCP has no user/model sender distinction, so disable_model_invocation maps to a
gate on the skill tool: a matching skill returns an error unless the model passes
user_approved: true. That flag must come from an explicit user request, per the
instructions returned by load-skills.
Development
npm run typecheck(tsc --noEmit)npm run build(esbuild -> dist/index.cjs)npm test(test/client.mjs, an end-to-end stdio session against the built bundle)
Releases
.github/workflows/release.yml builds on a v* tag push, runs typecheck, build,
and test, then packages dist/index.cjs as skills-mcp-<tag>.cjs plus a .cjs.gz
and SHA256SUMS.txt, and attaches them to a release.
Push a tag to release:
git tag v1.0.0 && git push origin v1.0.0It can also run manually (Actions -> release -> Run workflow), optionally passing a
tag name; otherwise it derives one from package.json and creates the release at
the current commit.
Tag pushes skip packaging and release steps when nothing meaningful changed since
the previous release. GitHub ignores paths filters for tag pushes, so this is a
diff inside the job against the prior tag. Meaningful paths: src/, skills/,
package.json, package-lock.json, tsconfig.json, and the workflow itself.
Manual runs always release.
Source lives in src/:
src/mcp/protocol.tsminimal spec-correct MCP stdio server (JSON-RPC framing, initialize, ping, tools/list, tools/call)src/skills/frontmatter.tsSKILL.md frontmatter + body splitting, YAML via theyamlpackagesrc/skills/registry.tsdirectory discovery with mtime-based cachesrc/skills/types.tsSkill/SkillMeta modelsrc/tools/index.tsthe four tool definitions and handlerssrc/index.tsentry point and skills-dir resolution
This server cannot be deployed
Maintenance
Related MCP Connectors
Search verified Claude Code plugins and skills; fetch portable SKILL.md sources. Read-only.
Governed AI agent skills — one library, distributed to devs and exposed to remote agents over MCP.
Path-scoped team memories, rules and skills for Claude Code, Cursor, Codex and other MCP clients.
Manage portable AI agent playbooks, Agent Skills, MCP configurations, personas, and memory.
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.328Apache 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.154 PyPI401MIT
- FlicenseNot gradedqualityCmaintenanceRemote MCP server for Claude that exposes a library of SKILL.md packages, enabling listing, searching, and retrieving skill instructions and supporting files for use in conversations.-
- AlicenseNot gradedqualityCmaintenanceExposes MCP tools to list, search, and load Markdown skills from a local folder, enabling coding agents to discover and reuse procedural knowledge.MIT