2026年4月8日 门诊助手AI搜索资料:Spring AI MCP协议全解析
一、开篇引入
模型上下文协议(Model Context Protocol,简称MCP)是2024年由Anthropic公司提出的开源协议,旨在标准化大型语言模型(LLM)与外部数据源和工具的交互方式-21。对于正在学习Spring AI或从事AI应用开发的Java程序员来说,MCP已逐渐成为一个不可回避的知识点。

许多开发者在接触MCP时普遍存在几个痛点:只会用框架提供的API,却说不清MCP本质上解决了什么问题;将MCP与Function Calling混为一谈,概念张冠李戴;面试被问到MCP的架构和传输协议时语塞。本文将围绕MCP协议的核心概念与Spring AI中的实践,从“为什么需要MCP”开始,逐步拆解其架构、通信机制、代码实现,并提供高频面试考点。
二、痛点切入:为什么需要MCP

痛点场景:为每个AI模型单独适配工具
在没有MCP之前,如果我们想让大模型调用外部工具(比如查询天气或操作数据库),最常见的做法是使用各模型厂商提供的Function Calling能力。以下是一段典型的使用OpenAI Function Calling的代码思路:
OpenAI 风格的工具定义 functions = [{ "name": "get_weather", "description": "获取指定城市的天气", "parameters": { "type": "object", "properties": { "city": {"type": "string"} } } }] 然后调用 OpenAI API response = openai.ChatCompletion.create( model="gpt-4", messages=messages, functions=functions )
换成Claude模型,工具定义的格式完全不同。如果同时接入OpenAI、Claude、通义千问,就需要为每个模型单独写一套适配代码——接入M个模型和N个工具,意味着M×N次定制开发-21。
传统方案的三大弊端
重复工作:同一个功能需要为每个LLM重新实现一遍。
高昂维护成本:API变更需要多处同步修改。
生态碎片化:缺乏统一的工具接口标准。
为了解决这些混乱局面,MCP协议应运而生。它的设计目标非常明确:定义一套与模型无关的标准化协议,让任意AI模型都能通过统一接口调用任意工具-21。
三、核心概念讲解:MCP(模型上下文协议)
定义
MCP(Model Context Protocol,模型上下文协议) 是一个标准化协议,使AI模型能够以结构化的方式与外部工具和资源进行交互-1。
类比理解
把MCP想象成AI世界的USB-C接口。在USB-C出现之前,手机充电接口五花八门,出门要带一堆转接头;MCP出现之前,每个大模型调用外部工具的方式各不相同,开发者要为每个模型单独适配-5。有了MCP,AI应用可以通过统一的方式发现和使用外部工具,就像一根USB-C线可以给各种设备充电一样-48。
核心能力
MCP v1.0定义了四种核心能力类型-21:
| 能力 | 核心作用 | 实际场景 |
|---|---|---|
| Resources(资源) | 只读数据流,让模型读取外部数据 | 读取GitHub文档、数据库记录 |
| Tools(工具) | 可执行动作,模型主动触发的代码或API | 发送消息、执行SQL、调用API |
| Prompts(提示模板) | 预定义提示词,引导模型行为 | 多语言翻译模板、任务模板 |
| Sampling(采样) | 服务器请求模型生成回复 | 双向交互、多模型协同 |
四、关联概念讲解:JSON-RPC
定义
JSON-RPC 2.0 是一个轻量级的远程过程调用(RPC,Remote Procedure Call)协议,使用JSON作为数据格式,支持在分布式系统中进行远程方法调用-22。
与MCP的关系
MCP基于JSON-RPC 2.0构建,将其作为底层的消息传输格式-21。MCP定义了三种基于JSON-RPC的核心消息类型-28:
请求:双向消息,包含方法和参数,期望收到响应
响应:成功结果或错误信息,与特定请求ID匹配
通知:不需要响应的单向消息
差异对比
| 对比维度 | MCP | JSON-RPC |
|---|---|---|
| 设计目标 | 领域专用协议,专为AI集成设计 | 通用通信框架,适用于任意分布式系统 |
| 核心定位 | AI应用的USB-C接口,统一工具调用 | 简化远程调用流程,隐藏网络通信细节 |
| 语义扩展 | 包含工具、资源、提示等AI领域原语 | 无领域绑定,不涉及特定业务语义 |
本质差异:MCP是领域专用协议(AI集成),JSON-RPC是通用通信框架-22。
五、概念关系与区别总结
核心逻辑关系
| 关系 | 说明 |
|---|---|
| JSON-RPC是“语言” | 定义了消息“怎么说”(格式和传输规则) |
| MCP是“方言” | 定义了AI场景下“说什么”(工具调用、资源访问等语义) |
| Spring AI是“翻译官” | 将MCP协议封装成Java开发者熟悉的注解和Boot Starter |
一句话概括:MCP定义“说什么”,JSON-RPC定义“怎么说”,Spring AI负责“让你怎么写最省事”。
与Function Calling的区别
Function Calling是模型厂商各自实现的一套工具调用机制,每家格式不同;MCP是统一的标准协议,所有支持MCP的工具可以被任何支持MCP的AI模型调用-21。如果说Function Calling是每家手机厂商自己的充电接口,那么MCP就是通用的USB-C标准。
六、代码/流程示例演示
环境准备
Spring AI 1.0 GA已于2025年5月发布,建议使用Spring Boot 3.5.x+配合Spring AI 1.1.x版本-5。
Maven依赖:
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-mcp-server</artifactId> <version>1.1.2</version> </dependency>
示例1:用@McpTool暴露计算器工具
@Service public class CalculatorService { // @McpTool标记此方法为AI可调用的工具 @McpTool( name = "calculate_sum", description = "计算两个整数的和,用于基础算术运算" ) public int add( // @McpToolParam描述参数,供AI理解 @McpToolParam(description = "第一个加数", required = true) int a, @McpToolParam(description = "第二个加数", required = true) int b ) { return a + b; } }
关键说明:@McpTool注解是Spring AI MCP开发的核心,它会自动分析方法签名,生成工具定义供AI模型发现和调用。方法上的description字段非常重要——LLM正是靠这些描述来判断何时调用哪个工具以及如何传递参数-2。
示例2:暴露天气查询服务
@Service public class WeatherService { @Tool(description = "根据城市名称获取天气预报") public String getWeatherByCity(String city) { // 模拟天气数据 Map<String, String> weatherMap = Map.of( "北京", "晴转多云,18℃~26℃,南风2级", "上海", "小雨,15℃~22℃,东风3级" ); return weatherMap.getOrDefault(city, "暂无该城市天气信息"); } }
配置文件(application.yml) :
server: port: 8014 spring: ai: mcp: server: type: async protocol: STREAMABLE 使用Streamable-HTTP协议 name: weather-mcp-server version: 1.0.0
对比总结
| 传统Function Calling | Spring AI MCP |
|---|---|
| 手动编写JSON Schema定义工具 | @McpTool一行注解搞定 |
| 各模型厂商格式不统一 | 协议统一,一次开发多模型复用 |
| 需自行处理协议转换和通信 | 框架自动处理,专注业务逻辑 |
七、底层原理与技术支撑
技术依赖
Spring AI MCP的底层依赖了以下几个关键技术:
MCP Java SDK:提供了模型上下文协议的Java实现,通过同步和异步通信模式实现与AI模型和工具的标准化交互-1。
JSON-RPC 2.0:作为消息传输的底层格式,定义了请求、响应和通知三类消息结构。
传输层实现:支持Stdio(标准输入输出)、SSE(Server-Sent Events)和Streamable-HTTP等多种传输协议-1。
三层架构
MCP Java SDK遵循三层架构-1:
Client/Server层(顶层) :处理主要应用程序逻辑和协议操作,包括
McpClient管理客户端连接、McpServer处理服务端请求。Session层(中间层) :管理通信模式和连接状态,核心接口为
McpSession。Transport层(底层) :处理实际的消息传输和序列化,管理JSON-RPC消息的收发。
这套分层架构将关注点分离,使Spring AI能够在不改动上层业务代码的情况下,灵活切换底层传输协议(如从本地Stdio切换到远程SSE)。
八、高频面试题与参考答案
面试题1:什么是MCP?它解决了什么核心问题?
标准答案:
MCP(Model Context Protocol,模型上下文协议)是Anthropic于2024年提出的开放协议,被誉为 “AI领域的USB-C接口标准” 。它通过JSON-RPC 2.0统一了LLM与外部数据源/工具的通信规范-21。
解决的核心问题:
碎片化:每个模型需单独适配工具,M×N的定制开发问题
高耦合:工具逻辑与模型代码深度绑定
上下文丢失:多轮调用时状态管理复杂
踩分点:说出英文全称、USB-C接口的类比、三种核心能力、JSON-RPC 2.0作为底层协议。
面试题2:MCP与Function Calling有什么区别?
标准答案:
Function Calling是各大模型厂商各自实现的一套工具调用机制(如OpenAI Function Calling、Claude Tool Use),每个厂商的格式、规范各不相同。而MCP是统一的标准协议,任何支持MCP的工具可以被任何支持MCP的AI模型调用-21。
简单来说:Function Calling是每家手机厂商自己的充电口(苹果Lightning、安卓Micro-USB),MCP是通用的USB-C标准。
面试题3:MCP的架构包含哪些核心组件?
标准答案:
MCP采用客户端-主机-服务器架构-28:
Host(主机) :AI应用运行环境,创建和管理多个客户端实例,执行安全策略
Client(客户端) :由Host创建,与特定Server建立1:1连接,处理协议协商、消息路由
Server(服务器) :提供具体能力,通过工具、资源、提示三种原语暴露功能
面试题4:MCP支持哪些传输协议?分别适用于什么场景?
标准答案:
MCP支持三种主要传输方式-48:
Stdio(标准输入输出) :适用于本地进程间通信,如桌面应用启动子进程调用MCP Server
Streamable-HTTP:适用于云端远程服务部署,支持HTTP请求/响应模式
SSE(Server-Sent Events) :用于服务器向客户端单向推送流式数据,适合流式响应场景(注意:SSE已被Streamable-HTTP逐步替代)
面试题5:Spring AI如何简化MCP开发?
标准答案:
Spring AI通过以下方式简化MCP开发-2:
提供
@McpTool、@McpResource、@McpPrompt等声明式注解,替代手动编写JSON Schema提供MCP Server Starter和MCP Client Starter,自动完成组件扫描和自动配置
封装底层传输协议(Stdio、SSE、Streamable-HTTP),开发者无需关心协议细节
支持同步和异步两种通信模式
九、结尾总结
核心知识点回顾
| 知识点 | 核心内容 |
|---|---|
| MCP是什么 | AI领域的USB-C接口,统一LLM与外部工具的通信标准 |
| 解决了什么 | 碎片化(M×N问题)、高耦合、上下文丢失三大痛点 |
| 架构组成 | Host + Client + Server三层,基于JSON-RPC 2.0通信 |
| 传输协议 | Stdio(本地)、Streamable-HTTP(远程)、SSE(流式) |
| Spring AI实现 | @McpTool注解 + MCP Starter,声明式开发 |
重点提示
MCP ≠ Function Calling:MCP是标准协议,Function Calling是各家实现,这是面试中极易混淆的概念
MCP基于JSON-RPC:不要将MCP与REST API混淆,MCP采用的是RPC风格的双向通信
Spring AI 1.0 GA:2025年5月发布,使用Spring Boot 3.5.x+配合Spring AI 1.1.x版本,不要使用老版本
下篇预告
下一篇将深入MCP Server与Client的完整实现,包括:
如何搭建完整的MCP Client-Server通信
底层传输协议的配置与切换
生产环境下的MCP部署最佳实践
相关文章
-
2026年4月8日 门诊助手AI搜索资料:Spring AI MCP协议全解析详细阅读
一、开篇引入模型上下文协议(Model Context Protocol,简称MCP)是2024年由Anthropic公司提出的开源协议,旨在标准化大...
2026-04-20 1
-
2026年4月8日 联想AI助手:从“陪聊”到“执行”,天禧Claw系统级Agent深度解析详细阅读
开篇引入 “说得好听,但能不能帮我动手把事办了?”这是当前AI聊天框时代大多数用户的真实心声。无论是写周报、润色邮件还是查资料,大语言模型(Larg...
2026-04-20 0
-
2026年4月10日 通用助手AI核心技术:RAG原理与面试题全解析详细阅读
在AI应用开发的技术版图中,RAG(检索增强生成)正从一项实验性方案蜕变为企业级智能应用的核心支柱。许多学习者和开发者对这个概念的理解仍停留在“让模型...
2026-04-20 4
-
2026年4月10日 编程界的“根_英雄联盟ai助手”:Spring框架IoC与AOP核心原理深度解析详细阅读
开篇引入 在Java企业级开发的生态系统中, Spring框架 无疑占据着“根_英雄联盟ai助手”般的核心地位——它就像游戏里的全能辅助,默默在后台...
2026-04-20 5
-
餐饮老板别硬扛了!AI炒菜机器人口感咋样?聊点真实的代理门道详细阅读
哎,说起现在开餐馆,真是一把辛酸泪。前两天我还跟一个在郑州开川菜馆的发小打电话,那哥们儿在电话里头唉声叹气的,说店里的厨师长又双叒叕撂挑子了。为啥?累...
2026-04-20 4
-
餐饮老板们,别等隔壁用AI抢客了才着急!聊聊我找“AI餐饮支付系统代理”这档子事详细阅读
哎哟喂,这几天可把我给跑断了腿。事儿是这样的,我那个在郑州开了三年烩面馆的老表,大半夜的给我打电话诉苦。说现在生意是真特么难做,人工贵不说,一到饭点手...
2026-04-20 4
-
阜阳AI英语代理这事儿,我替你们去探了探路详细阅读
上个礼拜回阜阳老家,我妈跟我说了一件事,让我心里挺不是滋味的。 她说隔壁老李家的闺女,在阜阳一所还不错的中学读初二,英语成绩一直在及格线上下晃悠。老...
2026-04-20 5
-
闽南生意圈疯传:为啥老江湖都开始用AI客服顶班了?这才是真正的“免烦恼”详细阅读
哎,说真的,你有没有觉得现在的生意越来越难做了? 我是土生土长的福州人,在台江这边开了七八年的网店,主要卖咱们福建的特产——就是那些茉莉花茶啊、龙眼...
2026-04-20 6

最新评论