Lightweight MCP Server for RAG-based skill retrieval
Project description
skill-retrieval-mcp
Your agent doesn't need you to find the right skills. It needs to search 89K of them on its own.
An MCP server that gives AI agents on-demand access to 89K+ skills covering virtually every technical domain. The agent searches as it works — the same way you look up docs mid-task.
Works with Claude Code, Codex CLI, Gemini CLI, Cursor, and any MCP-compatible agent.
The Problem
You give your agent a skill — "always use TDD," "follow this API style" — and it works. But manually installing skills doesn't scale:
- You don't know what exists. There are thousands of skills out there. You install the 10 you happen to find — everything else, the agent guesses.
- You can't install what you can't name. Mid-task, the agent needs a skill for "OIDC-based PyPI publishing" — but you'd never think to install that in advance.
- 89K skills can't live in
~/.claude/skills/. Even with lazy loading, thousands of skill descriptions bloat the system prompt.
The Fix
Don't install skills upfront. Search them at runtime.
You: "Help me set up CI/CD for this Python project"
─── Step 1: Agent searches ───────────────────────────────────────────
Agent: search_skills("github actions python CI pipeline") ← 3ms
→ 5 results (summaries only, no full instructions):
1. "github-actions-python" (0.91) - CI/CD pipelines for Python with pytest and linting
2. "github-actions-docker" (0.72) - Docker build and push in GitHub Actions
3. "gitlab-ci-python" (0.68) - GitLab CI/CD for Python projects
4. "circleci-python" (0.61) - CircleCI configuration for Python
5. "jenkins-pipeline" (0.45) - Jenkins declarative pipelines
─── Step 2: Agent reads descriptions, picks #1 ──────────────────────
Agent: get_skill("github-actions-python")
→ gets full guide: step-by-step setup, matrix testing, caching, best practices
→ writes .github/workflows/ci.yml
─── Step 3: New need emerges mid-task ────────────────────────────────
Agent: # workflow needs PyPI publishing — search again with different query
search_skills("pypi publish trusted publisher") ← 2ms
→ "pypi-trusted-publishing" (0.87) - OIDC-based PyPI publishing without API keys
→ reads guide, adds publish step
Key behaviors:
- Search returns summaries, not full instructions — the agent reads descriptions and scores to decide which skills are worth fetching. 5 results searched, 1 skill read → 80% token savings.
- The agent searches multiple times as the task evolves. Different phase → different query → different skill.
- Queries are shaped by context. The second search includes "trusted publisher" — a term the agent picked up while working, not something the user said.
89K skills. < 5ms search. Zero LLM calls. Runs locally.
| Installing skills manually | skill-retrieval-mcp | |
|---|---|---|
| Scale | Dozens, if you're diligent | 89K+ |
| Discovery | You find and install each one | Agent searches by need |
| Selection | You pick upfront | Agent picks per-task |
| Search | Name matching on descriptions | Semantic, < 5ms, local FAISS |
Quick Start
Three commands. Takes about 2 minutes (mostly download time).
# 1. Install
pip install "skill-retrieval-mcp[local,hf]"
# 2. Download 89K skills + pre-built vector index
skill-mcp pull --include-index
# 3. Register with your agent (auto-detects Claude Code, Cursor, etc.)
skill-mcp init
Done. Your agent now searches 89K skills on demand.
Manual registration (if init doesn't detect your agent)
| Agent | Config file | Add this |
|---|---|---|
| Claude Code | .mcp.json |
{"mcpServers": {"skill-retrieval": {"command": "skill-mcp", "args": ["serve"]}}} |
| Gemini CLI | ~/.gemini/settings.json |
same as above |
| Cursor | .cursor/mcp.json |
same as above |
| Codex CLI | ~/.codex/config.toml |
[mcp_servers.skill-retrieval]command = "skill-mcp"args = ["serve"] |
What's In the Knowledge Base
89,267 skills across every major technical domain, sourced from LangSkills, SkillNet, Anthropic official, and community contributions.
Each skill is a structured best-practice guide — not a one-liner, but a step-by-step how-to with code examples, common pitfalls, and recommendations.
Run skill-mcp status to see what you have locally, or use list_categories to browse domains.
Tools
| Tool | What it does |
|---|---|
search_skills |
Semantic search — describe what you need in natural language |
keyword_search |
Exact match — tool names, error messages, CLI commands |
get_skill |
Fetch full instructions (call after search) |
list_categories |
Browse available domains and counts |
Search returns summaries only (saves tokens). The agent calls get_skill for the ones it actually needs.
Add Your Own Skills
<!-- ~/my-skills/deploy-checklist/SKILL.md -->
---
name: "deploy-checklist"
description: "Pre-deployment verification checklist for production releases"
tags: ["deployment", "production", "checklist"]
---
## Steps
1. Run full test suite...
2. Check database migrations...
skill-mcp import --source directory --path ~/my-skills/
# index is updated automatically — new skills are searchable immediately
No manual build-index needed. The import detects your existing index and incrementally adds only the new skills. Use --no-index to skip this (e.g. when batch-importing from multiple sources).
Custom skills merge with the pre-built ones. Deduplication is automatic.
Embedding Backends
Default: sentence-transformers/all-MiniLM-L6-v2 — local, free, no API key. Pre-built index included.
| Backend | Pre-built index | Requires |
|---|---|---|
sentence-transformers (default) |
137MB | Nothing |
openai |
1.1GB | OPENAI_API_KEY |
ollama |
build locally | Ollama running |
# Switch to OpenAI embeddings:
# 1. Edit ~/.skill-mcp/config.yaml (set backend: openai, model: text-embedding-3-large)
# 2. Download matching index:
skill-mcp pull --include-index
CLI Reference
skill-mcp init [--no-register] Setup + register with agents
skill-mcp pull [--replace] [--include-index] Download skills from HuggingFace
skill-mcp import --source SOURCE --path PATH Import custom skills
skill-mcp build-index [--backend B] [--force] Build/update vector index
skill-mcp serve [--transport stdio|sse] Start MCP server
skill-mcp search QUERY [--k N] Test search from terminal
skill-mcp status Show what's loaded
skill-mcp dedup Remove duplicates
All commands support --data-dir DIR or env SKILL_MCP_DATA_DIR.
Development
git clone https://github.com/JayCheng113/skill-retrieval-mcp
cd skill-retrieval-mcp
pip install -e ".[all,dev]"
pytest tests/ -v # 139 tests, ~0.7s
Architecture and design decisions: dev.md
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skill_retrieval_mcp-0.2.0.tar.gz.
File metadata
- Download URL: skill_retrieval_mcp-0.2.0.tar.gz
- Upload date:
- Size: 39.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0afde5ca28c9eb62cacb8c37fcf8cf0703b1ef3ef727d422986d88a345358a1e
|
|
| MD5 |
5066165880e3373e289c15ea517889ed
|
|
| BLAKE2b-256 |
76b14e091ce8c614f9649cfaad6cb30e559925a5ac5613975d8c0e0985eb0410
|
Provenance
The following attestation bundles were made for skill_retrieval_mcp-0.2.0.tar.gz:
Publisher:
publish.yml on JayCheng113/skill-retrieval-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skill_retrieval_mcp-0.2.0.tar.gz -
Subject digest:
0afde5ca28c9eb62cacb8c37fcf8cf0703b1ef3ef727d422986d88a345358a1e - Sigstore transparency entry: 1101094627
- Sigstore integration time:
-
Permalink:
JayCheng113/skill-retrieval-mcp@e89a3c379a534487f60be4c705aca5089894c0da -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/JayCheng113
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e89a3c379a534487f60be4c705aca5089894c0da -
Trigger Event:
release
-
Statement type:
File details
Details for the file skill_retrieval_mcp-0.2.0-py3-none-any.whl.
File metadata
- Download URL: skill_retrieval_mcp-0.2.0-py3-none-any.whl
- Upload date:
- Size: 28.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f8ea16cf1751b0ae1018940ac5d752316e542a808ad00ead8e32c9187f5a9f9
|
|
| MD5 |
a71e2c55cc5d265996bad569b4914361
|
|
| BLAKE2b-256 |
9fec8fdc4340abf11b82574e27fb116a42753e28a75a0a6104c819432ac6dd99
|
Provenance
The following attestation bundles were made for skill_retrieval_mcp-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on JayCheng113/skill-retrieval-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skill_retrieval_mcp-0.2.0-py3-none-any.whl -
Subject digest:
5f8ea16cf1751b0ae1018940ac5d752316e542a808ad00ead8e32c9187f5a9f9 - Sigstore transparency entry: 1101094631
- Sigstore integration time:
-
Permalink:
JayCheng113/skill-retrieval-mcp@e89a3c379a534487f60be4c705aca5089894c0da -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/JayCheng113
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e89a3c379a534487f60be4c705aca5089894c0da -
Trigger Event:
release
-
Statement type: