Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Skill Registry

FreeNot checked

A self-hostable MCP server that turns a folder of skills into callable tools via MCP and REST APIs.

GitHubEmbed

About

A self-hostable MCP server that turns a folder of skills into callable tools via MCP and REST APIs.

README

🧩 MCP Skill Registry

A self-hostable Model Context Protocol server that turns a folder of "skills" into tools any MCP client can discover and run.

CI Python License: MIT Code style: black Hugging Face Space

What It Does · Quick Start · Built-in Skills · Connect a Client · Author a Skill · Deploy · Contributing


📖 About

MCP Skill Registry is an open-source, self-hostable Model Context Protocol server that turns plain folders of skills and agents into tools any MCP client — Claude Code, Claude Desktop, GitHub Copilot — can discover and run. It ships with a curated catalogue (spec-driven development, legacy modernization, and ITSM integrations), a one-click Hugging Face deployment, and an Apple-inspired upload dashboard.

New here? Jump to Quick Start or Connect an MCP Client.

🎯 What It Does

MCP Skill Registry is one server that hosts many skills and exposes each one as a callable tool.

A skill is just a folder containing a SKILL.md manifest and a small script. Drop the folder in, and the server:

  1. Discovers it automatically (reads the manifest at startup).
  2. Publishes it on two interfaces at once:
    • as an MCP tool — usable from Claude Code, Claude Desktop, VS Code, Cursor, or any MCP client;
    • as a REST endpoint — usable from curl, scripts, or any HTTP app.
  3. Executes it safely in an isolated subprocess with a hard timeout.

You add capabilities by adding folders or uploading a ZIP — never by editing the server.

   ┌─────────────┐     "list/run tools"      ┌────────────────────┐
   │  MCP client │ ────────────────────────► │                    │
   │ Claude Code │                           │   MCP Skill        │
   │ Claude Dsk. │ ◄──────────────────────── │   Registry server  │
   │  VS Code    │      tool results         │                    │
   └─────────────┘                           │   discovers every  │
   ┌─────────────┐     POST /api/v1/...      │   skills/<name>/   │
   │ REST caller │ ◄────────────────────────►│   folder           │
   └─────────────┘                           └─────────┬──────────┘
                                                       │ runs in
                                                       ▼ subprocess
                                          skills/text-statistics/
                                          skills/your-skill/ ...

🏗️ Architecture

        MCP clients                         REST clients
   (Claude Code / Desktop,            (curl, scripts, the
    GitHub Copilot, VS Code)            Next.js dashboard)
            │                                   │
            ▼  Streamable HTTP                  ▼  /api/v1
   ┌──────────────────────────────────────────────────────┐
   │                FastAPI application                    │
   │  api → mcp → services → repositories → db → models    │
   │  discovery · validation · sandboxed execution · audit │
   └──────────────────────────────────────────────────────┘
            │ discovers + runs                  │ persists
            ▼                                   ▼
   skills/ + agents/  (self-contained folders)   SQLite (history, audit)

Skills and agents are self-contained folders the FastAPI server auto-discovers and exposes as MCP tools (Streamable HTTP) and REST endpoints. Skills run in isolated subprocesses with a hard timeout; uploads can auto-publish to GitHub, which redeploys the Hugging Face Space.


✨ Features

Feature Description
🔌 Dual interface Every skill is an MCP tool and a REST resource
🧭 Zero-config discovery Skills are plain folders; no registration code
🛡️ Sandboxed execution Subprocess isolation, per-skill timeouts, output caps
📤 Live uploads Install a skill from a ZIP via the API or dashboard; no restart
🌐 Native MCP Streamable HTTP transport with sessions; no bridge needed
🔍 Search Keyword out of the box, optional semantic (vector) search
🏭 Engineering Factory Built-in skill suite for legacy modernization and governance
📐 Spec-Driven Development SpecKit skills drive a project from idea to backlog
🤖 Agent orchestration Agents compose skills into multi-step workflows
🖥️ Dashboard UI Apple-inspired Next.js dashboard for browsing, searching, and uploading
📝 Audit trail Append-only event log for every execution and catalogue change
🧱 Clean codebase Layered, typed, 37+ tests, CI on Python 3.10–3.12

🚀 Quick Start

Local development

git clone https://github.com/sarveshtalele/mcp-skills-registry.git
cd mcp-skills-registry

python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

skill-registry          # serves on http://localhost:7860
curl http://localhost:7860/health
# {"status":"ok","version":"0.2.0","skills_loaded":1}

Docker

docker build -t mcp-skill-registry .
docker run -p 7860:7860 -v "$(pwd)/data:/data" mcp-skill-registry

Live demo

A public instance runs at https://sarveshtalele-mcp-skills-registry.hf.space — try the dashboard, browse skills, or connect your MCP client directly.


🏗️ Built-in Skills

The registry ships with production-ready skill suites out of the box.

📐 SpecKit — Spec-Driven Development

Inspired by GitHub Spec Kit, these skills drive a project from idea to backlog — usable from any MCP client:

Skill Produces
speckit-constitution Project principles (constitution.md)
speckit-specify A structured spec (spec.md) from a feature description
speckit-plan A technical plan (plan.md) from a spec summary
speckit-tasks An ordered task backlog (tasks.md) from a plan

Flow: constitution → specify → plan → tasks, committing each artifact as you go.

🏭 Factory — Governed Engineering

A modernization suite that takes a legacy system from discovery to a governed release:

Skill Purpose
legacy-discovery Reverse-engineer a legacy app (scans a repo URL or local path) → spec + architecture + inventory
topology-planning Target architecture + phased migration plan + ADRs
task-decomposition Spec → dependency-ordered tasks.yaml backlog
ui-modernization Legacy UI → React component plan + starter stubs
test-generation Unit/integration/e2e test strategy + stubs
spec-governance Compliance audit with a pass/fail gate and score

Flow: legacy-discovery → topology-planning → task-decomposition → ui-modernization → test-generation → spec-governance

🔍 Change Impact Analysis

A graph-driven change impact analysis skill that builds dependency graphs, finds directly and transitively affected modules, validates API contracts for breaking changes, parses CODEOWNERS, and computes a 0–100 deployment risk score.

📊 Text Statistics

A simple, worked example skill — computes word count, character count, sentence count, and reading level for any text.


🔬 Real-World Example: Reverse-Engineering nopCommerce

The legacy-discovery skill can reverse-engineer entire codebases. Here's what it produces when pointed at the nopCommerce repository — a 3M+ download, enterprise-grade e-commerce platform:

📋 Click to expand: nopCommerce analysis output (generated by legacy-discovery)

The skill automatically produces:

  • System Design Document — full architectural analysis with layered architecture model
  • 150+ domain entity inventory — Products, Orders, Customers, Payments, Shipping, etc.
  • 50+ service module mappingICatalogService, IOrderService, IPaymentService, etc.
  • Plugin architecture breakdown — Payment, Shipping, Tax, Auth, Widget plugin taxonomies
  • Database schema analysis — entity relationships, migration history (1.90 → 5.00)
  • Security architecture — RBAC, AES encryption, GDPR compliance, OWASP headers
  • Event system documentation — pub/sub patterns, cache invalidation chains
  • 100-point quality score — codebase health metrics

All from a single command:

# Via MCP client
"Reverse engineer https://github.com/nopSolutions/nopCommerce"

# Via REST API
curl -X POST http://localhost:7860/api/v1/skills/legacy-discovery/execute \
  -H 'Content-Type: application/json' \
  -d '{"inputs": {"repo_url": "https://github.com/nopSolutions/nopCommerce"}}'

The returned analysis includes architectural diagrams, code patterns, entity relationships, and actionable modernization recommendations — no manual effort required.


🤖 Agents

Agents orchestrate skills through multi-step workflows. Load one in your MCP client to drive an end-to-end process:

Agent Orchestrates Purpose
arch-analyst legacy-discoverytopology-planning Reverse-engineer & define target architecture
migration-eng task-decompositionui-modernizationtest-generation Build the modernization solution
gatekeeper spec-governance Governance & compliance enforcement

GET /api/v1/agents lists them; upload your own via the dashboard or POST /api/v1/agents/upload.


🔌 External Integrations

Skills under skills/integrations/ call external systems (creds via Space env vars, never hard-coded; mutating skills require approval):

Skill Creates Required env vars
jira-ticket a Jira issue JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN
servicenow-ticket a ServiceNow incident SERVICENOW_INSTANCE, SERVICENOW_USER, SERVICENOW_PASSWORD

Add your own connector (Slack, GitHub issues, PagerDuty, …) the same way: a skill folder whose scripts/main.py reads credentials from the environment and calls the target API with the standard library. Missing credentials return a clear error.

🖥️ Dashboard UI

An Apple-inspired Next.js dashboard is the landing page (static export built into the image; served by FastAPI). It lets you:

  • Browse all skills and agents with search
  • Upload a skill, a speckit skill, or an agent — Validate format first, then Upload & Publish
  • Delete skills and agents directly from the UI

With SKILLREG_GITHUB_TOKEN set, publishing also commits to the repo's skills/ or agents/ folder, redeploying the Space.

Live: sarveshtalele-mcp-skills-registry.hf.space


🔗 Connect an MCP Client

The server speaks Streamable HTTP MCP transport at /mcp. Use your local URL (http://localhost:7860/mcp) or the hosted one (https://sarveshtalele-mcp-skills-registry.hf.space/mcp).

Claude Code

claude mcp add --transport http skill-registry \
  https://sarveshtalele-mcp-skills-registry.hf.space/mcp

Verify inside a session:

/mcp          # lists connected servers and their tools

Remove with claude mcp remove skill-registry.

Claude Desktop

  1. Open Settings → Developer → Edit Config (opens claude_desktop_config.json).

  2. Add the server:

    {
      "mcpServers": {
        "skill-registry": {
          "command": "npx",
          "args": [
            "-y", "mcp-remote",
            "https://sarveshtalele-mcp-skills-registry.hf.space/mcp"
          ]
        }
      }
    }
    

    Claude Desktop launches MCP servers as local processes, so it reaches a remote HTTP server through the mcp-remote bridge (npx fetches it automatically; requires Node.js). Alternatively, Settings → Connectors → Add custom connector accepts the /mcp URL directly on supported plans.

  3. Restart Claude Desktop. The skills appear as tools (look for the 🔌 icon).

VS Code (GitHub Copilot / Continue)

Create .vscode/mcp.json:

{
  "servers": {
    "skill-registry": {
      "type": "http",
      "url": "https://sarveshtalele-mcp-skills-registry.hf.space/mcp"
    }
  }
}

Any MCP client (raw protocol)

The endpoint is JSON-RPC 2.0 over HTTP POST.

# 1. initialize — returns an Mcp-Session-Id header
curl -i -X POST http://localhost:7860/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'

# 2. list tools
curl -X POST http://localhost:7860/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# 3. call a tool
curl -X POST http://localhost:7860/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call",
       "params":{"name":"text-statistics","arguments":{"text":"Hello world."}}}'
Method Behaviour
POST /mcp initialize, tools/list, tools/call, ping (single or batch)
GET /mcp 405 — no server-initiated stream (spec-permitted)
DELETE /mcp Terminate the session in the Mcp-Session-Id header

🧰 REST API

Every skill is reachable without MCP. Interactive API docs (/docs, /redoc, /openapi.json) are disabled by default for safety — enable with SKILLREG_ENABLE_DOCS=true in trusted environments.

Method & Path Description
GET / Service metadata + entry points
GET /health Liveness probe + skill count
GET /api/v1/skills List / search skills (q, category, limit, offset)
GET /api/v1/skills/{name} Full skill manifest
POST /api/v1/skills/{name}/execute Run a skill — body {"inputs": {...}}
POST /api/v1/skills/upload Install a skill from a ZIP (?overwrite=true)
POST /api/v1/skills/validate Validate a skill ZIP without installing
DELETE /api/v1/skills/{name} Delete a skill
GET /api/v1/agents List all agents
POST /api/v1/agents/upload Install an agent from a ZIP
DELETE /api/v1/agents/{name} Delete an agent
POST /api/v1/admin/reload Re-scan the skills and agents directories
# Example: run a skill
curl -X POST http://localhost:7860/api/v1/skills/text-statistics/execute \
  -H 'Content-Type: application/json' \
  -d '{"inputs": {"text": "The quick brown fox jumps over the lazy dog."}}'

⚙️ Architecture

The server is a small, layered FastAPI application. Each layer depends only on the layers beneath it, keeping it testable and easy to extend.

┌──────────────────────────────────────────────────────────────────────┐
│                     FastAPI application  (port 7860)                │
│                                                                     │
│   api/        Routers:  /  ·  /health  ·  /mcp  ·  /api/v1/skills  │  ← transport
│     │                                                               │
│   mcp/        Streamable HTTP transport · JSON-RPC 2.0 · sessions   │  ← MCP protocol
│     │                                                               │
│   services/   SkillRegistry (facade)                                │  ← application
│     │           ├─ loader      parse & validate SKILL.md            │     logic
│     │           ├─ validator   check inputs against the manifest    │
│     │           ├─ executor    run skill in a sandboxed subprocess  │
│     │           ├─ search      keyword / optional semantic ranking  │
│     │           ├─ installer   safe ZIP upload (zip-slip/bomb guard)│
│     │           ├─ publisher   auto-commit to GitHub on upload      │
│     │           └─ audit       append-only event log                │
│     │                                                               │
│   repositories/  execution history · audit trail                    │  ← persistence
│     │                                                               │
│   db/  models/  config/  container/  main                           │  ← storage, types,
│         SQLite + schema.sql · pydantic models · settings · wiring   │     wiring
└───────────────────────────────────┬──────────────────────────────────┘
                                    │ discovers & executes
                                    ▼
                       skills/   self-contained skill folders
                         └─ <name>/  SKILL.md · scripts/ · references/ · assets/

Request lifecycle (running a tool)

client → tools/call (MCP)  or  POST /api/v1/skills/{name}/execute (REST)
   │
   ├─ 1. look up the skill in the in-memory catalogue        (404 if unknown)
   ├─ 2. validate inputs against SKILL.md                    (types, required, enums)
   ├─ 3. spawn subprocess: python _runner.py <skill> run     (isolated, timed)
   │         inputs → JSON via stdin   ·   output → JSON via stdout
   ├─ 4. enforce timeout + output-size cap                   (kill child on overrun)
   ├─ 5. record execution + audit entry                      (SQLite)
   └─ 6. return { status, output | error, duration_ms }

Why subprocesses? Process-level isolation, a clean import namespace per call, and a reliable hard timeout — a misbehaving skill can never hang or crash the server.


🧩 Authoring a Skill

A skill is one self-contained folder:

skill-name/
├── SKILL.md          # Required: YAML frontmatter (manifest) + instructions
├── scripts/          # Optional: code — entrypoint exposes run(inputs) -> dict
├── references/       # Optional: supporting docs
├── assets/           # Optional: templates, resources, extra requirements.txt
└── ...               # Any additional files

1. Scaffold

python scripts/new_skill.py my-skill

2. Define SKILL.md

---
name: my-skill
version: 1.0.0
description: What it does and the phrases that should trigger it.
execution:
  type: python-script
  entrypoint: scripts/main.py:run
  timeout_seconds: 30
inputs:
  - name: text
    type: string
    required: true
    description: Text to process.
outputs:
  - name: result
    type: string
    description: Processed text.
---

# My Skill
Instructions for the agent.

3. Implement scripts/main.py

def run(inputs: dict) -> dict:
    return {"result": inputs["text"].upper()}

4. Register

# Option A: reload the running server
curl -X POST http://localhost:7860/api/v1/admin/reload

# Option B: upload a packaged skill (no restart needed)
zip -r my-skill.zip my-skill/
curl -X POST http://localhost:7860/api/v1/skills/upload -F '[email protected]'

📖 Full guide: docs/ADDING_A_SKILL.md


🌍 Deployment

Hugging Face Spaces (recommended)

The project is designed for Hugging Face Docker Spaces out of the box.

GitHub (source of truth)  ──push main──►  HF Space (Docker build)  ──►  live MCP server
        │                                         │
   CI: lint + test                        Dockerfile → uvicorn :7860
  1. Create a Docker Space on huggingface.co/new-space
  2. Add HF_TOKEN secret and HF_USERNAME/HF_SPACE variables to your GitHub repo
  3. Push to main — CI runs lint + tests, then auto-deploys to the Space

Docker (anywhere)

docker build -t mcp-skill-registry .
docker run -p 7860:7860 -v "$(pwd)/data:/data" mcp-skill-registry

Manual deploy

pip install huggingface_hub
huggingface-cli login
huggingface-cli upload <user>/mcp-skill-registry . . --repo-type space

📖 Full guide: docs/DEPLOYMENT.md


🔧 Configuration

All settings are environment variables with the SKILLREG_ prefix (see .env.example):

Variable Default Description
SKILLREG_HOST 0.0.0.0 Bind address
SKILLREG_PORT 7860 HTTP port
SKILLREG_LOG_LEVEL INFO Logging verbosity
SKILLREG_SKILLS_DIR skills Skill catalogue directory
SKILLREG_AGENTS_DIR agents Agent catalogue directory
SKILLREG_DB_PATH data/registry.db SQLite database path
SKILLREG_DEFAULT_TIMEOUT_SECONDS 30 Default execution timeout
SKILLREG_MAX_TIMEOUT_SECONDS 120 Upper bound on any timeout
SKILLREG_MAX_OUTPUT_BYTES 1000000 Max skill output size (1 MB)
SKILLREG_ENABLE_UPLOADS true Allow the upload endpoint
SKILLREG_MAX_UPLOAD_BYTES 5000000 Max upload archive size
SKILLREG_ENABLE_SEMANTIC_SEARCH false Vector search (needs the search extra)
SKILLREG_EMBEDDING_MODEL all-MiniLM-L6-v2 Sentence-transformer model for semantic search
SKILLREG_GITHUB_TOKEN (empty) GitHub PAT for auto-publish on upload
SKILLREG_GITHUB_REPO sarveshtalele/mcp-skills-registry Target repo for auto-publish
SKILLREG_ENABLE_UI true Serve the Next.js dashboard at /
SKILLREG_FRONTEND_DIR frontend/out Path to the Next.js static export

🧪 Development

make install   # editable install with dev extras
make test      # pytest (37+ tests)
make lint      # ruff + black --check
make format    # ruff --fix + black
make run       # local dev server

CI runs lint + tests on every push and PR across Python 3.10, 3.11, and 3.12.

Running tests

pytest -q                     # all tests
pytest tests/test_api.py      # specific test module
pytest -k "test_upload"       # by name pattern

Code quality

Tool Purpose Config
ruff Linting (E/W/F/I/UP/B/N/C4) pyproject.toml
black Formatting (line-length 100) pyproject.toml
mypy Type checking pyproject.toml
pytest Testing (async mode) pyproject.toml

📁 Project Structure

mcp-skills-registry/
├── src/skill_registry/         # the server (layered package)
│   ├── api/                    # HTTP routers (health, mcp, rest)
│   ├── mcp/                    # JSON-RPC 2.0 protocol handler
│   ├── services/               # business logic
│   │   ├── registry.py         # facade: coordinates all services
│   │   ├── loader.py           # SKILL.md parser & skill discovery
│   │   ├── validator.py        # input validation against manifests
│   │   ├── executor.py         # subprocess execution + timeout
│   │   ├── _runner.py          # child process skill runner
│   │   ├── search.py           # keyword & semantic search
│   │   ├── installer.py        # ZIP upload (zip-slip/bomb guards)
│   │   ├── github_publisher.py # auto-commit uploads to GitHub
│   │   ├── agent_loader.py     # AGENT.md parser & agent discovery
│   │   └── audit.py            # append-only audit trail
│   ├── repositories/           # execution history & audit persistence
│   ├── db/                     # SQLite wrapper + schema.sql
│   ├── models/                 # pydantic domain models
│   ├── config.py               # env-driven settings (SKILLREG_*)
│   ├── container.py            # composition root (build_container)
│   └── main.py                 # app factory + CLI entrypoint
│
├── skills/                     # self-contained skills (auto-discovered)
│   ├── _template/              # scaffold skeleton for new skills
│   ├── text-statistics/        # worked example
│   ├── change-impact-analysis/ # graph-driven deployment risk analysis
│   ├── speckit/                # spec-driven development suite
│   │   ├── constitution/
│   │   ├── specify/
│   │   ├── plan/
│   │   └── tasks/
│   └── factory/                # governed engineering suite
│       ├── legacy-discovery/
│       ├── topology-planning/
│       ├── task-decomposition/
│       ├── ui-modernization/
│       ├── test-generation/
│       └── spec-governance/
│
├── agents/                     # agent orchestration definitions
│   ├── arch-analyst/
│   ├── migration-eng/
│   └── gatekeeper/
│
├── frontend/                   # Next.js dashboard (static export)
│   ├── app/                    # Next.js app router pages
│   └── out/                    # built static files (served by FastAPI)
│
├── scripts/                    # utilities
│   ├── new_skill.py            # scaffold a new skill
│   └── hf_entrypoint.sh        # Hugging Face Spaces boot script
│
├── tests/                      # pytest suite
│   ├── test_api.py             # REST API tests
│   ├── test_mcp_transport.py   # MCP protocol tests
│   ├── test_loader.py          # skill loader tests
│   ├── test_validator.py       # input validation tests
│   ├── test_executor.py        # subprocess execution tests
│   ├── test_upload.py          # ZIP upload + install tests
│   ├── test_agents.py          # agent loading + API tests
│   └── test_github_publisher.py # GitHub auto-publish tests
│
├── docs/                       # extended documentation
│   ├── ARCHITECTURE.md         # layered design & execution model
│   ├── ADDING_A_SKILL.md       # full skill authoring guide
│   ├── DEPLOYMENT.md           # GitHub → HF Spaces pipeline
│   └── SKILL_AND_AGENT_REFERENCE.md  # file-by-file reference
│
├── .github/workflows/
│   ├── ci.yml                  # lint + test on Python 3.10–3.12
│   └── deploy-hf.yml          # auto-deploy to Hugging Face Spaces
│
├── Dockerfile                  # multi-stage: Node (frontend) + Python (server)
├── pyproject.toml              # project metadata, deps, tool config
├── requirements.txt            # HF Spaces runtime deps
├── Makefile                    # dev shortcuts (install, test, lint, run)
├── app.py                      # thin ASGI entrypoint shim
├── CONTRIBUTING.md             # contributor guide
└── LICENSE                     # MIT

🗺️ Roadmap

  • Authentication & API keys — per-skill access control
  • Skill versioning — run multiple versions side-by-side
  • Execution analytics dashboard — visualize usage, latency, and error rates
  • Webhook notifications — trigger on skill execution events
  • Plugin marketplace — community skill discovery and one-click install
  • Rate limiting — configurable per-skill and global throttling
  • Async / streaming execution — long-running skills with progress updates
  • Multi-language runtimes — support Node.js, Go, Rust skill scripts

🤝 Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

# Dev setup
python -m venv .venv && source .venv/bin/activate
make install

# Before opening a PR
make format         # ruff --fix + black
make lint           # ruff + black --check
make test           # pytest

Adding a skill

Submit a PR that adds a single skills/<name>/ folder with:

  • A valid SKILL.md with YAML frontmatter
  • An entrypoint exposing run(inputs) -> dict
  • At least one test

Conventions

  • Layered architecture: api → services → repositories → db → models — don't reach across layers
  • Type-hint public functions; keep modules small and single-purpose
  • Line length 100; formatting by black; linting by ruff

📖 Documentation

Document Description
ARCHITECTURE.md Layered design, execution model, data storage
ADDING_A_SKILL.md Complete skill authoring guide with examples
DEPLOYMENT.md GitHub → Hugging Face Spaces deployment pipeline
SKILL_AND_AGENT_REFERENCE.md File-by-file reference for skill and agent packages
CONTRIBUTING.md Contributor guidelines and conventions

📄 License

MIT — see LICENSE.


from github.com/sarveshtalele/mcp-skills-registry

Install Skill Registry in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install mcp-skill-registry

Installs into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.

First time? Get the CLI: curl -fsSL https://unyly.org/install | sh

Or configure manually

Run in your terminal:

claude mcp add mcp-skill-registry -- uvx --from git+https://github.com/sarveshtalele/mcp-skills-registry mcp-skill-registry

FAQ

Is Skill Registry MCP free?

Yes, Skill Registry MCP is free — one-click install via Unyly at no cost.

Does Skill Registry need an API key?

No, Skill Registry runs without API keys or environment variables.

Is Skill Registry hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Skill Registry in Claude Desktop, Claude Code or Cursor?

Open Skill Registry on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Skill Registry with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs