mcpField
M
MCP Skills Server

MCP Skills Server

本地服务
srprasanna.github.ioAI 与智能体1352 周前更新

关于 MCP Skills Server

MCP Skills Server 从目录加载按文件夹组织的技能,面向需要通过 MCP 提供技能内容的 Agent。它支持文件变更后热重载,并提供搜索、目录和技能信息查询。

主要功能

  1. 01自动发现目录中的技能
  2. 02SKILL.md 变更后热重载
  3. 03验证技能文件夹结构
  4. 04按条件搜索技能
  5. 05提供技能目录与元数据

适用场景

  1. 01维护可动态更新的技能集合
  2. 02按类别或标签查找技能
  3. 03让 MCP 客户端读取技能内容

MCP 相关

作为 MCP 服务,它向客户端提供技能目录和单项技能资源,并提供搜索、重载、查询元数据及列出文件夹的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"srprasanna-mcp-skill-hub": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MCP_SKILLS_DIR",
"-e",
"MCP_SKILLS_HOT_RELOAD",
"-e",
"MCP_SKILLS_LOG_LEVEL",
"docker.io/srprasanna/mcp-skill-hub:1.0.0"
],
"env": {
"MCP_SKILLS_DIR": "<MCP_SKILLS_DIR>",
"MCP_SKILLS_HOT_RELOAD": "<MCP_SKILLS_HOT_RELOAD>",
"MCP_SKILLS_LOG_LEVEL": "<MCP_SKILLS_LOG_LEVEL>"
}
}
}
}
启动命令docker run -i --rm -e MCP_SKILLS_DIR -e MCP_SKILLS_HOT_RELOAD -e MCP_SKILLS_LOG_LEVEL docker.io/srprasanna/mcp-skill-hub:1.0.0
需要配置的环境变量
MCP_SKILLS_DIRRoot directory containing skill folders
MCP_SKILLS_HOT_RELOADEnable automatic reloading when SKILL.md files change
MCP_SKILLS_LOG_LEVELLogging verbosity: DEBUG, INFO, WARNING, ERROR, CRITICAL

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocidocker.io/srprasanna/mcp-skill-hub:1.0.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Skills Server

Python 3.13+ Poetry License: MIT MCP Registry Docker Docker Pulls

一款可用于生产环境的 Model Context Protocol (MCP) 服务,可从挂载卷动态加载并公开技能,并支持热重载。

📦 现已发布于 MCP Registry——只需一条命令即可安装!

功能

  • 动态加载技能:自动发现并从目录加载技能
  • 热重载:检测 SKILL.md 文件的更改,并在无需重启的情况下重新加载
  • 文件夹结构验证:强制遵循最佳实践,并提供清晰的错误消息
  • 符合 MCP 协议:完整实现资源和工具
  • 可用于生产环境:具备全面的错误处理、日志记录和验证
  • 支持 Docker:可通过挂载卷在容器中运行
  • 类型安全:使用 Python 3.13 特性提供完整类型提示
  • 测试完善:代码覆盖率超过 80%,并配有全面的测试套件

目录

技能目录结构

重要要求:每个技能都必须放在技能目录中专属的文件夹内。服务只会识别符合此结构的技能。

✅ 有效结构
your-skills-directory/
├── skill-one/
│   └── SKILL.md          ← Required
├── skill-two/
│   ├── SKILL.md          ← Required
│   └── examples/         ← Optional
│       └── example.py
└── skill-three/
    ├── SKILL.md
    ├── examples/
    │   └── demo.py
    └── templates/
        └── template.txt
❌ 无效结构(将被忽略)
your-skills-directory/
├── SKILL.md                  ❌ Not in a folder - WILL BE SKIPPED
├── random-file.txt           ❌ Not a skill folder
├── .hidden-folder/           ❌ Hidden folder - WILL BE SKIPPED
│   └── SKILL.md
└── __pycache__/              ❌ System folder - WILL BE SKIPPED
    └── SKILL.md
文件夹命名约定

有效的文件夹名称:

  • 小写字母并使用连字符:my-skill-name
  • 小写字母并使用下划线:excel_advanced
  • 字母数字组合:skill-name-v2

无效(将被跳过):

  • 以 . 开头的隐藏文件夹
  • 以 _ 开头的私有文件夹
  • 系统文件夹:__pycache__、node_modules、.git 等

快速开始

使用 Docker(推荐)
  1. 创建技能目录:
mkdir -p ~/claude-skills/my-first-skill
  1. 创建技能文件:
cat > ~/claude-skills/my-first-skill/SKILL.md << 'EOF'
---
name: "my-first-skill"
description: "My first Claude skill"
---

# My First Skill

This is my first skill for Claude!

## Usage

Simply describe what your skill does here.
EOF
  1. 运行服务:
docker run -i --rm \
  -v ~/claude-skills:/skills:ro \
  mcp-skill-hub
使用 Poetry(开发)
  1. 克隆并安装:
git clone https://github.com/srprasanna/mcp-skill-hub.git
cd mcp-skill-hub
poetry install
  1. 创建技能目录:
mkdir -p ~/claude-skills/my-first-skill
# Create SKILL.md as shown above
  1. 运行服务:
export MCP_SKILLS_DIR=~/claude-skills
poetry run mcp-skills

安装

前置条件
  • Python 3.13+(用于开发)
  • Poetry 1.7+(用于依赖管理)
  • Docker(可选,用于容器化部署)
使用 Poetry 安装
# Clone the repository
git clone https://github.com/srprasanna/mcp-skill-hub.git
cd mcp-skill-hub

# Install dependencies
poetry install

# Verify installation
poetry run mcp-skills --help
构建 Docker 镜像
# Build the image
docker build -t mcp-skill-hub .

# Or use docker-compose
docker-compose build

使用方法

在本地运行
# Set the skills directory
export MCP_SKILLS_DIR=/path/to/your/skills

# Run the server
poetry run mcp-skills
使用 Docker 运行
docker run -i --rm \
  -v /path/to/your/skills:/skills:ro \
  -e MCP_SKILLS_LOG_LEVEL=INFO \
  mcp-skill-hub
使用 Docker Compose 运行
# Edit docker-compose.yml to set your skills directory path
docker-compose up mcp-skills
与 Claude Desktop 集成

将以下内容添加到 Claude Desktop 配置(claude_desktop_config.json)中:

{
  "mcpServers": {
    "skills": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "${HOME}/claude-skills:/skills:ro",
        "mcp-skill-hub"
      ]
    }
  }
}

或者使用 Poetry:

{
  "mcpServers": {
    "skills": {
      "command": "poetry",
      "args": ["run", "mcp-skills"],
      "cwd": "/path/to/mcp-skill-hub",
      "env": {
        "MCP_SKILLS_DIR": "/path/to/your/skills"
      }
    }
  }
}

**重要提示:**请确保 ${HOME}/claude-skills 目录中包含技能文件夹,而不是散放的 SKILL.md 文件!

配置

通过前缀为 MCP_SKILLS_ 的环境变量进行配置:

变量默认值描述
MCP_SKILLS_DIR/skills包含技能文件夹的根目录
MCP_SKILLS_HOT_RELOADtrue启用自动重新加载
MCP_SKILLS_DEBOUNCE_DELAY0.5重新加载前的延迟时间(秒)
MCP_SKILLS_LOG_LEVELINFO日志级别(DEBUG、INFO、WARNING、ERROR)
MCP_SKILLS_SCAN_DEPTH1扫描深度(始终为 1)
.env 文件示例
MCP_SKILLS_DIR=/path/to/skills
MCP_SKILLS_HOT_RELOAD=true
MCP_SKILLS_DEBOUNCE_DELAY=0.5
MCP_SKILLS_LOG_LEVEL=INFO

技能文件格式

技能定义在带有 YAML frontmatter 的 SKILL.md 文件中:

最简示例
---
name: "my-skill"
description: "Brief description"
---

# My Skill

Your skill content here in Markdown.
完整示例
---
# Required fields
name: "excel-advanced"
description: "Advanced Excel automation techniques"

# Version and authorship
version: "1.2.0"
author: "Your Name"
created: "2025-01-15"
updated: "2025-10-23"

# Dependencies
dependencies:
  python: ["openpyxl>=3.0.0", "pandas>=2.0.0"]
  system: ["libreoffice"]

# Categorization
category: "office-automation"
tags: ["excel", "spreadsheet", "automation"]
complexity: "intermediate"  # beginner|intermediate|advanced

# Usage guidance
when_to_use:
  - "Automating Excel report generation"
  - "Processing multiple Excel files"
  - "Creating complex formulas programmatically"

# Relationships
related_skills: ["csv-processing", "data-analysis"]

# Examples
has_examples: true
example_files: ["examples/report_generator.py", "templates/report_template.xlsx"]
---

# Excel Advanced Automation

This skill covers advanced Excel automation techniques...

## Features

- Automated report generation
- Formula creation
- Bulk processing

## Examples

See `examples/report_generator.py` for a working example.
可用的元数据字段

必填:

  • name:唯一标识符(建议使用 kebab-case)
  • description:简短描述

可选:

  • version:语义化版本
  • author:创建者名称
  • created、updated:ISO 日期(YYYY-MM-DD)
  • dependencies:Python 包或系统工具
  • category:用于分组的主要类别
  • tags:用于搜索的标签数组
  • complexity:初级、中级或高级
  • when_to_use:使用场景数组
  • related_skills:相关技能的名称
  • has_examples:布尔标志
  • example_files:示例文件路径(相对于技能文件夹)

MCP 资源和工具

资源

此服务公开以下 MCP 资源:

  1. skill://catalog - 包含所有技能元数据的 JSON 目录
  2. skill://{name} - 单个技能的 Markdown 内容
工具

提供四个用于与技能交互的工具:

1. search_skills

按查询词、类别、标签或复杂度搜索技能。

{
  "query": "excel",
  "category": "office-automation",
  "tag": "automation",
  "complexity": "intermediate"
}
2. reload_skills

手动触发从目录重新加载所有技能。

{}
3. get_skill_info

获取特定技能的元数据,而不加载完整内容。

{
  "name": "excel-advanced"
}
4. list_skill_folders

列出在技能目录中找到的所有有效技能文件夹。

{}

开发

设置开发环境
# Clone repository
git clone https://github.com/srprasanna/mcp-skill-hub.git
cd mcp-skill-hub

# Install dependencies (including dev dependencies)
poetry install

# Activate virtual environment
poetry shell
运行测试
# Run all tests
poetry run pytest

# Run with coverage
poetry run pytest --cov=mcp_skills --cov-report=html

# Run specific test file
poetry run pytest tests/test_scanner.py

# Run with verbose output
poetry run pytest -v
代码质量
# Format code
poetry run black .

# Lint code
poetry run ruff check .

# Type checking
poetry run mypy src

# Run all quality checks
poetry run black . && poetry run ruff check . && poetry run mypy src
开发工作流
  1. 创建分支:

    git checkout -b feature/my-feature
    
  2. 进行更改并测试:

    poetry run pytest
    poetry run mypy src
    
  3. 格式化并检查代码:

    poetry run black .
    poetry run ruff check .
    
  4. 提交并推送:

    git commit -m "Add feature: description"
    git push origin feature/my-feature
    
项目结构
mcp-skill-hub/
├── src/mcp_skills/          # Source code
│   ├── models/              # Data models
│   ├── parsers/             # Skill parsers
│   ├── storage/             # Repository pattern
│   ├── scanner.py           # Directory scanning
│   ├── watcher.py           # Hot-reload watcher
│   ├── server.py            # MCP server
│   ├── config.py            # Configuration
│   └── __main__.py          # CLI entry point
├── tests/                   # Test suite
├── examples/                # Example skills
├── docs/                    # Documentation
└── pyproject.toml           # Poetry configuration

故障排除

常见问题
技能未加载

问题: 服务启动时没有加载任何技能。

解决方案:

  1. 检查技能是否位于专用文件夹中:
    /skills/my-skill/SKILL.md  ✓
    /skills/SKILL.md           ✗
    
  2. 确认文件夹名称不以 . 或 _ 开头
  3. 查看日志以获取详细错误信息
热重载不起作用

问题: 未检测到对 SKILL.md 文件的更改。

解决方案:

  1. 确保 MCP_SKILLS_HOT_RELOAD=true
  2. 检查文件名是否恰好为 SKILL.md
  3. 确认文件位于有效的技能文件夹中
  4. 查看日志中是否有文件监视器错误
解析错误

问题: SKILL.md 文件解析失败。

解决方案:

  1. 验证 YAML frontmatter 语法
  2. 确保 frontmatter 位于 --- 分隔符之间
  3. 检查是否包含必填字段(name、description)
  4. 使用 YAML 验证器检查语法
验证命令

检查技能目录结构:

poetry run mcp-skills --validate

预期输出:

✓ /skills/excel-advanced: Valid skill
✓ /skills/python-automation: Valid skill
✗ /skills/SKILL.md: Error - Skills must be in folders
✗ /skills/.hidden: Skipped - Hidden folder
⚠ /skills/empty-folder: Warning - No SKILL.md found

Summary: 2 valid, 1 error, 1 warning, 1 skipped
日志记录

启用调试日志以获取详细信息:

export MCP_SKILLS_LOG_LEVEL=DEBUG
poetry run mcp-skills

日志包括:

  • 文件夹结构验证消息
  • 扫描进度和结果
  • 解析成功与失败信息
  • 热重载事件
  • 详细错误上下文

贡献

欢迎贡献!请参阅 CONTRIBUTING.md 了解指南。

快速贡献指南
  1. Fork 此仓库
  2. 创建功能分支
  3. 编写更改并添加测试
  4. 确保所有测试通过且代码格式正确
  5. 提交拉取请求
代码规范
  • Python 3.13+,使用类型提示
  • 使用 Black 格式化(行长 88 个字符)
  • 使用 Ruff 检查代码
  • 使用 Mypy 进行类型检查(严格模式)
  • 使用 Pytest 进行测试(覆盖率 >80%)

发布

此项目通过 GitHub Actions 自动发布。

创建发布版本
  1. 前往 Actions → Release 工作流
  2. 点击 Run workflow
  3. 选择版本升级类型:
    • patch - Bug 修复(0.1.0 → 0.1.1)
    • minor - 新功能(0.1.0 → 0.2.0)
    • major - 不兼容变更(0.1.0 → 1.0.0)
    • 或指定确切版本(例如,1.2.3)
  4. 选择 Docker 镜像仓库(docker.io 或 ghcr.io)
  5. 点击 Run workflow

工作流将:

  • ✅ 更新 pyproject.toml 中的版本号
  • ✅ 创建 Git 标签和 GitHub 发布版本
  • ✅ 构建并推送 Docker 镜像
  • ✅ 运行测试以验证发布版本

Docker 镜像:

  • Docker Hub:{username}/mcp-skill-hub:{version}
  • GitHub:ghcr.io/{owner}/mcp-skill-hub:{version}

详细的发布文档请参阅 RELEASING.md。

许可证

此项目采用 MIT 许可证,详情请参阅 LICENSE 文件。

致谢

  • 基于 MCP Python SDK 构建
  • 灵感来自 Claude 对动态技能管理的需求
  • 感谢所有贡献者!

注意: 此服务通过以下方式确保文件夹结构要求不会产生误解:

  • 提供包含文件夹上下文的清晰错误消息
  • 完善的日志记录
  • 多层级验证
  • 详细文档
  • 可运行的示例

每项技能都必须放在自己的文件夹中。这一设计决策确保了组织清晰、管理便捷且结构明确。🎯

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。