Agent 技能库 / Agent 开发
mcp-server-scaffold
生成可运行的 MCP Server 骨架(tools/resources/prompts + 写操作确认),含客户端配置。
触发条件(frontmatter.description)
生成一个可运行的 MCP Server 项目骨架(FastMCP + tools/resources/prompts + 客户端配置)。当用户要"写一个 MCP server""把内部 API 接给 Claude""MCP 怎么开始"时使用。不用于 MCP 协议理论讲解。
目录结构
mcp-server-scaffold/ ├── SKILL.md └── templates/server.py
安装方式
- Claude Code把技能目录复制到以下位置,重启会话后自动可用
~/.claude/skills/<技能名>/项目级可放 <项目>/.claude/skills/ - Claude.ai / Desktop下载 .zip 后在 设置 → Capabilities → Skills 上传需要开启 Skills 功能
- Hermes Agent放到技能目录,Hermes 启动时自动加载
~/.hermes/skills/<技能名>/ - 其它 Agent任何支持 SKILL.md 约定(YAML frontmatter + 步骤 + 脚本)的框架都可直接使用本质是一个带说明文档的脚本目录
下载的 zip 解压后是 mcp-server-scaffold/ 目录,直接整个放进去即可,不用改文件名。
技能包内容
--- name: mcp-server-scaffold description: 生成一个可运行的 MCP Server 项目骨架(FastMCP + tools/resources/prompts + 客户端配置)。当用户要"写一个 MCP server""把内部 API 接给 Claude""MCP 怎么开始"时使用。不用于 MCP 协议理论讲解。 --- # MCP Server 脚手架 ## 什么时候用 - 用户要把某个系统/API 暴露给支持 MCP 的客户端 - 需要一个能跑起来的最小骨架 - 不确定 tools / resources / prompts 怎么划分 **不要用**:只问协议概念时(直接回答,不必生成项目)。 ## 步骤 1. **确认三件事**:要暴露什么能力、目标客户端、鉴权方式 2. **先做能力划分**(这一步决定成败): - 有副作用 / 需参数化执行 → tool - 可按 URI 读取的数据 → resource - 给用户点一下就执行的模板 → prompt 3. **用 `templates/server.py` 起骨架**,替换成真实逻辑 4. **补齐三件工程细节**:返回体截断上限、错误码可区分、写操作二次确认 5. **给出客户端配置片段**(stdio 或 http) ## 输出 ``` project/ ├── server.py ├── requirements.txt # mcp └── README.md # 客户端配置 + 启动方式 ``` ## 验证 - `python server.py` 能启动不报错 - 每个 tool 的 docstring 写清「做什么 / 何时用 / 何时不用 / 返回什么」 - 列表类返回有 `limit` 参数且默认 ≤50 ## 陷阱 - 把「读数据」做成 tool(应该是 resource) - 返回体不截断,一次吐几十万字符撑爆上下文 - 写操作不做确认,Agent 一条指令就改数据 - 凭证写死在 server.py 里(应用环境变量)
SKILL.md 说明(Agent 读到后照此执行)
# MCP Server 脚手架 ## 什么时候用 - 用户要把某个系统/API 暴露给支持 MCP 的客户端 - 需要一个能跑起来的最小骨架 - 不确定 tools / resources / prompts 怎么划分 **不要用**:只问协议概念时(直接回答,不必生成项目)。 ## 步骤 1. **确认三件事**:要暴露什么能力、目标客户端、鉴权方式 2. **先做能力划分**(这一步决定成败): - 有副作用 / 需参数化执行 → tool - 可按 URI 读取的数据 → resource - 给用户点一下就执行的模板 → prompt 3. **用 `templates/server.py` 起骨架**,替换成真实逻辑 4. **补齐三件工程细节**:返回体截断上限、错误码可区分、写操作二次确认 5. **给出客户端配置片段**(stdio 或 http) ## 输出 ``` project/ ├── server.py ├── requirements.txt # mcp └── README.md # 客户端配置 + 启动方式 ``` ## 验证 - `python server.py` 能启动不报错 - 每个 tool 的 docstring 写清「做什么 / 何时用 / 何时不用 / 返回什么」 - 列表类返回有 `limit` 参数且默认 ≤50 ## 陷阱 - 把「读数据」做成 tool(应该是 resource) - 返回体不截断,一次吐几十万字符撑爆上下文 - 写操作不做确认,Agent 一条指令就改数据 - 凭证写死在 server.py 里(应用环境变量)