--- name: mcp-builder version: 1.1.0 description: "构建 MCP Server,让 LLM 通过 Tool 与外部服务交互。当需要创建 MCP 工具或封装 API 为 MCP 时使用。推荐 TypeScript + MCP SDK。" --- # MCP Server 开发指南 ## 触发条件 用户需要构建自定义 MCP Server 以封装 API 或服务为 LLM 可调用的 Tool。 ## 执行流程 ### Phase 1:研究与规划 #### 1.1 理解目标 API - 梳理目标服务的 API 端点、认证方式、数据模型 - 使用 WebFetch 或 WebSearch 获取 API 文档 - 列出需要封装的端点,按优先级排序(最常用操作优先) #### 1.2 学习 MCP 协议 **加载 MCP 规范**: - 起始页:`https://modelcontextprotocol.io/sitemap.xml` - 获取特定页面时添加 `.md` 后缀获取 Markdown 格式 **加载 MCP SDK 文档**: - WebFetch: `https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md` - SDK 名称虽含 "typescript",但完全支持纯 TypeScript 项目 #### 1.3 设计 Tool | 设计原则 | 说明 | |---|---| | 命名清晰 | 使用 `prefix_action_target` 格式,如 `github_create_issue` | | 描述精准 | 简洁说明功能 + 参数含义 + 返回值结构 | | 错误可操作 | 错误信息应引导 LLM 找到解决方案 | | 结果聚焦 | 返回精准、相关的数据,支持分页/过滤 | | API 覆盖优先 | 不确定时优先提供全面的 API 覆盖,而非少量高层 Workflow Tool | --- ### Phase 2:实现 **推荐技术栈**: - **语言**:TypeScript(MCP SDK 原生支持,无需编译,直接运行) - **传输**:远程服务用 Streamable HTTP(无状态 JSON),本地用 stdio #### 2.1 项目结构 ``` mcp-server-{{name}}/ ├── src/ │ ├── index.ts # Server entry + tool registration │ ├── client.ts # API client with auth │ └── tools/ # One file per tool group │ ├── resources.ts │ └── actions.ts ├── package.json └── README.md ``` #### 2.2 基础设施 实现共享工具: - API Client(认证、请求头、Base URL) - 错误处理 Helper(统一格式,包含 actionable 信息) - 响应格式化(JSON 结构化 + 文本摘要) - 分页支持 #### 2.3 Tool 实现 每个 Tool 需要: **输入 Schema**(Zod): - Zod 在纯 TypeScript 中同样可用,提供运行时参数校验 - 包含约束和清晰的字段描述 - 在 description 中添加示例值 **输出 Schema**(推荐定义): - 使用 `outputSchema` + `structuredContent` 返回结构化数据 **Tool 注解**: - `readOnlyHint`: 是否只读 - `destructiveHint`: 是否有破坏性 - `idempotentHint`: 是否幂等 --- ### Phase 3:审查与测试 #### 3.1 代码质量检查 - 无重复代码(DRY) - 一致的错误处理 - 关键函数和参数有 JSDoc 注释 - 清晰的 Tool 描述 #### 3.2 测试 ```bash # 直接运行验证语法 node src/index.ts # 使用 MCP Inspector 交互式测试 npx @modelcontextprotocol/inspector ``` --- ### Phase 4:集成到项目 将构建好的 MCP Server 注册到 `.cursor/mcp.json`: ```json { "mcpServers": { "{{name}}": { "command": "node", "args": ["path/to/mcp-server-{{name}}/src/index.ts"], "env": { "API_KEY": "{{env_var}}" } } } } ``` ## 验证 1. [ ] `node src/index.ts` 启动无错误 2. [ ] MCP Inspector 可以列出所有 Tool 3. [ ] 每个 Tool 的输入 Schema 有 Zod 校验 4. [ ] 每个 Tool 的 description 清晰、包含参数说明 5. [ ] 错误信息包含具体的修复建议(actionable) 6. [ ] 需要分页的 Tool 支持 `cursor`/`limit` 参数 7. [ ] 环境变量用于凭证/密钥,不硬编码 8. [ ] `.cursor/mcp.json` 注册正确 ## Tier 3 参考资料(按需读取) - `references/mcp_best_practices.md` — MCP 最佳实践指南 - `references/node_mcp_server.md` — TypeScript/Node.js 实现详细指南