Spring AI Alibaba集成MCP实战:Server搭建到Client调用全流程

用Java+Spring AI Alibaba搭建MCP服务,让大模型调用外部工具
本文详解如何使用Java和Spring AI Alibaba框架搭建MCP(模型上下文协议)Server与Client。MCP是Anthropic提出的标准化协议,解决大模型与外部工具集成的碎片化问题。通过@Tool和@ToolParam注解定义工具能力,注册到MCP回调并通过SSE端点暴露服务,任何支持MCP协议的客户端(如Trae IDE)都能即插即用,实现大模型对业务数据的安全调用。
什么是MCP?为什么Java开发者需要关注
MCP(Model Context Protocol,模型上下文协议)正在成为AI应用中连接大模型与外部工具的标准接口层。它让大模型能够"知道"自己可以调用哪些外部能力,并在合适的时机自动调用这些工具来完成用户的请求。
MCP由Anthropic于2024年底正式提出并开源,旨在解决大模型与外部系统集成时接口碎片化的问题。在MCP出现之前,每个AI应用要对接外部工具(数据库、API、文件系统等),都需要编写定制化的集成代码,导致大量重复劳动和维护成本。MCP借鉴了LSP(Language Server Protocol,语言服务器协议)的设计思想——LSP通过统一协议让任意编辑器对接任意编程语言的智能提示服务,MCP则通过统一协议让任意AI客户端对接任意工具服务。这种标准化协议的出现,标志着AI应用从"单体智能"向"可组合智能"的架构演进。
本文基于B站UP主的实战演示,详细拆解如何使用 Java + Spring AI Alibaba 框架搭建MCP Server和MCP Client,并演示如何将MCP工具集成到Trae等AI客户端中,让大模型具备调用本地业务数据的能力。
Spring AI Alibaba是阿里巴巴基于Spring AI框架推出的扩展项目,专门面向国内开发者和国产大模型生态。Spring AI本身是Spring官方在2023年底启动的项目,目标是为Java生态提供类似于Python中LangChain的AI应用开发能力。Spring AI Alibaba在此基础上深度集成了通义千问等阿里系大模型,并提供了对MCP协议的原生支持。对于Java开发者而言,这意味着可以沿用熟悉的Spring Boot开发范式(依赖注入、注解驱动、自动配置)来构建AI应用,而无需切换到Python技术栈。
项目架构概览:MCP Server与Client的职责划分
整个项目由两个核心模块组成:
- MCP Server:工具服务端,负责定义和暴露工具能力(如天气查询)
- MCP Client:客户端,负责获取工具列表并在对话中调用工具(可选)
关键点在于:客户端是可有可无的,最重要的是Server端。任何能获取到Server端工具列表的客户端(包括Trae这样的第三方AI工具)都可以直接使用MCP能力。
MCP Server端实现详解
依赖配置
Server端需要引入两个关键依赖:Spring AI Alibaba的POM和WebFlux的POM。WebFlux依赖包中已经包含了MCP核心库和MCP Server WebFlux的相关组件。
WebFlux是Spring Framework 5引入的响应式Web框架,基于Reactor库实现了非阻塞的异步I/O模型。在MCP Server中使用WebFlux而非传统的Spring MVC,主要出于两个考量:第一,MCP通信依赖SSE(Server-Sent Events),这是一种服务器向客户端持续推送数据的长连接技术,WebFlux的响应式流天然适合处理这种场景;第二,MCP Server可能同时被多个AI客户端并发调用,WebFlux的非阻塞模型在高并发场景下比传统的线程池模型具有更好的资源利用率。简单来说,WebFlux让MCP Server能够以更少的系统资源支撑更多的并发连接。

具体的依赖可以通过Spring AI Alibaba官方文档进行查阅,这里不再赘述。
工具定义:@Tool与@ToolParam注解驱动
MCP Server的核心在于工具定义。通过两个关键注解来声明工具能力:
- @Tool:标注在方法上,告诉MCP框架"这个方法是一个可供大模型调用的工具",并描述工具的功能(如"根据城市获取天气")
- @ToolParam:标注在参数上,描述该参数的含义(如"城市名称")
这两个注解的背后,依赖的是大模型的Function Calling(函数调用)能力。Function Calling是OpenAI在2023年6月率先推出的特性,随后被通义千问、Claude、Gemini等主流大模型广泛采纳。其工作原理是:开发者将可用函数的名称、描述和参数Schema以JSON格式传递给大模型,大模型在理解用户意图后,不直接生成文本回答,而是输出一个结构化的函数调用指令(包含函数名和参数值)。客户端接收到这个指令后执行实际的函数调用,再将结果返回给大模型进行最终的自然语言整合。MCP协议本质上是对这一过程的标准化封装——@Tool注解生成的工具描述最终会被转换为大模型能理解的Function定义格式。
以天气查询为例,代码逻辑非常直观:接收一个城市名称参数,根据城市返回对应的天气和气温数据。演示中使用的是假数据(如北京返回"晴天,25度"),实际项目中可以替换为真实的天气API调用。
工具注册:让大模型发现你的能力
定义好工具方法后,还需要将其注册到MCP的回调机制中,让AI能够识别到"我拥有哪些能力"。

注册时使用的是可变参数(varargs),这意味着你可以同时注册多个工具能力——天气查询、公司数据查询、基金数据查询等,都可以用同样的方式添加进来。
注册完成后,还需要进行一些系统配置,并确保工具类被Spring容器管理(加上相应的Bean注解)。配置完成后,可以通过请求当前服务的SSE端点来验证服务是否正常运行。如果SSE能正常响应,说明MCP Server已经就绪。
MCP Client端实现:获取工具列表并调用
依赖与配置
Client端的依赖相比Server端会多一些,需要引入:Web依赖、WebFlux客户端依赖,以及OpenAI模型端依赖。
核心逻辑:工具列表注入聊天客户端
Client端的实现思路非常清晰:
- 获取工具列表:从MCP Server获取所有可用的工具定义
- 注入聊天客户端:将工具列表赋值给ChatClient,使其在对话时拥有工具调用能力
- 系统提示词配置:设置系统消息,告诉大模型"如果涉及天气、紫外线等问题,优先调用工具"

当用户发送消息询问北京天气时,大模型会检查工具列表,发现有匹配的天气查询工具,自动组织好参数(城市名="北京"),调用MCP Server的工具接口,最终将结果整合到回复中:"北京现在的天气是晴天,气温是25度。"
集成Trae:第三方AI客户端对接MCP Server
前面提到MCP Client是可选的,这是因为任何支持MCP协议的客户端都可以直接对接MCP Server。以Trae为例,集成步骤如下:
- 打开Trae设置,找到MCP配置项并启用
- 勾选必要的选项(两个复选框都要勾上)
- 配置MCP Server信息:名称(如
java-mcp-server)和URL(即Server端的SSE端点地址)

Trae是字节跳动推出的AI原生集成开发环境(IDE),基于VS Code内核构建,内置了AI对话、代码生成和智能补全等能力。Trae对MCP协议的支持使其成为验证MCP Server的便捷工具。类似地,Cursor、Windsurf、Continue等新一代AI IDE也纷纷集成了MCP支持,这反映了一个行业趋势:AI开发工具正在从"内置固定能力"转向"可扩展的工具生态"。开发者可以通过MCP Server将企业内部的数据库查询、CI/CD流水线、监控告警等能力接入AI IDE,使AI助手不仅能写代码,还能直接操作业务系统,大幅提升开发效率。
配置完成后,在Trae的工具下拉列表中就能看到从MCP Server获取到的工具列表。之后在聊天时,Trae会自动根据对话内容匹配并调用相应的工具。
实际演示中,在Trae中询问北京天气,可以看到它将参数传递给MCP Server,Server端日志中也能看到一次工具调用记录,最终返回的结果与代码中定义的数据完全一致:晴天,25度。
SSE与Stdio两种传输方式对比
本文演示的是基于**SSE(Server-Sent Events)的传输方式,通过HTTP端点进行通信。MCP还支持另一种Stdio(标准输入输出)**方式,其配置写法有所不同。
SSE是HTML5规范中定义的一种服务器推送技术,基于HTTP协议实现单向的服务器到客户端数据流。与WebSocket的全双工通信不同,SSE是单向的(仅服务器向客户端推送),但它的优势在于实现简单、天然支持断线重连、且能穿透大多数防火墙和代理服务器。在MCP场景中,SSE被用于两个关键环节:一是客户端与Server建立持久连接以接收工具列表更新;二是在工具调用过程中,Server可以通过SSE流式返回执行进度或结果。相比之下,Stdio方式是通过进程间的标准输入输出流通信,适用于MCP Server和Client运行在同一台机器上的本地场景(如IDE插件),而SSE方式则适用于Server部署在远程服务器上的网络场景。
如果需要使用Stdio方式,可以参考Spring AI Alibaba官方文档或咨询大模型获取具体配置方法。
总结:MCP为Java AI应用带来的核心价值
MCP作为AI应用中的"工具接口标准层",其核心价值在于解耦——将工具能力的定义(Server端)与工具的消费(Client端)分离。通过Spring AI Alibaba框架,Java开发者可以非常便捷地搭建MCP服务:
- 用
@Tool和@ToolParam注解声明工具能力 - 将工具注册到MCP回调中
- 通过SSE端点暴露服务
- 任何支持MCP协议的客户端都能即插即用
这种架构使得企业内部的业务数据和能力可以被大模型安全、标准化地调用,是AI应用落地的关键基础设施之一。
核心要点
- MCP是AI应用中的工具接口标准层,通过Server-Client架构让大模型能够调用外部业务工具
- MCP Server通过@Tool和@ToolParam注解定义工具能力,并注册到MCP回调机制中供AI识别
- MCP Client是可选的,任何支持MCP协议的客户端(如Trae)都可以直接对接MCP Server
- 基于Spring AI Alibaba框架,Java开发者可以快速搭建MCP服务,通过SSE端点暴露工具能力
- MCP支持SSE和Stdio两种传输方式,SSE方式通过HTTP端点通信,配置更为直观
相关推荐
教程攻略Cursor+Codex双IDE协同:开源项目二开实战方法论
基于实战经验总结的开源项目二次开发完整方法论,详解Cursor+Codex双IDE协同工作流,涵盖二开七环节、MVP验证、AI读源码技巧,帮助开发者三天跑通项目、两周完成业务集成。
教程攻略Cursor多Agent实战:50分钟搭建Next.js全栈博客
使用Cursor IDE多Agent协作模式,50分钟内从零搭建全栈博客。涵盖Next.js、Clerk认证、Supabase数据库集成,详解4个AI Agent分阶段开发流程与关键避坑经验。
教程攻略从零搭建AI软件工厂:Cursor工程师的多Agent协作实战经验
Cursor工程师Eric分享AI软件工厂构建实战:从自动化六层级、护栏设计、并行Agent管理到规模化扩展,详解如何用多Agent协作实现7×24小时高效软件开发。