CMU AI AGENTS / 从一句回答,到一次真实动作 / 第 06 课

接上 MCP 后,模型就自动会用所有业务系统了吗?

分清业务 API、MCP 的工具发现与调用协议、宿主连接管理、模型选择工具四层;连接成功不等于任务成功,凭据也不应直接塞进提示词。

完整讲解 · 条件对照 · 理解检查所在单元与学习顺序官方课件全页浏览

接上MCP后,模型就自动会用所有业务系统了吗?

把“连上了”拆成一条可检查的路线

仍然查询红笔库存。现在库存不在本地文件,而在公司的库存服务里。宿主应用连接一个MCP服务端,服务端暴露 read_inventory,再向库存HTTP API查询。模型看到工具说明后选择这个能力,调用结果最终回到对话。这里至少有四个角色:模型、宿主中的客户端、MCP服务端、实际业务系统。

“连接成功”只证明其中某条通信路径建立了。它不保证服务端已经提供正确工具,不保证凭据能访问目标仓库,不保证模型会选对参数,也不保证库存系统此时在线。若把这一切压成一个绿色连接图标,失败时就不知道该修哪一层。

本课使用只读查询,不涉及给系统新增权限或实际发送业务请求。重点是沿着一次调用定位职责。MCP是模型上下文协议,它为AI应用发现和调用能力提供共同接口;模型通常不是直接握着网络连接去发送协议消息,而是由宿主执行这些工作。

官方原课件 · Lecture 2 · PDF 第 42 页宿主、客户端与服务端不是同一个东西
原课MCP图中AI应用含Client A与B,分别连接本地stdio文件服务和远程HTTP服务。

从左往右看:宿主应用可以管理多个客户端连接,服务端也可以位于本地或远程。图底部明确指出,调用REST API不必须先接MCP。MCP提供一种面向Agent的接口,而不是让HTTP凭空变得可用。

一次查询经过哪些检查

先发现能力:宿主通过协议取得工具名称、说明与参数Schema,把允许暴露的部分提供给模型。再选择动作:模型根据任务请求查红笔。宿主校验请求并发出工具调用。服务端把它转换成业务API需要的路径和参数,使用属于该业务边界的授权执行查询。最后结果沿原路回填,并与原调用正确配对。

假设MCP服务允许工具调用,但上游库存API凭据已过期。前半段可以完全正常,最后仍会返回授权错误。此时重新写提示词没有直接作用,应该检查上游凭据与权限。相反,如果业务API正常、工具也已发现,但模型把商品写成蓝笔,那是任务解释或参数选择的问题,不能归罪于网络。

官方原课件 · Lecture 2 · PDF 第 46 页共享输入Schema,不代表共享全部契约
原课对比OpenAPI/HTTP API与MCP的发现、调用、认证和范围。

先看Authentication这一行:客户端对MCP的认证与MCP访问上游API的认证是不同边界。再看Discovery:读取OpenAPI文档与tools/list不是同一个动作。共同使用JSON Schema有利于描述参数,但不能把两套身份和权限自动合并。

逐层制造故障,错误就有位置

观察过程 · 改变条件

同一个库存问题,三处可能断开

先预测结果,再逐步展开;最后只改变一个条件,找出最早发生分歧的位置。

教学构造场景 · 按下方规则逐步回放;不调用真实模型,不代表实际成功率。

这一轮的输入

宿主已发现read_inventory,服务端有目标仓库只读权限。

  1. 1. 发现

    工具清单包含名称、用途和item参数。

  2. 2. 执行

    客户端发起工具调用,服务端读取库存API。

  3. 3. 返回

    获得红笔库存5,按调用ID回填。

发现

工具清单包含名称、用途和item参数。

1 / 3
先预测,再核对结果与原因模型收到库存事实。

协议连接、工具暴露、业务授权和数据读取都在这次路径上成立。

不要让协议名承担没有实现的能力

如果工具列表里没有查询库存,模型不可能仅因为“MCP已连接”就自动获得这项能力。服务端还需要真正实现或转接工具。即使工具存在,它的描述也要说清适用仓库、返回单位和错误状态,否则选择工具时仍可能产生歧义。

再改一个条件:服务端列出 delete_inventory,而当前任务只需要读取。发现能力不等于授权使用所有能力。宿主应根据任务和权限范围决定哪些工具可见、哪些调用需要额外检查;业务执行端仍要拒绝越权操作。把敏感凭据直接写进模型可见的工具说明,也不是协议要求,反而扩大了泄露面。

协议统一了接口的一部分,却没有统一所有业务语义。“库存”在不同系统可能指现货、可售量、扣除预占后的数量,数据更新频率也可能不同。接通两个库存服务后,不能只凭同名字段把结果相加。需要核对仓库、时间和数量口径,解释合并的前提。

最小验收应沿同一任务走通三条路线:正常查询能返回正确商品和仓库;无权限时明确失败且不泄露数据;缺工具或参数错误时能说明哪一步未满足。只测连接和列工具,尚未验证端到端任务。

自己解释一次

能列出工具却查不到库存,先看什么?

先看调用是否真正到达服务端以及上游返回什么。列工具成功只验证发现路径,业务认证、商品参数、目标仓库和库存服务可用性仍可能失败。

REST API必须包成MCP才能给Agent用吗?

不必须。宿主可以直接实现HTTP工具或通过其他适配器调用。MCP的价值是标准化发现与调用能力的接口,不是替代所有已有API。

MCP工具返回库存0和返回403错误有何差别?

前者在口径可信时是一个数量事实;后者说明没有获得授权数据。把403当作0会让模型把未知错误地解释为缺货。

连接能力之后,还要决定调用顺序。下一课用一张依赖关系图回答:什么时候可以并行,什么时候必须等前一步结果。