最新n1n v2.0.1 正式上线!企业级大模型接口聚合平台 (LLM API Gateway),为您接入 500+ AI Models,价格低至 1 折, 立即尝试

设计大模型不会误解的 MCP 工具的七个黄金法则

作者
  • avatar
    姓名
    Nino
    职业
    Senior Tech Editor

构建模型上下文协议 (Model Context Protocol, 简称 MCP) 服务器与设计传统的 REST API 有着本质的不同。当你的 API 读取者是一个大语言模型,而不是人类开发者或结构化前端时,交互规则发生了彻底的改变。模型会阅读你的工具列表,挑选一个工具,并将返回的结果直接转换成自然语言复述给人类用户。它不会通读你的长篇文档,不会提出追问,并且会极其自信地用猜测填补每一个数据空白。

当我们为 supp.fit 构建 MCP 服务器时,我们遇到了这些完全相同的挑战。supp.fit 是一个包含来自随机对照试验的补充剂科学证据数据库。其中的数据很容易以关键的方式被误解:不同单位的剂量、无法匹配的产品标签、缺少记录日期的摄入日志。为了解决这些问题,我们总结出了七条严格的架构规则。虽然这些规则源于健康数据,但它们同样适用于任何稳健的 MCP 服务器基础设施,无论你是通过 n1n.ai 接入高性能大模型,还是构建自定义内部工具。

1. 每个用户问题对应一个工具,而不是每个路由对应一个工具

传统的 REST API 青睐细粒度的路由:/users/{id}/stack、/products/{id}/ingredients、/studies/search。如果你将后端每一个路由直接映射为一个 MCP 工具,你的工具列表将膨胀到数十个选项。

当模型面对两个名称或描述仅差一个单词的工具时,其概率分布会趋于扁平,从而经常随机选择其中一个。此外,如果你依赖像 n1n.ai 这样聚合器提供的极速大模型推理层,通过最小化工具冗余来保持上下文窗口干净,对于降低延迟和提高准确率至关重要。

为了解决这个问题,我们的 API 拥有四十多个端点,但我们的 MCP 服务器仅对外暴露了十三个工具。我们将多个端点合并为单一职责的工具,每个工具只回答一种特定类型的问题:搜索补充剂、获取单个补充剂、获取其研究方案、获取某个健康益处背后的研究、获取单项研究、搜索产品、获取单个产品,以及六个针对用户个人数据的专用工具。

2. 明确定义每个空字段的具体含义

数据库中的两个字段可能出于完全相反的原因而为空,但没有明确引导的大语言模型会将它们同样视为“空”或“无”。

例如,在我们的产品数据库中:

  • 缺少“补充剂成分表 (Supplement Facts)”面板的产品,通常意味着条形码无法与注册标签库匹配。这绝不意味着该产品不含任何成分。
  • 没有摄入答案的日期意味着当天没有人填写记录。这绝不意味着用户漏服了剂量。

如果没有明确的防护栏,模型会非常高兴地输出诸如“该产品不含任何成分”或“你连续 12天漏服”之类有害的幻觉内容。

专业提示:将明确的否定约束直接嵌入工具描述字符串中:

当 has_confirmed_label 为 false 时表示没有面板,这意味
着匹配无法被确认。这绝不意味着该产品不含有任何成分。
永远不要告诉读者某个产品不含任何东西。

3. 禁止危险的算术运算和单位转换

大语言模型非常喜欢做数学题,但它们在单位转换和跨类型聚合方面的表现历来糟糕。剂量数据常以国际单位 (IU)、毫克 (mg)、胶囊和毫升为单位出现。看到一堆数字的模型会兴高采烈地将它们相加,更糟糕的是,它会使用不准确的启发式算法将 IU 转换为毫克。

为了防止这种情况,必须强制执行结构和文本约束:

规则实现策略
禁止跨单位求和在描述中明确说明:“每个数量保持其自身的单位;不要跨单位或跨项目相加数量。”
禁止自动换算禁止盲目猜测像 IU 这样的生物活性单位的质量等效值。
结构化响应调整你的 JSON 响应结构,使消费数据严格按项目和单位分组,从而让错误的加法在结构上难以执行。

通过像 n1n.ai 这样强大的 API 基础设施集成这些模型时,确保你的输出架构强制执行严格的类型定义,将进一步减少算术幻觉。

4. 明确指出每个数字的来源

在处理定量指标时,上下文就是一切。临床试验中的研究小组采用每日定量方案。商业产品标签印刷的是每份推荐量。这两者都不是对用户的医疗建议。

我们的研究方案工具同时返回这两个指标,并附带中位数、中间一半(四分位距)以及最常见的剂量区间。至关重要的是,工具描述明确指出了它们的来源:“印刷的和研究过的用量,而不是推荐剂量。”这使模型能够准确回答“临床试验使用的是什么剂量?”之类的问题,而不会将其转化为危险的个人医疗建议。

5. 强制执行只读架构并消除虚构的写操作工具

安全性不仅仅关乎授权令牌,它还关乎引导模型的认知行为。我们 MCP 服务器中的每个工具都严格实行只读,且服务器架构到数据库没有写路径。

此外,服务器自身不保留任何密钥。它只是透传客户端获取到的令牌,由上游 API 决定该令牌被允许读取哪些内容。

这种设计提供了一种强大的安全属性,同时也辅助了模型的推理。在工具声明列表中没有任何写操作工具的情况下,模型永远不会在大模型对话中幻觉出诸如“是否要将此补充剂添加到你的每日组合中?”之类的主动写入承诺。

6. 按数据所有者划分作用域并统一鉴权规则

我们的平台采用两种不同的 OAuth 作用域:

  1. evidence.read:涵盖公开的科学补充剂、研究和产品(不包含任何个人数据)。
  2. me.read:涵盖用户的个人私密数据,包括个人组合、历史记录和摄入日志。

这些作用域在用户授权页面上是独立的复选框,因此个人可以共享科学证据部分,同时保留其个人健康隐私。

然而,每个工具都需要一个登录账号,即使是那些读取公共证据的工具也是如此。原因何在?因为 AI 助手经常需要将两部分混合在一个回答中(例如:“研究是怎么说的,我目前在服用什么?”)。在所有工具中保持单一的鉴权规则可以被轻松测试,而针对每个工具设置不同规则则是人们容易遗漏的隐患。

7. 提供摘要加验证链接

完整论文文本受版权许可保护,因此没有任何工具会返回原始论文正文。相反,研究工具返回的是标题、年份、参与者人数、我们的专家总结以及 PubMed 链接。

这为模型提供了足够的内容来准确命名论文,同时也为人类读者提供了直接核查的验证路径。

稳健 MCP 服务器总结核对表

规则核心目标
工具少于端点防止模型混淆和随机挑选工具
说明空白含义消除错误的“无”或零值幻觉
禁止错误算术防止跨单位求和与糟糕的单位换算
标明数字来源区分临床试验数据与医疗建议
只读并明确声明防止在聊天界面中出现虚构的写入动作
按数据所有者划分作用域在保护隐私的同时维持统一鉴权
摘要加链接实现准确引用与人类交叉验证

准备好为你的自定义 MCP 服务器部署高速、可靠的大语言模型集成服务了吗?立即在 n1n.ai 获取免费 API 密钥。