@cleo-labs/skills-mcp
v0.1.0
Published
MCP server exposing 45 production-grade product compliance skills as native MCP resources, prompts, and tools.
Maintainers
Readme
@cleo-labs/skills-mcp
MCP server exposing 45 production-grade product-compliance skills as native MCP resources, prompts, and tools.
This is the MCP transport for the skills_library repo. Each compliance skill (cosmetics, food, electronics, toys, textiles, supplements, medical devices, customs, recalls, and more) is surfaced to any MCP-aware client as:
- a resource —
skill://<name>returning the full SKILL.md astext/markdown - a prompt —
<name>with an optional{user_query}parameter - callable via three top-level tools —
list_skills,find_skill,read_skill
Built on the official @modelcontextprotocol/sdk. MIT licensed. Slim Docker image. Works out of the box with Claude Desktop, Cursor, Continue, Zed, and any other MCP client.
Install
Run via npx
npx -y @cleo-labs/skills-mcp@latestInstall globally
npm install -g @cleo-labs/skills-mcp
skills-mcpRun via Docker
docker run --rm -i ghcr.io/cleo-labs-ia/skills-mcp:latestThe server speaks the MCP JSON-RPC protocol on stdio. It logs operational messages to stderr; stdout is reserved for MCP traffic.
Wire it into your MCP client
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows):
{
"mcpServers": {
"cleo-skills": {
"command": "npx",
"args": ["-y", "@cleo-labs/skills-mcp@latest"]
}
}
}Restart Claude Desktop. The 45 skills will appear under the resources picker (the paper-clip icon) and the slash-commands menu.
Cursor
~/.cursor/mcp.json:
{
"mcpServers": {
"cleo-skills": {
"command": "npx",
"args": ["-y", "@cleo-labs/skills-mcp@latest"]
}
}
}Continue
~/.continue/config.yaml:
mcpServers:
- name: cleo-skills
command: npx
args:
- "-y"
- "@cleo-labs/skills-mcp@latest"Codex / Zed / generic MCP host
Any client that supports the command + args MCP launcher format works the same way. See examples/ for ready-to-copy snippets.
What the server exposes
Resources
| Field | Value |
| ----- | ----- |
| Count | 45 (one per skill) |
| URI scheme | skill://<name> (e.g. skill://cosmetics-compliance) |
| Mime type | text/markdown |
| Body | The full SKILL.md including YAML frontmatter |
Prompts
| Field | Value |
| ----- | ----- |
| Count | 45 (one per skill) |
| Name | The skill's name (e.g. food-compliance) |
| Argument | user_query (optional) — appended after the skill content as a follow-up user message |
Each prompt returns a two-message conversation: a system-style preamble that loads the skill content, followed by the user's question. This makes "load skill + ask question" a single slash command in Claude Desktop.
Tools
| Tool | Args | Returns |
| ---- | ---- | ------- |
| list_skills | vertical?, query?, limit? | All skills matching the filters |
| find_skill | question, limit? | Top-N skills ranked by relevance to a free-text question |
| read_skill | name | Full SKILL.md body for one skill |
All tools return both content[].text (JSON-stringified) and structuredContent (parsed object) so they work with old and new MCP clients.
Server info
{
"name": "cleo-skills-mcp",
"title": "Cleo Skills MCP",
"version": "0.1.0",
"capabilities": { "resources": {}, "prompts": {}, "tools": {}, "logging": {} }
}Architecture
mcp-server/
├── src/
│ ├── index.ts # bin entry point (stdio transport)
│ ├── server.ts # createServer() factory
│ ├── handlers/ # resource / prompt / tool registration
│ ├── tools/ # list_skills / find_skill / read_skill
│ └── skills/ # loader, parser, registry
├── test/ # vitest suites: unit + e2e via InMemoryTransport
├── examples/ # client config snippets
├── Dockerfile # multi-stage, node:20-alpine
└── scripts/sync-skills.mjs # copies ../skills/ into ./skills/ pre-publishSee ARCHITECTURE.md for design notes.
Develop
# Install deps
cd mcp-server
npm install
# Run the server in dev mode (reads from ../skills/)
npm run dev
# Type-check + tests
npm run typecheck
npm test
# Build
npm run build
# Validate via raw JSON-RPC
echo '{"jsonrpc":"2.0","method":"initialize","id":1,"params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"smoke","version":"1.0"}}}' | node dist/index.jsEnvironment
SKILLS_DIR— override the auto-resolved skills directory.
License
MIT. See LICENSE. The skills themselves are also MIT — see the root repo.
Author
Cleo Labs · Naomie Halioua · [email protected]
