mcp-builder
SKILL.md
MCP 服务器开发指南
概述
MCP (Model Context Protocol) 服务器使 LLM 能通过精心设计的工具与外部服务交互。服务器质量取决于它能多好地帮助 LLM 完成真实世界的任务。
开发流程
阶段 1:调研与规划
1.1 理解现代 MCP 设计
API 覆盖 vs 工作流工具: 平衡全面的 API 端点覆盖与专业化工作流工具。不确定时优先选择全面覆盖。
工具命名与可发现性: 清晰、描述性的名称帮助 Agent 快速找到正确工具。使用一致前缀和动作导向命名:
github_create_issue
github_list_repos
slack_send_message
上下文管理: 设计工具返回聚焦、相关的数据。支持过滤/分页。
可操作的错误信息: 错误信息应引导 Agent 找到解决方案,提供具体建议和下一步操作。
1.2 学习 MCP 协议
关键概念:
- 传输机制: Streamable HTTP(远程)、stdio(本地)
- 工具定义: 输入 Schema、输出 Schema、描述
- 资源与提示: 静态数据暴露和提示模板
MCP 规范文档: https://modelcontextprotocol.io/sitemap.xml
1.3 选择技术栈
推荐: TypeScript(SDK 支持好、类型安全、AI 生成代码质量高)
| 语言 | 框架 | 适用场景 |
|---|---|---|
| TypeScript | MCP SDK | 远程服务器、复杂集成 |
| Python | FastMCP | 快速原型、数据处理 |
1.4 规划实现
- 审查目标服务 API 文档
- 识别关键端点、认证要求、数据模型
- 列出要实现的工具,从最常用操作开始
阶段 2:实现
2.1 项目结构
TypeScript:
my-mcp-server/
├── src/
│ ├── index.ts # 入口点
│ ├── tools/ # 工具实现
│ │ ├── create.ts
│ │ ├── read.ts
│ │ └── update.ts
│ ├── client.ts # API 客户端
│ └── utils.ts # 工具函数
├── package.json
├── tsconfig.json
└── README.md
Python:
my-mcp-server/
├── server.py # 入口点
├── tools/ # 工具实现
├── client.py # API 客户端
├── utils.py # 工具函数
├── pyproject.toml
└── README.md
2.2 核心基础设施
创建共享工具:
- API 客户端(含认证)
- 错误处理辅助函数
- 响应格式化(JSON/Markdown)
- 分页支持
2.3 实现工具
每个工具需要:
输入 Schema:
// TypeScript - 使用 Zod
const schema = z.object({
query: z.string().describe("搜索查询"),
limit: z.number().optional().default(10).describe("返回结果数量"),
});
# Python - 使用 Pydantic
class SearchInput(BaseModel):
query: str = Field(description="搜索查询")
limit: int = Field(default=10, description="返回结果数量")
工具描述:
- 简洁的功能摘要
- 参数描述
- 返回类型说明
实现要点:
- Async/await 处理 I/O
- 正确的错误处理和可操作错误信息
- 支持分页
- 返回文本内容和结构化数据
注解:
annotations: {
readOnlyHint: true, // 只读操作
destructiveHint: false, // 非破坏性
idempotentHint: true, // 幂等
openWorldHint: false, // 封闭世界
}
阶段 3:审查与测试
3.1 代码质量
- 无重复代码(DRY 原则)
- 一致的错误处理
- 完整的类型覆盖
- 清晰的工具描述
3.2 构建与测试
TypeScript:
npm run build # 验证编译
npx @modelcontextprotocol/inspector # MCP Inspector 测试
Python:
python -m py_compile server.py # 验证语法
# MCP Inspector 测试
阶段 4:评估
创建 10 个评估问题验证 MCP 服务器效果:
每个问题要求:
- 独立: 不依赖其他问题
- 只读: 只需非破坏性操作
- 复杂: 需要多次工具调用
- 真实: 基于实际用例
- 可验证: 有明确可验证的答案
- 稳定: 答案不会随时间变化
输出格式:
<evaluation>
<qa_pair>
<question>具体问题</question>
<answer>明确答案</answer>
</qa_pair>
</evaluation>
最佳实践
工具设计
- 每个工具做一件事,做好
- 名称清晰描述功能
- 参数有完整的描述和示例
- 返回足够但不过多的数据
错误处理
- 提供可操作的错误信息
- 包含错误码和建议的下一步
- 区分客户端错误和服务端错误
安全
- 不在代码中硬编码凭据
- 使用环境变量或配置文件
- 最小权限原则
- 验证所有输入
文档
- README 包含快速开始指南
- 每个工具有使用示例
- 记录认证要求和配置步骤
Weekly Installs
1
Repository
senweaver/senweaver-ideGitHub Stars
15
First Seen
13 days ago
Security Audits
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1