第18章-MCP

第 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 如何围绕目标持续决策与行动。

相关推荐
万物智能信息科技1 小时前
温湿度传感器驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
人工智能·驱动开发·华为·开源·harmonyos·鸿蒙
Da Da 泓1 小时前
谈谈HTTP
网络·网络协议·http
进击的横打1 小时前
【人工智能】沙箱AI Agent 的安全隔离屏障
人工智能·安全
要吃这碗饭1 小时前
YouTube 数据抓取出现 429/403 错误?2026 反爬机制拆解与爬虫选型指南
网络·爬虫·网络协议
YumiProxy1 小时前
代理IP自动切换实战:会话保持与请求头配置避坑指南
服务器·网络·网络协议·tcp/ip·ip
咯哦哦哦哦1 小时前
opencv复现 Halcon 双相机拼接
人工智能·数码相机·opencv
honsor1 小时前
以太网温湿度传感器:RJ45直连机房的环境监控新方案
运维·网络·数据库·物联网·安全·云计算·github
西索斯coding1 小时前
Kimi k2.7-code-highspeed 接入 Cline 教程:baseURL 路由变更 + model_id 正确写法
java·服务器·数据库·ai
名不经传的养虾人1 小时前
从0到1:企业级AI项目迭代日记 Vol.117|学会忘记,学会证明,学会设边界
大数据·人工智能·算法·企业ai·多agent协作