首页 维修案例文章正文

2026年4月8日 门诊助手AI搜索资料:Spring AI MCP协议全解析

维修案例 2026年04月20日 15:51 2 小编

一、开篇引入

模型上下文协议(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的代码思路:

python
复制
下载
 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

传统方案的三大弊端

  1. 重复工作:同一个功能需要为每个LLM重新实现一遍。

  2. 高昂维护成本:API变更需要多处同步修改。

  3. 生态碎片化:缺乏统一的工具接口标准。

为了解决这些混乱局面,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

  1. 请求:双向消息,包含方法和参数,期望收到响应

  2. 响应:成功结果或错误信息,与特定请求ID匹配

  3. 通知:不需要响应的单向消息

差异对比

对比维度MCPJSON-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依赖

xml
复制
下载
运行
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-mcp-server</artifactId>
    <version>1.1.2</version>
</dependency>

示例1:用@McpTool暴露计算器工具

java
复制
下载
@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:暴露天气查询服务

java
复制
下载
@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)

yaml
复制
下载
server:
  port: 8014
spring:
  ai:
    mcp:
      server:
        type: async
        protocol: STREAMABLE    使用Streamable-HTTP协议
        name: weather-mcp-server
        version: 1.0.0

对比总结

传统Function CallingSpring 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

  1. Client/Server层(顶层) :处理主要应用程序逻辑和协议操作,包括McpClient管理客户端连接、McpServer处理服务端请求。

  2. Session层(中间层) :管理通信模式和连接状态,核心接口为McpSession

  3. Transport层(底层) :处理实际的消息传输和序列化,管理JSON-RPC消息的收发。

这套分层架构将关注点分离,使Spring AI能够在不改动上层业务代码的情况下,灵活切换底层传输协议(如从本地Stdio切换到远程SSE)。

八、高频面试题与参考答案

面试题1:什么是MCP?它解决了什么核心问题?

标准答案

MCP(Model Context Protocol,模型上下文协议)是Anthropic于2024年提出的开放协议,被誉为 “AI领域的USB-C接口标准” 。它通过JSON-RPC 2.0统一了LLM与外部数据源/工具的通信规范-21

解决的核心问题

  1. 碎片化:每个模型需单独适配工具,M×N的定制开发问题

  2. 高耦合:工具逻辑与模型代码深度绑定

  3. 上下文丢失:多轮调用时状态管理复杂

踩分点:说出英文全称、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

  1. 提供@McpTool@McpResource@McpPrompt等声明式注解,替代手动编写JSON Schema

  2. 提供MCP Server Starter和MCP Client Starter,自动完成组件扫描和自动配置

  3. 封装底层传输协议(Stdio、SSE、Streamable-HTTP),开发者无需关心协议细节

  4. 支持同步和异步两种通信模式

九、结尾总结

核心知识点回顾

知识点核心内容
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部署最佳实践

上海羊羽卓进出口贸易有限公司 备案号:沪ICP备2024077106号