
MCP Skills Server
io.github.srprasannaPublished by GitHub account srprasannav1.0.0Updated Oct 24, 2026
MCP server that loads and serves skills from a mounted directory with hot reload.
Overview
A local MCP server that loads skill definitions from a mounted folder of SKILL.md files and exposes them to an assistant as searchable resources and tools.
- What you can do
- Search skills by query, category, tag or complexity, and list the valid skill folders found in the skills directory. Read the full catalog or an individual skill's markdown content as resources, and fetch a skill's metadata without loading its full text. Trigger a manual reload of all skills, with automatic hot-reload when SKILL.md files change.
- When to use it
- Useful when you keep a personal or team library of reusable skill instructions in Markdown and want an assistant to discover, search and read them on demand, including while you edit them.
- Requirements
- Runs locally as a Docker container or via Python 3.13 with Poetry. Needs a skills directory mounted or set through MCP_SKILLS_DIR; each skill must sit in its own folder with a SKILL.md file. Optional settings include MCP_SKILLS_HOT_RELOAD and MCP_SKILLS_LOG_LEVEL. No authentication is declared.
Installation
In SourceWeft
- Open MCP Skills Server in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
MCP Skills Server
[Python 3.13+] [Poetry] [License: MIT] [MCP Registry] [Docker] [Docker Pulls]
A production-ready Model Context Protocol (MCP) server that dynamically loads and exposes skills from a mounted volume with hot-reloading support.
📦 Available on MCP Registry - Install with one command!
Features
- Dynamic Skill Loading: Automatically discovers and loads skills from a directory
- Hot-Reloading: Detects changes to SKILL.md files and reloads without restart
- Folder Structure Validation: Enforces best practices with clear error messages
- MCP Protocol Compliant: Full implementation of resources and tools
- Production Ready: Comprehensive error handling, logging, and validation
- Docker Support: Run in containers with volume mounting
- Type Safe: Full type hints using Python 3.13 features
- Well Tested: >80% code coverage with comprehensive test suite
Table of Contents
- Skills Directory Structure
- Quick Start
- Installation
- Usage
- Configuration
- Skill File Format
- MCP Resources and Tools
- Development
- Troubleshooting
- Contributing
- License
Skills Directory Structure
CRITICAL REQUIREMENT: Each skill MUST be in its own dedicated folder within the skills directory. The server will ONLY recognize skills that follow this structure.
✅ Valid Structure
❌ Invalid Structures (Will Be Ignored)
Folder Naming Conventions
Valid folder names:
- Lowercase with hyphens:
my-skill-name - Lowercase with underscores:
excel_advanced - Alphanumeric:
skill-name-v2
Invalid (will be skipped):
- Hidden folders starting with
. - Private folders starting with
_ - System folders:
__pycache__,node_modules,.git, etc.
Quick Start
Using Docker (Recommended)
- Create your skills directory:
- Create a skill file:
- Run the server:
Using Poetry (Development)
- Clone and install:
- Create your skills directory:
- Run the server:
Installation
Prerequisites
- Python 3.13+ (for development)
- Poetry 1.7+ (for dependency management)
- Docker (optional, for containerized deployment)
Install with Poetry
Build Docker Image
Usage
Running Locally
Running with Docker
Running with Docker Compose
Integrating with Claude Desktop
Add to your Claude Desktop configuration (claude_desktop_config.json):
Or using Poetry:
Important: Make sure your ${HOME}/claude-skills directory contains skill folders, not loose SKILL.md files!
Configuration
Configuration is done via environment variables with the prefix MCP_SKILLS_:
Example .env File
Skill File Format
Skills are defined in SKILL.md files with YAML frontmatter:
Minimal Example
Complete Example
Available Metadata Fields
Required:
name: Unique identifier (kebab-case recommended)description: Brief description
Optional:
version: Semantic versionauthor: Creator namecreated,updated: ISO dates (YYYY-MM-DD)dependencies: Python packages or system toolscategory: Main category for groupingtags: Array of tags for searchcomplexity: beginner, intermediate, or advancedwhen_to_use: Array of usage scenariosrelated_skills: Names of related skillshas_examples: Boolean flagexample_files: Paths to example files (relative to skill folder)
MCP Resources and Tools
Resources
The server exposes these MCP resources:
skill://catalog- JSON catalog of all skills with metadataskill://{name}- Individual skill markdown content
Tools
Four tools are available for interacting with skills:
1. search_skills
Search for skills by query, category, tag, or complexity.
2. reload_skills
Manually trigger a reload of all skills from the directory.
3. get_skill_info
Get metadata for a specific skill without loading full content.
4. list_skill_folders
List all valid skill folders found in the skills directory.
Development
Setup Development Environment
Running Tests
Code Quality
Development Workflow
-
Create a branch:
-
Make changes and test:
-
Format and lint:
-
Commit and push:
Project Structure
Troubleshooting
Common Issues
Skills Not Loading
Problem: No skills are loaded when the server starts.
Solution:
- Check that your skills are in dedicated folders:
- Verify folder names don't start with
.or_ - Check logs for detailed error messages
Hot-Reload Not Working
Problem: Changes to SKILL.md files aren't detected.
Solution:
- Ensure
MCP_SKILLS_HOT_RELOAD=true - Check file is named exactly
SKILL.md - Verify file is in a valid skill folder
- Look for file watcher errors in logs
Parsing Errors
Problem: SKILL.md files fail to parse.
Solution:
- Validate YAML frontmatter syntax
- Ensure frontmatter is between
---delimiters - Check required fields (
name,description) are present - Use a YAML validator to check syntax
Validation Command
Check your skills directory structure:
Expected output:
Logging
Enable debug logging for detailed information:
Logs include:
- Folder structure validation messages
- Scan progress and results
- Parse successes and failures
- Hot-reload events
- Detailed error context
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Quick Contributing Guide
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Ensure all tests pass and code is formatted
- Submit a pull request
Code Standards
- Python 3.13+ with type hints
- Black for formatting (88 char line length)
- Ruff for linting
- Mypy for type checking (strict mode)
- Pytest for testing (>80% coverage)
Releases
This project uses automated releases via GitHub Actions.
Creating a Release
- Go to Actions → Release workflow
- Click Run workflow
- Choose version bump type:
patch- Bug fixes (0.1.0 → 0.1.1)minor- New features (0.1.0 → 0.2.0)major- Breaking changes (0.1.0 → 1.0.0)- Or specify exact version (e.g.,
1.2.3)
- Select Docker registry (
docker.ioorghcr.io) - Click Run workflow
The workflow will:
- ✅ Bump version in
pyproject.toml - ✅ Create Git tag and GitHub release
- ✅ Build and push Docker image
- ✅ Run tests to verify release
Docker Images:
- Docker Hub:
{username}/mcp-skill-hub:{version} - GitHub:
ghcr.io/{owner}/mcp-skill-hub:{version}
See RELEASING.md for detailed release documentation.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Built with MCP Python SDK
- Inspired by the need for dynamic skill management in Claude
- Thanks to all contributors!
Note: This server makes it impossible to misunderstand the folder structure requirement through:
- Clear error messages with folder context
- Comprehensive logging
- Validation at multiple levels
- Detailed documentation
- Working examples
Each skill MUST be in its own folder. This design decision ensures clean organization, easy management, and unambiguous structure. 🎯
Source: README.md at commit 09b22be
Tools
0Version history
1- v1.0.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts