Skip to main content

skill-retrieval-mcp

Your agent doesn't need you to pick the right skill. It needs to search for one on its own.

An MCP server that gives AI agents on-demand access to a licence-vetted corpus of agent skills, collected from seven upstream repositories. 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.
  • A skill library doesn't fit in the prompt. Lazy loading still puts every skill's name and description in front of the model — 37K tokens for this corpus, before the agent has read a single one. The instructions themselves are another 960K.

The Fix

Don't install skills upfront. Search them at runtime.

You: "Deploy this service to GKE"

─── Step 1: Agent searches ───────────────────────────────────────────

Agent: search_skills("deploy a containerised service on kubernetes")   ← 4ms
     → 5 results (summaries only, no full instructions):
       1. "gke-service-networking"   (0.56) - Gateway API, Ingress, Cloud Armor, NEGs, managed SSL
       2. "gke-workload-scaling"     (0.51) - HPA and VPA for GKE workloads
       3. "gke-manifest-generation"  (0.51) - Production-ready Kubernetes YAML for Autopilot/Standard
       4. "gke-app-onboarding"       (0.46) - Containerizing and deploying an app to GKE for the first time
       5. "gke-basics"               (0.44) - Cluster provisioning, credentials, Autopilot vs Standard

─── Step 2: Agent reads the descriptions and picks #4, not #1 ────────

Agent: get_skill("gke-app-onboarding")
     → gets full guide: containerization, manifests, migration path
     → writes the Dockerfile and deployment.yaml

─── Step 3: New need emerges mid-task ────────────────────────────────

Agent: # the service has to survive traffic spikes — search again
       search_skills("autoscale pods on cpu and memory")               ← 4ms
     → "gke-workload-scaling" (0.61) - Horizontal and Vertical Pod Autoscaler for GKE
     → reads guide, adds the HPA manifest

Key behaviors:

  • Search returns summaries, not full instructions — the agent reads descriptions and scores to decide which skills are worth fetching. Five summaries cost a few hundred tokens; the one skill it actually reads costs about 2,400.
  • The top hit is not always the right one. The agent picked #4 because its description says "for the first time" — a judgement the ranking can't make. That is why search returns descriptions instead of auto-injecting the winner.
  • The agent searches again as the task evolves. Neither "autoscale" nor "pods" appeared in what the user asked for; those are terms the agent picked up while writing the manifest.

Both searches above are real output from the shipped corpus, not an illustration.

< 5ms search, measured end to end including query embedding. Zero LLM calls. Runs locally.

Installing skills manually skill-retrieval-mcp
Scale Dozens, if you're diligent 374 across 8 upstream repos
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
Provenance Whatever you happened to clone Every skill carries its repo, URL and SPDX licence

Quick Start

Three commands. Takes about 2 minutes (mostly download time).

# 1. Install
pip install "skill-retrieval-mcp[local,hf]"

# 2. Download the skill corpus + 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 the corpus 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

374 skills, collected from eight repositories whose licences were read before anything was imported:

Repository Skills Licence
K-Dense-AI/scientific-agent-skills 163 MIT
google/skills 112 Apache-2.0
mattpocock/skills 35 MIT
addyosmani/agent-skills 24 MIT
anthropics/skills 20 Apache-2.0
obra/superpowers 14 MIT
kepano/obsidian-skills 5 MIT
Agents365-ai/drawio-skill 1 MIT

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. The median one runs about 9,600 characters.

Every row records the repository it came from, its upstream URL and its SPDX licence, so anything you get back can be traced and attributed. Repositories without a licence permitting redistribution are not imported, even when their content is good.

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) yes Nothing
openai build locally 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. Build the matching index — an index is only valid for the model that built it:
skill-mcp build-index --backend openai

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    # 143 tests, ~0.7s

Architecture and design decisions: dev.md

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skill_retrieval_mcp-0.3.0.tar.gz (50.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skill_retrieval_mcp-0.3.0-py3-none-any.whl (34.2 kB view details)

Uploaded Python 3

File details

Details for the file skill_retrieval_mcp-0.3.0.tar.gz.

File metadata

  • Download URL: skill_retrieval_mcp-0.3.0.tar.gz
  • Upload date:
  • Size: 50.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for skill_retrieval_mcp-0.3.0.tar.gz
Algorithm Hash digest
SHA256 4f2b2894f85cb5f53ff331b299e3da1ac3c4c9a7b17650622db0ac41ab7ff0f8
MD5 1007d764064a9a86dc5f549eda1a176e
BLAKE2b-256 d52c9afb74b1bd333026f8c61e14c4a84c49f9997113e984d6f9004c555d389b

See more details on using hashes here.

Provenance

The following attestation bundles were made for skill_retrieval_mcp-0.3.0.tar.gz:

Publisher: publish.yml on JayCheng113/skill-retrieval-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file skill_retrieval_mcp-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for skill_retrieval_mcp-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c9e5a36aa74084a2b99d7c09b964234e04c492a4ce286c320ea6dc63cc1da27
MD5 9b4629c430dab0e8a178aef3702dd2c5
BLAKE2b-256 bc779c6d03cee94ab25721539e23efc589be175f4b5bdf359043affa1f86d65a

See more details on using hashes here.

Provenance

The following attestation bundles were made for skill_retrieval_mcp-0.3.0-py3-none-any.whl:

Publisher: publish.yml on JayCheng113/skill-retrieval-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.3.1

2 files

This release

0.3.0 This release

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page