mcpField
M
mcp-builder

mcp-builder

github.com/snyk开发3.2k84 次安装3 天前更新
代码仓库

关于 mcp-builder

mcp-builder 是一份开发 MCP 服务的指南,面向构建服务器的开发者。它按研究规划、实现、测试和评估组织流程,并强调工具设计与可验证的评估。

主要功能

  1. 01规划 API 覆盖与工作流工具
  2. 02设计清晰且易发现的工具
  3. 03实现错误处理与分页
  4. 04检查代码并测试服务器
  5. 05创建可验证的评估问题

适用场景

  1. 01规划外部服务的 MCP 接口
  2. 02为 MCP 工具定义输入与输出
  3. 03测试服务器构建及运行情况
  4. 04评估 Agent 能否完成真实任务

MCP 相关

该指南指导开发能让 LLM 通过工具与外部服务交互的 MCP 服务。内容涵盖协议、传输方式、工具、资源及提示词的设计与实现。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/snyk/agent-scan --skill mcp-builder

安装后在 Claude Code 中输入/mcp-builder确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE.txt
reference/
evaluation.md
mcp_best_practices.md
node_mcp_server.md
python_mcp_server.md
scripts/
connections.py
evaluation.py
example_evaluation.xml
requirements.txt

详细介绍

MCP 服务开发指南

概述

创建 MCP(模型上下文协议)服务,让大模型通过精心设计的工具与外部服务交互。MCP 服务的质量取决于它帮助大模型完成实际任务的能力。


流程

🚀 高层工作流

创建高质量的 MCP 服务分为四个主要阶段:

阶段 1:深入调研与规划
1.1 了解现代 MCP 设计

API 覆盖范围与工作流工具: 在全面覆盖 API 端点与专用工作流工具之间取得平衡。工作流工具对于特定任务可能更方便,而全面覆盖则让 Agent 能够灵活组合操作。不同客户端的性能表现各异:一些客户端可以通过组合基础工具的代码执行功能获益,而另一些则更适合使用更高层级的工作流。如无法确定,应优先考虑全面覆盖 API。

工具命名与可发现性: 清晰、描述性强的工具名称有助于 Agent 快速找到合适的工具。使用一致的前缀(例如,github_create_issue、github_list_repos)以及以操作为导向的命名方式。

上下文管理: 简洁的工具描述以及筛选或分页结果的能力都能让 Agent 获益。设计工具时,应让其返回重点突出、相关性强的数据。一些客户端支持代码执行,可帮助 Agent 高效筛选和处理数据。

可操作的错误消息: 错误消息应通过具体建议和后续步骤,引导 Agent 找到解决方案。

1.2 学习 MCP 协议文档

浏览 MCP 规范:

从站点地图入手,查找相关页面:https://modelcontextprotocol.io/sitemap.xml

然后使用 .md 后缀获取特定页面的 Markdown 格式内容(例如,https://modelcontextprotocol.io/specification/draft.md)。

需要查看的关键页面:

  • 规范概述与架构
  • 传输机制(可流式 HTTP、stdio)
  • 工具、资源和提示词定义
1.3 学习框架文档

推荐技术栈:

  • 语言:TypeScript(SDK 支持质量高,并且在许多执行环境中兼容性良好,例如 MCPB。此外,AI 模型擅长生成 TypeScript 代码,得益于其广泛应用、静态类型和优秀的代码检查工具)
  • 传输方式:远程服务使用可流式 HTTP,并采用无状态 JSON(比有状态会话和流式响应更易扩展和维护)。本地服务使用 stdio。

加载框架文档:

对于 TypeScript(推荐):

  • TypeScript SDK:使用 WebFetch 加载 https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md
  • ⚡ TypeScript 指南 - TypeScript 模式和示例

对于 Python:

  • Python SDK:使用 WebFetch 加载 https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md
  • 🐍 Python 指南 - Python 模式和示例
1.4 规划实现方案

了解 API: 查看服务的 API 文档,确定关键端点、身份验证要求和数据模型。必要时使用 Web 搜索和 WebFetch。

工具选择: 优先全面覆盖 API。列出需要实现的端点,从最常见的操作开始。


阶段 2:实现
2.1 设置项目结构

有关项目设置,请参阅特定语言的指南:

2.2 实现核心基础设施

创建共享实用工具:

  • 带身份验证功能的 API 客户端
  • 错误处理辅助工具
  • 响应格式化(JSON/Markdown)
  • 分页支持
2.3 实现工具

对于每个工具:

输入架构:

  • 使用 Zod(TypeScript)或 Pydantic(Python)
  • 添加约束和清晰的描述
  • 在字段描述中添加示例

输出架构:

  • 尽可能为结构化数据定义 outputSchema
  • 在工具响应中使用 structuredContent(TypeScript SDK 功能)
  • 帮助客户端理解和处理工具输出

工具描述:

  • 简洁概述功能
  • 参数描述
  • 返回类型架构

实现:

  • 对 I/O 操作使用 async/await
  • 使用可采取行动的消息进行适当的错误处理
  • 在适用时支持分页
  • 使用新版 SDK 时,同时返回文本内容和结构化数据

注解:

  • readOnlyHint:true/false
  • destructiveHint:true/false
  • idempotentHint:true/false
  • openWorldHint:true/false

第 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 服务后,请创建全面的评估来测试其有效性。

加载评估指南,查看完整的评估指南。

4.1 了解评估目的

使用评估测试大模型能否有效使用 MCP 服务来回答真实、复杂的问题。

4.2 创建 10 个评估问题

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

  1. 检查工具:列出可用工具并了解其功能
  2. 探索内容:使用只读操作探索可用数据
  3. 生成问题:创建 10 个复杂、真实的问题
  4. 验证答案:自行解答每个问题以验证答案
4.3 评估要求

确保每个问题都满足以下条件:

  • 独立:不依赖其他问题
  • 只读:只需执行非破坏性操作
  • 复杂:需要多次调用工具并进行深入探索
  • 真实:基于人们实际关心的真实用例
  • 可验证:答案唯一且明确,可通过字符串比较验证
  • 稳定:答案不会随时间变化
4.4 输出格式

创建一个 XML 文件,结构如下:

<evaluation>
  <qa_pair>
    <question>Find discussions about AI model launches with animal codenames. One model needed a specific safety designation that uses the format ASL-X. What number X was being determined for the model named after a spotted wild cat?</question>
    <answer>3</answer>
  </qa_pair>

</evaluation>

参考文件

📚 文档库

开发过程中按需加载以下资源:

MCP 核心文档(首先加载)
  • MCP 协议:先从 https://modelcontextprotocol.io/sitemap.xml 中查看站点地图,然后通过添加 .md 后缀获取特定页面
  • MCP 最佳实践 - 通用 MCP 指南,包括:
    • 服务和工具命名规范
    • 响应格式指南(JSON 与 Markdown)
    • 分页最佳实践
    • 传输方式选择(可流式传输的 HTTP 与 stdio)
    • 安全和错误处理标准
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 实现指南 - 完整的 Python/FastMCP 指南,包含:

    • 服务初始化模式
    • Pydantic 模型示例
    • 使用 @mcp.tool 注册工具
    • 完整的可运行示例
    • 质量检查清单
  • ⚡ TypeScript 实现指南 - 完整的 TypeScript 指南,包含:

    • 项目结构
    • Zod 模式
    • 使用 server.registerTool 注册工具
    • 完整的可运行示例
    • 质量检查清单
评估指南(在阶段 4 加载)
  • 评估指南 - 完整的评估创建指南,包含:
    • 问题创建指南
    • 答案验证策略
    • XML 格式规范
    • 问题和答案示例
    • 使用提供的脚本运行评估

评论

支持 Markdown