第 18 章:MCP
使用 Model Context Protocol 标准化连接外部工具、资源和 Prompt,让 AI 应用与能力提供方解耦。
前言
Tool Calling 解决单个应用如何把 Java 能力提供给模型。能力越来越多、由不同进程或团队维护时,需要统一的发现和调用协议。MCP 定义了 Client 与 Server 之间交换能力的标准方式。
一、MCP 是什么
MCP 是面向 AI 应用上下文和工具连接的协议。它规定双方如何初始化、协商能力、列出工具或资源、发起调用并返回结果。
text
AI Application → MCP Client ⇄ MCP Server → Tools / Resources / Prompts
协议统一的是通信方式,不负责判断业务结果是否正确。
二、为什么需要 MCP
- 工具实现与 AI 应用解耦;
- 不同语言和进程可以按协议互通;
- Client 可以动态发现 Server 能力;
- 同一 MCP Server 可以服务多个 AI 应用;
- 工具、资源和 Prompt 有统一描述方式。
如果能力只在一个简单应用内部使用,直接 Tool Calling 可能更简单。MCP 不是所有项目的必选项。
三、MCP Client
Client 负责:
- 建立和维护连接;
- 初始化并协商协议能力;
- 获取工具、资源和 Prompt 列表;
- 发送调用请求;
- 把返回结果交给 ChatClient 或 Agent。
在 Spring AI 中,MCP Client 暴露的工具可以适配为模型可调用的 ToolCallback。
四、MCP Server
Server 负责把真实能力按协议暴露出来:
text
工具描述 / 参数 Schema
↓
接收调用请求
↓
认证、校验、执行
↓
标准化返回结果
Server 仍然必须执行权限、参数和业务校验,不能因为请求来自 MCP Client 就默认可信。
五、Tools、Resources 与 Prompts
| 能力 | 作用 |
|---|---|
| Tools | 可执行操作或查询 |
| Resources | 可读取的数据或内容 |
| Prompts | 可复用的提示模板 |
不是所有 Server 都必须实现全部能力。Client 应以协商结果为准。
六、传输方式
MCP 可以使用本地进程标准输入输出或基于网络的传输。选择取决于部署方式:
- 本地 stdio:适合桌面工具和同机子进程;
- 网络传输:适合远程共享服务,但需要更严格的认证、TLS 和访问控制。
不要把仅绑定本机的 Server 无保护地暴露到公网。
七、Spring AI 中的基本接入思路
text
配置 MCP Client
↓
连接一个或多个 Server
↓
发现 ToolCallback
↓
注册给 ChatClient
↓
模型选择并调用工具
Starter、配置属性和具体 API 会随版本变化,项目必须使用同一版本的官方示例,不能混用早期实验接口。
八、MCP 与普通 Tool Calling 的关系
Tool Calling 是模型与工具之间的交互机制;MCP 是应用发现和连接外部能力的协议。MCP Server 暴露的工具最终仍可进入 Tool Calling 流程。
text
Tool Calling:模型如何提出工具调用
MCP:工具从哪里发现、怎样跨进程调用
九、连接多个 Server
多个 Server 可能出现同名工具。应用应设置命名空间、白名单或显式映射,避免模型选错。
只向模型暴露当前业务需要的能力,不要把所有已连接 Server 的工具无条件注册。
十、安全边界
- 审核 Server 来源和代码;
- 限制文件、网络和命令权限;
- 使用认证和加密传输;
- 工具按最小权限运行;
- 高风险操作要求用户确认;
- 记录调用人、参数摘要和结果;
- 对返回资源执行大小和内容限制;
- 防范工具描述和资源中的 Prompt Injection。
MCP 提高连接便利性,也扩大了攻击面。
十一、失败与可用性
需要处理连接失败、能力列表变化、Server 超时、工具执行失败和协议版本差异。远程能力不应拖垮整个 AI 服务,应设置超时、隔离和降级策略。
十二、从 API 进入源码
text
MCP Client AutoConfiguration
↓
Client Session / Transport
↓ listTools()
MCP Tool Callback Provider
↓
ChatClient tools
阅读时关注连接生命周期、能力刷新、工具名映射、参数 Schema 和异常转换。
十三、常见误区
- MCP 是新的大模型:它是连接协议。
- 使用 MCP 后不需要 Tool Calling:MCP 工具仍通过模型工具调用机制使用。
- 已连接 Server 的工具都安全:Server 是外部信任边界。
- MCP 自动解决权限:认证授权仍属于应用和 Server。
- 工具越多 Agent 越强:过多能力会增加误选和安全风险。
十四、本章总结
MCP 把 AI 应用与能力提供方解耦,统一工具、资源和 Prompt 的发现与调用。生产使用的核心不是"连上 Server",而是能力治理、最小权限和稳定性。
完整源码
text
源码地址:待补充
对应章节:chapter-18-mcp
参考资料
下一章:Agent
下一章将组合模型、工具、Memory 和执行循环,理解 Agent 如何围绕目标持续决策与行动。