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部署最佳实践
相关文章
-
🚀 Spring IoC与DI核心原理深度拆解:从“手动New”到“自动注入”的优雅转身详细阅读
北京时间:2026年4月9日 | 本文由 随身AI助手 精心整理 一、写在前面:为什么你写十年代码,面试仍答不清IoC和DI?...
2026-05-13 54
-
📅 文搞懂图片AI助手:从API调用到技术原理,附代码示例与面试考点详细阅读
一文搞懂图片AI助手:从API调用到技术原理,附代码示例与面试考点一、技术地位:图片AI助手为何成为2026年的核心必学知识点2026年,AI图像生成...
2026-05-13 57
-
骑手AI助手深度技术解析:从代码补全到智能体编程,2026年开发者必知的核心进化路径详细阅读
2026年4月,AI编程工具已从“辅助写代码”的配角进化为开发者的“数字员工”。根据Gartner 2026软件工程成熟度报告,全球超过65%的企业级...
2026-05-13 47
-
青海的老板们,手头紧?别急着招人,先试试这个“西宁电商AI虚拟客户软件代理”详细阅读
说实话,我现在坐在西宁海湖新区的写字楼里,看着窗外的大太阳,心里头那叫一个五味杂陈。干电商这行三四年了,从最开始在互助巷家里囤货发朋友圈,到后来在城南...
2026-05-13 56
-
震惊!财税人凌晨2点还在对发票?AI财税助手把这苦差事彻底灭了详细阅读
说真的,我做财务这行有七八年了,见过太多同事被一张发票折磨到怀疑人生。最近跟老同学聚餐,一个做会计的朋友跟我吐槽:“月底那几天加班到凌晨两点,眼睛盯着...
2026-05-13 56
-
连云港AI教育合作代理,这波风口咱港城人怎么抓?我跟你说说心里话详细阅读
说实话,这阵子我真是被各种电话和微信轰炸得头都大了。自从我家那小子上了初中,成绩跟坐过山车似的,我这心里就跟猫抓一样。前阵子跟几个老同学吃饭,酒过三巡...
2026-05-12 44
-
辽宁AI电销机器人代理哪家好?2026年真实测评与避坑指南(全是干货)详细阅读
嘿,兄弟姐妹们,咱今天不整那些虚头巴脑的东西,就实实在在唠唠辽宁AI电销机器人代理这摊事儿。前段时间去沈阳参加了个企业数字化转型的沙龙,那场面——坐了...
2026-05-12 47
-
谁懂啊!听“来财时光代理人ai翻唱”给我整破防了,这才是白月光的正确打开方式!详细阅读
家人们谁懂啊,昨天晚上我本来是打算刷会儿B站就睡觉的,结果愣是听到凌晨两点,眼睛都给我哭肿了。事情是这样的,我首页不知道咋回事突然给我推了一个标题写着...
2026-05-12 48

最新评论