Mcp Skill Server

io.github.jcc-ne由 GitHub 账号 jcc-ne 发布v0.1.2更新于 Oct 24, 2026

An MCP server that mounts your skill directory and add deterministic entry for deployment

已验证STDIO仅桌面开发者工具AI 与机器学习

概览

AI 生成的概览

挂载本地技能目录,让助手通过固定的入口命令列出、查看并运行你的 Python 技能。

可以做什么
  • 列出与查看技能:枚举挂载目录中的技能,并显示每个技能的命令和参数,参数从 --help 输出中解析得到。
  • 运行技能:按 SKILL.md 中声明的入口命令,带参数执行技能。
  • 刷新技能:编辑或新增技能后重新加载列表,无需重启即可生效。
  • 脚手架与校验:命令行工具可创建新技能目录,并检查 frontmatter、入口命令、脚本文件和帮助输出是否满足部署要求。
适用场景
适合在 Claude Code、Cursor 或 Claude Desktop 中本地开发智能体技能,边写边在真实工作中使用,随后以固定入口把同一技能部署到生产环境。也适合希望按需发现技能、而不是一次性加载全部技能的场景。
运行要求
作为本地进程运行,从 PyPI 安装并用 uvx 或 uv 启动,需传入技能目录路径。技能为使用 argparse 的 Python 脚本,并带有包含 name、description 和 entry 字段的 SKILL.md。仅限桌面编辑器;未声明账号或 API 密钥。
安装前请注意
服务器会在你的机器上执行技能脚本,因此只挂载可信的技能目录;实际运行的是 SKILL.md 中声明的入口命令。技能可写出输出文件,若启用可选的 Google Cloud Storage 输出处理器,生成的文件会被上传到存储桶。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Mcp Skill Server,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Most coding assistants now support skills natively, so an MCP server just for skill discovery isn't necessary. Where this package adds value is making skills' execution deterministic and deployable — with a fixed entry point and controlled execution, skills developed in your editor can run in non-sandboxed production environments. It also supports incremental loading, so agents discover skills on demand instead of loading everything upfront.


MCP Skill Server

[CI] [PyPI] [Python] [License]

Build agent skills where you work. Write a Python script, add a SKILL.md, and your agent can use it immediately. Iterate in real-time as part of your daily workflow. When it's ready, deploy the same skill to production — no rewrite needed.

Why?

Most skill development looks like this: write code → deploy → test in a staging agent → realize it's wrong → redeploy → repeat. It's slow, and you never get to actually use the skill while building it.

MCP Skill Server flips this. It runs on your machine, inside your editor — Claude Code, Cursor, or Claude Desktop. You develop a skill and use it in your real work at the same time. That tight feedback loop (edit → save → use) means you discover what's missing naturally, not through artificial test scenarios. The premise is if the skill doesn't work well with Claude Code, it's unlikely to work with a less sophisticated agent.

How skills mature to survive in the outside world

Claude skills can already have companion scripts, but there's no formalized entry point — the agent decides how to invoke them. That works for local use, but it's not deployable: a production MCP server can't reliably call a skill if the execution path isn't fixed.

MCP Skill Server enforces a declared entry field in your SKILL.md frontmatter (e.g. entry: uv run python my_script.py). This gives you a single, fixed entry point that the server controls. Commands and parameters are discovered from the script's --help output — that's the source of truth, not the LLM's interpretation of your code.

1. Claude/coding agent skill                → SKILL.md + scripts, but no fixed entry — agent decides how to run them2. Local MCP skill (+ entry)   → Fixed entry point, schema from --help, usable daily via this server3. Production                  → Same skill, same entry — deployed to your enterprise MCP server

Sharpen locally, then harden for production

Every agent that connects to the MCP server gets the same interface — list_skills, get_skill, run_skill — so the skill's description, parameter names, and help text are identical regardless of which agent calls them. That said, different agents have different strengths — a skill that works locally still needs testing with your production agent.

  1. Use it yourself — build the skill, use it daily via Claude Code or Cursor. Fix descriptions and param names when the agent misuses the skill.
  2. Test with a weaker model — try a smaller model to surface interface ambiguity.
  3. Add a deterministic entry point — declare entry in SKILL.md for reliable, secure execution. Use skill init to scaffold it, skill validate to check readiness.
  4. Test with your production agent — verify end-to-end in your target environment, then deploy.

Install

Claude Desktop (one-click)

[Install with Claude Desktop]

After installing, edit the skills path in your Claude Desktop config to point to your skills directory.

Claude Code

bash
claude mcp add skills -- uvx mcp-skill-server serve /path/to/my/skills

Cursor

Add to .cursor/mcp.json in your project (or Settings → MCP → Add Server):

json
{  "mcpServers": {    "skills": {      "command": "uvx",      "args": ["mcp-skill-server", "serve", "/path/to/my/skills"]    }  }}

Manual install

bash
# From PyPI (recommended)uv pip install mcp-skill-server
# Or from sourcegit clone https://github.com/jcc-ne/mcp-skill-servercd mcp-skill-server && uv sync
# Run the serveruvx mcp-skill-server serve /path/to/my/skills

Then add to your editor's MCP config:

json
{  "mcpServers": {    "skills": {      "command": "uvx",      "args": ["mcp-skill-server", "serve", "/path/to/my/skills"]    }  }}

Creating a Skill

Option A: Use skill init (recommended)

bash
# Create a new skilluv run mcp-skill-server init ./my_skills/hello -n "hello" -d "A friendly greeting"
# Or use the standalone commanduv run mcp-skill-init ./my_skills/hello -n "hello" -d "A friendly greeting"
# Promote an existing prompt-only Claude skill to a runnable MCP skilluv run mcp-skill-init ./existing_claude_skill

Option B: Manual setup

1. Create a folder with your script
my_skills/└── hello/    ├── SKILL.md    └── hello.py
2. Add SKILL.md with frontmatter
yaml
---name: hellodescription: A friendly greeting skillentry: uv run python hello.py---
# Hello Skill
Greets the user by name.
3. Write your script with argparse
python
# hello.pyimport argparse
parser = argparse.ArgumentParser(description="Greeting skill")parser.add_argument("--name", default="World", help="Name to greet")args = parser.parse_args()
print(f"Hello, {args.name}!")

That's it. The server auto-discovers commands and parameters from your --help output — no config needed.

Validating for Deployment

When a skill is ready to graduate to production:

bash
uv run mcp-skill-server validate ./my_skills/hello# oruv run mcp-skill-validate ./my_skills/hello

Checks:

  • Required frontmatter fields (name, description, entry)
  • Entry command uses allowed runtime
  • Script file exists
  • Commands discoverable via --help

How It Works

MCP Tools

The server exposes four tools to your agent:

ToolDescription
list_skillsList all available skills
get_skillGet details about a skill (commands, parameters)
run_skillExecute a skill with parameters
refresh_skillsReload skills after you make changes

Schema Discovery

The server automatically discovers your skill's interface by parsing --help output:

python
# Subcommands become separate commandssubparsers = parser.add_subparsers(dest='command')analyze = subparsers.add_parser('analyze', help='Run analysis')
# Arguments become parameters with inferred typesanalyze.add_argument('--year', type=int, required=True)  # int, requiredanalyze.add_argument('--file', type=str)                  # string, optional

Output Files

Files saved to output/ are automatically detected. Alternatively, print OUTPUT_FILE:/path/to/file to stdout.

Plugins

Output Handlers

Process files generated by skills (upload, copy, transform, etc.):

python
from mcp_skill_server.plugins import OutputHandler, LocalOutputHandler
# Default: tracks local file pathshandler = LocalOutputHandler()
# Optional GCS handler (requires `uv sync --extra gcs`)from mcp_skill_server.plugins import GCSOutputHandlerhandler = GCSOutputHandler(    bucket_name="my-bucket",    folder_prefix="skills/outputs/",)

Response Formatters

Customize how execution results are formatted in MCP tool responses:

python
from mcp_skill_server.plugins import ResponseFormatter
class CustomFormatter(ResponseFormatter):    def format_execution_result(self, result, skill, command):        return f"Result: {result.stdout}"
# Use with create_server()from mcp_skill_server import create_serverserver = create_server(    "/path/to/skills",    response_formatter=CustomFormatter())

Development

bash
git clone https://github.com/jcc-ne/mcp-skill-servercd mcp-skill-serveruv sync --devuv run pytestuv run mcp-skill-server serve examples/

Further Reading

  • Tool Design for LLMs — Why skills use a list/get/run pattern instead of exposing raw tools, and how it affects LLM accuracy

License

MIT

来源:README.md,提交 b9b34f8

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.2最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分