MCP 原理:Host、Client、Server 与能力发现
《Agent 大模型 0 到 1 系统课》 · 程序员 Sunday
你正在阅读本节的免费试读。完整课程 ¥499,可在文末添加作者微信购买。
上一节,咱们手写了一条完整的 Tool Calling 调用链。
模型可以根据用户的问题返回 tool_calls,Agent 应用拿到工具名和参数以后,执行 get_order 查询订单,再把结果交回模型。
但是,大家仔细去看咱们的代码,会发现很多问题。
比如:咱们所有的工具定义 和 工具注册表 都是直接写在 tools.js 里面的
那么这就意味着,当我们想要在实现每一个 Tool Calling 的时候,都必须得知道:
- 有哪些工具函数,分别对应什么参数
- 工具注册表怎么写,怎样连接对应的业务系统
如果 tool 比较少肯定没问题,但是在实际项目中,这种 Tool 都是非常多的。
实际的企业项目中可能会有多个 Agent 系统。比如:订单查询 Agent、知识库 Agent、售后处理 Agent
甚至可能还会存在 需要调用远程工具接口的 Agent
因此,在实际企业项目开发中,就不可以单纯使用 Tool Calling 的这种形式了。
也就是说,纯的 Tool Calling 目前还缺少一个核心能力,那就是:
当工具来自其他项目、进程或者远程服务时,Agent 应该使用什么样的统一方式发现和调用它?
这就是 MCP 要解决的问题。
MCP 到底是什么
MCP 的完整名称是 Model Context Protocol,中文通常翻译成 模型上下文协议。
按照官方文档的定义:MCP 是一套用于连接 AI 应用和外部系统的开放标准。
网上有很多资料会把 MCP 理解为 USB 接口,寓意就是:通过同样的一套协议方案,来完成不同工具的调用
在这样的概念里,最重要的有两点:连接 和 标准
没有 MCP 时,Agent 和外部能力之间通常是私有连接:
即:每一种不同的能力,都使用不同的方式完成连接
而 MCP 就是 AI 应用和外部系统之间的一层标准协议,有了 MCP 之后,连接就变成这样了:
本节试读已结束
继续学习,解锁完整课程
购买《Agent 大模型 0 到 1 系统课》,
继续阅读本节剩余内容与后续课程。
