name: mcp-builder description: 创建高质量MCP(模型上下文协议)服务器的指南,使LLM能够通过设计良好的工具与外部服务交互。在构建MCP服务器以集成外部API或服务时使用,无论是在Python(FastMCP)还是Node/TypeScript(MCP SDK)中。 source: anthropics/skills license: Apache-2.0
MCP 服务器开发指南
创建MCP服务器,使LLM能够通过设计良好的工具与外部服务交互。
高级工作流程
第一阶段:研究与规划
理解现代MCP设计:
- 平衡全面的API覆盖与专业化的工作流程工具
- 使用清晰、描述性的工具名称,带有一致的前缀(例如,
github_create_issue) - 设计返回聚焦、相关数据的工具
- 提供可操作的错误消息
学习MCP协议:
- 从站点地图开始:
https://modelcontextprotocol.io/sitemap.xml - 关键页面:规范、传输机制、工具定义
第二阶段:实施
推荐技术栈:
- 语言:TypeScript(最佳SDK支持)
- 传输:用于远程的Streamable HTTP,用于本地的stdio
项目结构:
my-mcp-server/
├── src/
│ ├── index.ts # 服务器入口点
│ ├── tools/ # 工具实现
│ └── utils/ # 共享工具
├── package.json
└── tsconfig.json
工具实现模式:
server.registerTool({
name: "github_create_issue",
description: "创建新的GitHub问题",
inputSchema: z.object({
repo: z.string().describe("仓库名称(所有者/仓库)"),
title: z.string().describe("问题标题"),
body: z.string().optional().describe("问题正文")
}),
outputSchema: z.object({
id: z.number(),
url: z.string()
}),
annotations: {
readOnlyHint: false,
destructiveHint: false,
idempotentHint: false
},
handler: async (input) => {
// 实现
return { id: 123, url: "https://..." };
}
});
第三阶段:测试
# TypeScript
npm run build
npx @modelcontextprotocol/inspector
# Python
python -m py_compile your_server.py
第四阶段:创建评估
创建10个复杂、现实的问题来测试你的MCP服务器:
<evaluation>
<qa_pair>
<question>在仓库中查找所有标记为'bug'的开放问题</question>
<answer>5</answer>
</qa_pair>
</evaluation>
工具设计最佳实践
- 使用Zod(TS)或Pydantic(Python)进行模式定义
- 在字段描述中包含约束和示例
- 定义
outputSchema以获取结构化数据 - 在适用时支持分页
- 添加工具注释(只读、破坏性、幂等)