# MCP Builder

> 用于创建高质量 MCP（模型上下文协议）服务器或工具（Tools）的指南，使大语言模型能够通过精心设计的工具与外部服务进行交互。在构建 MCP 服务器以集成外部 API 或服务时使用，支持 Python（FastMCP）或 Node/TypeScript（MCP SDK）。

- Skill: `lionad-morotar/mcp-builder` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add lionad-morotar/mcp-builder`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lionad-morotar/mcp-builder/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: 完整条款见 LICENSE.txt
- Author: lionad-morotar (https://skillmd.com/u/lionad-morotar)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lionad-morotar/mcp-builder

---


# MCP 服务器开发指南

## 概述

创建 MCP（模型上下文协议）服务器，使大语言模型能够通过精心设计的工具与外部服务进行交互。MCP 服务器的质量取决于它如何有效地帮助大语言模型完成实际任务。

---

# 流程

## 🚀 高级工作流

创建高质量的 MCP 服务器涉及四个主要阶段：

### 阶段 1：深入研究与规划

#### 1.1 了解现代 MCP 设计

**API 覆盖 vs. 工作流工具：**
平衡全面的 API 端点覆盖与专门的工作流工具。工作流工具对于特定任务可能更方便，而全面覆盖则赋予智能体灵活组合操作的能力。性能因客户端而异——某些客户端受益于结合基本工具的代码执行，而其他客户端则更适合高级工作流。当不确定时，优先考虑全面的 API 覆盖。

**工具命名与可发现性：**
清晰、描述性的工具名称帮助智能体快速找到合适的工具。使用一致的前缀（例如 `github_create_issue`、`github_list_repos`）和面向动作的命名方式。

**上下文管理：**
智能体受益于简洁的工具描述以及过滤/分页结果的能力。设计返回聚焦、相关数据的工具。某些客户端支持代码执行，可以帮助智能体高效地过滤和处理数据。

**可操作的错误消息：**
错误消息应该通过具体的建议和后续步骤引导智能体找到解决方案。

#### 1.2 学习 MCP 协议文档

**浏览 MCP 规范：**

从站点地图开始找到相关页面：`https://modelcontextprotocol.io/sitemap.xml`

然后使用 `.md` 后缀获取特定页面的 Markdown 格式（例如 `https://modelcontextprotocol.io/specification/draft.md`）。

需要查看的关键页面：
- 规范概述和架构
- 传输机制（可流式 HTTP、标准输入输出）
- 工具、资源和提示词定义

#### 1.3 学习框架文档

**推荐技术栈：**
- **语言**：TypeScript（高质量的 SDK 支持，在许多执行环境中具有良好的兼容性，例如 MCPB。此外，AI 模型擅长生成 TypeScript 代码，受益于其广泛使用、静态类型和良好的代码检查工具）
- **传输层**：远程服务器使用可流式 HTTP，使用无状态 JSON（更易于扩展和维护，与有状态会话和流式响应相比）。本地服务器使用标准输入输出。

**加载框架文档：**

- **MCP 最佳实践**：[📋 查看最佳实践](./reference/mcp_best_practices.md) - 核心指南

**TypeScript（推荐）：**
- **TypeScript SDK**：使用 WebFetch 加载 `https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md`
- [⚡ TypeScript 指南](./reference/node_mcp_server.md) - TypeScript 模式和示例

**Python：**
- **Python SDK**：使用 WebFetch 加载 `https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md`
- [🐍 Python 指南](./reference/python_mcp_server.md) - Python 模式和示例

#### 1.4 规划你的实现

**了解 API：**
查看服务的 API 文档，识别关键端点、认证要求和数据模型。根据需要，使用网络搜索和 WebFetch。

**工具选择：**
优先考虑全面的 API 覆盖。列出要实现的端点，从最常见的操作开始。

---

### 阶段 2：实现

#### 2.1 设置项目结构

查看语言特定的指南以进行项目设置：
- [⚡ TypeScript 指南](./reference/node_mcp_server.md) - 项目结构、package.json、tsconfig.json
- [🐍 Python 指南](./reference/python_mcp_server.md) - 模块组织、依赖项

#### 2.2 实现核心基础设施

创建共享工具：
- 带认证的 API 客户端
- 错误处理辅助函数
- 响应格式化（JSON/Markdown）
- 分页支持

#### 2.3 实现工具


总的来说，对于每个工具：

**输入模式：**
- 使用 Zod（TypeScript）或 Pydantic（Python）
- 包含约束和清晰的描述
- 在字段描述中添加示例

**输出模式：**
- 尽可能定义 `outputSchema` 以获取结构化数据
- 在工具响应中使用 `structuredContent`（TypeScript SDK 特性）
- 帮助客户端理解和处理工具输出

**工具描述：**
- 功能的简洁摘要
- 参数描述
- 返回类型模式

**实现：**
- 对 I/O 操作使用异步/等待
- 使用可操作的错误消息进行适当的错误处理
- 在适用情况下支持分页
- 使用现代 SDK 时同时返回文本内容和结构化数据

**注解：**
- `readOnlyHint`：true/false
- `destructiveHint`：true/false
- `idempotentHint`：true/false
- `openWorldHint`：true/false

对于拥有2个或多个工具的复杂任务开发，use patterns from [tools patterns](./reference/tools_patterns.md)，尤其是当工具涉及以下讨论时：

| 分类 | 核心问题 |
|------|----------|
| Tool Types | Query、Command 还是 Discovery？ |
| Tool Interface | Agent 如何理解和调用？ |
| Tool Discovery | Agent 如何找到合适的 Tool？ |
| Tool Composition | 是否应该捆绑多个操作？ |
| Tool Execution | 同步、异步还是事务性？ |
| Tool Response | 结果应该是什么样？ |
| Tool Context | 身份和状态如何管理？ |
| Tool Resilience | 如何从失败中恢复？ |
| Tool Security | 如何控制访问？ |
| Integration | 如何连接外部系统？ |

---

### 阶段 3：审查和测试

#### 3.1 代码质量

审查：
- 无重复代码（DRY 原则）
- 一致的错误处理
- 完整的类型覆盖
- 清晰的工具描述

#### 3.2 构建和测试

**TypeScript：**
- 运行 `npm run build` 验证编译
- 使用 MCP Inspector 测试：`npx @modelcontextprotocol/inspector`

**Python：**
- 验证语法：`python -m py_compile your_server.py`
- 使用 MCP Inspector 测试

查看语言特定指南以获取详细的测试方法和质量检查清单。

---

### 阶段 4：创建评估

实现 MCP 服务器后，创建全面的评估以测试其有效性。

**加载 [✅ 评估指南](./reference/evaluation.md) 以获取完整的评估指南。**

#### 4.1 理解评估目的

使用评估来测试大语言模型是否能够有效地使用你的 MCP 服务器来回答现实的复杂问题。

#### 4.2 创建 10 个评估问题

要创建有效的评估，请遵循评估指南中概述的流程：

1. **工具检查**：列出可用工具并了解其功能
2. **内容探索**：使用只读操作探索可用数据
3. **问题生成**：创建 10 个复杂的现实问题
4. **答案验证**：自己解决每个问题以验证答案

#### 4.3 评估要求

确保每个问题：
- **独立**：不依赖于其他问题
- **只读**：仅需要非破坏性操作
- **复杂**：需要多个工具调用和深入探索
- **现实**：基于人类关心的真实用例
- **可验证**：可以通过字符串比较验证的单一明确答案
- **稳定**：答案不会随时间变化

#### 4.4 输出格式

创建具有以下结构的 XML 文件：

```xml
<evaluation>
  <qa_pair>
    <question>查找关于以动物代号命名的 AI 模型发布的讨论。一个模型需要特定的安全标识，格式为 ASL-X。对于以斑点野猫命名的模型，正在确定什么数字 X？</question>
    <answer>3</answer>
  </qa_pair>
<!-- 更多 qa_pairs... -->
</evaluation>
```

---

# 参考文件

## 📚 文档库

在开发过程中根据需要加载这些资源：

### 核心 MCP 文档（首先加载）
- **MCP 协议**：从站点地图 `https://modelcontextprotocol.io/sitemap.xml` 开始，然后使用 `.md` 后缀获取特定页面
- [📋 MCP 最佳实践](./reference/mcp_best_practices.md) - 通用 MCP 指南，包括：
  - 服务器和工具命名约定
  - 响应格式指南（JSON 与 Markdown）
  - 分页最佳实践
  - 传输层选择（可流式 HTTP 与标准输入输出）
  - 安全和错误处理标准

### SDK 文档（在阶段 1/2 加载）
- **Python SDK**：从 `https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md` 获取
- **TypeScript SDK**：从 `https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md` 获取

### 语言特定实现指南（在阶段 2 加载）
- [🐍 Python 实现指南](./reference/python_mcp_server.md) - 完整的 Python/FastMCP 指南，包括：
  - 服务器初始化模式
  - Pydantic 模型示例
  - 使用 `@mcp.tool` 注册工具
  - 完整的工作示例
  - 质量检查清单

- [⚡ TypeScript 实现指南](./reference/node_mcp_server.md) - 完整的 TypeScript 指南，包括：
  - 项目结构
  - Zod 模式模式
  - 使用 `server.registerTool` 注册工具
  - 完整的工作示例
  - 质量检查清单

### 评估指南（在阶段 4 加载）
- [✅ 评估指南](./reference/evaluation.md) - 完整的评估创建指南，包括：
  - 问题创建指南
  - 答案验证策略
  - XML 格式规范
  - 示例问题和答案
  - 使用提供的脚本运行评估

