Skills Manager MCP Server
A visual web interface and MCP server for managing Claude MCP Skills, enabling users to create, edit, browse, and load skill sets through a browser UI or directly from Claude Desktop.
README
Skills Manager
A visual web interface for managing Claude MCP Skills with Claude Code CLI integration.
Project Overview
This project provides a browser-based UI for managing skills in an MCP (Model Context Protocol) server. Skills are markdown-based instruction sets that Claude can load on-demand to gain specialized knowledge.
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ Skills Manager │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ ┌──────────────────────────┐ │
│ │ Claude Desktop │ │ Browser UI │ │
│ │ (MCP Client) │ │ skills-manager.html │ │
│ └────────┬─────────┘ └────────────┬─────────────┘ │
│ │ │ │
│ │ stdio/MCP │ HTTP REST │
│ │ │ │
│ ┌────────▼─────────┐ ┌────────────▼─────────────┐ │
│ │ server.py │ │ skills_manager_api.py │ │
│ │ (MCP Server) │ │ (Flask API :5050) │ │
│ └────────┬─────────┘ └────────────┬─────────────┘ │
│ │ │ │
│ └────────────┬───────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ skills/ │ │
│ │ (folder) │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
File Structure
skills-mcp/
├── server.py # MCP server (FastMCP) - connects to Claude Desktop
├── skills_manager_api.py # Flask HTTP API server (port 5050)
├── skills_manager_app.py # Standalone all-in-one app (for .exe build)
├── skills-manager.html # Web UI (single-file, Tailwind + Lucide)
├── requirements.txt # Python dependencies
├── build.bat # Windows build script for .exe
├── skills/ # Skills directory
│ ├── my-skill/
│ │ ├── SKILL.md # Main skill content
│ │ ├── _meta.json # Metadata (tags, description)
│ │ ├── scripts/ # Optional helper scripts
│ │ └── references/ # Optional reference docs
│ └── another-skill/
│ └── ...
└── dist/ # Built executable + assets
├── SkillsManager.exe
├── skills-manager.html
└── README.md
Setup
Prerequisites
- Python 3.10+
- Node.js (optional, for Claude Code CLI)
- Claude Code CLI (optional, for AI features)
Installation
cd skills-mcp
pip install -r requirements.txt
Running the API Server
python skills_manager_api.py
Opens at: http://localhost:5050
Running the MCP Server (for Claude Desktop)
The MCP server runs automatically when Claude Desktop starts (configured in claude_desktop_config.json).
Manual test:
python server.py
Daily Skills Catalogue Audit
The repo ships an automated review system that grades every skill daily and
surfaces improvement opportunities. See reports/ for the latest output.
What it does
- Pass 1 (deterministic, every run): structural defects — missing files,
description drift between
_meta.jsonand SKILL.md frontmatter, broken references, unknowndepends_ontargets, oversized SKILL.md files, thin asset-less skills, duplicate sub-skill triggers, stale reviews. - Pass 2 (one skill per run): content audit of the skill whose
last_reviewed_atis oldest. Runs a deterministic rubric (description distinctness vs. tag-cluster siblings, library version mentions, asset richness, cross-references), proposes arelevance_tier(A/B/C/D), and optionally calls the Claude CLI for an LLM-assisted rubric. - Pass 3 (weekly): catalogue-level review — sibling description overlap, router necessity, tag-cluster drift vs. last week's snapshot, source distribution.
Running locally
# Add the audit metadata fields once (idempotent):
python scripts/backfill_audit_meta.py
# Daily run (writes reports/YYYY-MM-DD.md):
python scripts/run_daily_audit.py
# With weekly Pass 3 + the LLM rubric:
python scripts/run_daily_audit.py --weekly --use-llm
The GitHub Actions workflow .github/workflows/skills-audit.yml runs the
daily audit at 06:30 UTC and commits the resulting report. The Monday run
also performs Pass 3.
Metadata fields added to _meta.json
| Field | Type | Meaning |
|---|---|---|
last_reviewed_at |
ISO date or null | When Pass 2 last audited this skill |
review_score |
int 0–100 or null | Composite of distinctness + asset richness + freshness + cross-references |
relevance_tier |
"A" / "B" / "C" / "D" / null | A = irreplaceable, B = trim & keep, C = redundant with base-model output, D = obsolete |
The Skills Manager UI shows these as a filter dropdown and a per-card badge.
Development
Key Files to Edit
| File | Purpose |
|---|---|
skills-manager.html |
Frontend UI (vanilla JS, Tailwind CSS, Lucide icons) |
skills_manager_api.py |
Backend REST API (Flask) |
server.py |
MCP server for Claude Desktop integration |
skills_manager_app.py |
Standalone app (combines API + launcher for .exe) |
API Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/skills |
List all skills |
| GET | /api/skills/<name> |
Get skill details |
| POST | /api/skills |
Create new skill |
| PUT | /api/skills/<name> |
Update skill |
| DELETE | /api/skills/<name> |
Delete skill |
| POST | /api/import/folder |
Import skill from folder path |
| POST | /api/import/json |
Import files via JSON |
| GET | /api/browse?path= |
Browse filesystem |
| GET | /api/claude/status |
Check Claude CLI availability |
| POST | /api/claude/run |
Run Claude with prompt |
| POST | /api/claude/generate-skill |
Generate skill with AI |
Frontend Structure
The UI is a single HTML file with embedded CSS and JavaScript:
- Modals: Import, Folder Browser, File Upload, Generate, View, Claude Console
- State:
skills[],selectedFolderPath,browsePathCache{}, etc. - Key Functions:
browsePath(path)- Navigate filesystemimportSelectedFolder()- Copy folder to skills/uploadFiles()- Upload files as new skillgenerateSkill()- AI skill generationrunConsoleCommand()- Execute Claude prompts
Building the Executable
# Windows
build.bat
# Or manually
pip install pyinstaller
python -m PyInstaller --onefile --name "SkillsManager" --console ^
--add-data "skills-manager.html;." skills_manager_app.py
Output: dist/SkillsManager.exe
Skill Format
SKILL.md Structure
---
name: skill-name
description: When Claude should use this skill
---
# Skill Name
## Overview
What this skill helps with.
## When to Use
- Trigger condition 1
- Trigger condition 2
## Quick Start
\`\`\`code
Example usage
\`\`\`
## Best Practices
- Practice 1
- Practice 2
## Examples
Practical examples here.
_meta.json Structure
{
"name": "skill-name",
"description": "One-line description",
"tags": ["tag1", "tag2"],
"sub_skills": [],
"source": "imported"
}
Claude Desktop Configuration
Location: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"skills": {
"command": "python",
"args": ["C:/Users/<YOUR_USERNAME>/skills-mcp/server.py"]
}
}
}
MCP Tools (for Claude)
The MCP server exposes these tools to Claude:
| Tool | Description |
|---|---|
list_skills() |
List all available skills |
get_skill(name) |
Load a skill's SKILL.md content |
search_skills(query) |
Search skills by metadata |
search_content(query) |
Full-text search across all skills |
get_skills_batch([...]) |
Load multiple skills at once |
reload_index() |
Refresh skill index |
validate_skills() |
Check skill integrity |
Known Issues / TODO
- [ ] Folder browser doesn't show drive letters on initial load (starts at root drives)
- [ ] No confirmation before overwriting existing skills
- [ ] File upload doesn't preserve folder structure from drag-drop
- [ ] Claude Console output doesn't syntax highlight
- [ ] No skill versioning or backup
Tech Stack
- Backend: Python 3.11, Flask, Flask-CORS, FastMCP
- Frontend: Vanilla JS, Tailwind CSS (CDN), Lucide Icons (CDN)
- Build: PyInstaller
- Protocol: MCP (Model Context Protocol)
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.