首页/新闻资讯/正文详情

Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合

发布时间:2026/9/27 22:08:33 来源:云帆数科 栏目:资讯中心
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
1. 为什么 Java 开发者现在要盯紧 MCP如果你是一名 Java 后端最近大概率被两个词反复刷屏MCP 和 Claude。MCP 全称 Model Context Protocol模型上下文协议说白了就是给大模型和各种工具、数据源之间定了一套统一的“插座标准”。以前你想让大模型查个数据库、调个地图 API、操作一下 Git 仓库得自己写一堆胶水代码每个模型厂商的对接方式还不一样现在只要你的服务实现了 MCP 协议任何支持 MCP 的客户端都能直接把它当工具用。这对 Java 开发者意味着什么意味着你手里那些 Spring Boot 服务、内部管理系统、数据查询接口不用大改就能被 AI 智能体调用。你不需要去学 Python 生态那一套Spring AI Alibaba 已经把 MCP 的客户端和服务端能力封装好了注解一加、Bean 一注册你的 Java 方法就变成了大模型可以调用的工具。这篇文章我按真实接入链路来写先在 Claude 桌面端跑通一个本地 MCP Server确认工具能被正确加载和触发再把同样的能力迁移到 Spring AI Alibaba 生态里用 Java 代码作为 MCP Client 去调用它。中间会给出 Claude 配置文件骨架、MCP Server 注册步骤、Spring AI Alibaba 侧的依赖和 Bean 配置片段最后做一次端到端调用验证确认工具调用和模型响应都正常。适合有 Spring Boot 基础、想快速把 MCP 落到 Java 项目里的同学。2. 前置准备TaoToken 与模型接入在动手写 MCP Server 之前得先把模型调用这条链路打通。MCP 负责的是“工具怎么被调用”但真正决定要不要调用工具、怎么组织参数的还是背后的大模型。所以你需要一个能稳定调用 Claude 等模型的入口。我这边用的是 TaoToken 来做模型接入它的 API 地址是 https://taotoken.net/api 兼容常见的调用方式Java 侧用 Spring AI 的 OpenAI 兼容客户端就能直接对接。先去控制台创建一个 API Key地址在 https://taotoken.net/api-keys 创建完复制出来后面配置里要用。如果你只是想先验证模型对话是否正常可以打开模型对话页面 https://taotoken.net/models 直接试一句确认 Key 有效、模型有响应。这一步别跳过因为后面 MCP 工具调用失败时你得能区分是模型链路的问题还是 MCP 配置的问题。对于长期要做编码、跑 Agent 任务的场景可以考虑 Coding Plan https://taotoken.net/coding-plan 额度更划算。接入文档在 https://taotoken.net/doc 里面有各语言的调用示例Java 侧照着改 base_url 和 api_key 就行。把 Key 准备好之后我们进入正题先写一个能被 Claude 桌面端识别的 MCP Server。3. 第一步用 Spring AI 写一个 stdio 模式的 MCP ServerMCP Server 有两种主流传输方式stdio 和 SSE。stdio 是标准输入输出适合本地进程Claude 桌面端直接以子进程方式启动它SSE 是 HTTP 长连接适合独立部署、多客户端远程调用。我们先做 stdio 版本因为它最容易在 Claude 里验证。3.1 添加依赖新建一个 Spring Boot 项目在 pom.xml 里加入 MCP Server 的 starterdependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-mcp-server-spring-boot-starter/artifactId /dependency这个 starter 会把 MCP 服务端的自动配置、工具扫描、stdio 通信都带进来。版本跟随你项目里的 Spring AI BOM 即可。3.2 配置 application.ymlstdio 模式下应用不能以 Web 方式启动否则会占用端口、干扰标准输入输出。配置如下spring: main: web-application-type: none banner-mode: off ai: mcp: server: stdio: true name: my-weather-server version: 0.0.1web-application-type: none是关键少了它启动会报错或者卡住。banner-mode: off是为了避免 banner 输出污染 stdio 通道这个坑我踩过Claude 那边会解析失败。3.3 用 Tool 注解暴露工具方法写一个 Service用Tool标记要被大模型调用的方法用ToolParameter描述参数。这里用 Open-Meteo 这个免费天气 API 做示例不需要申请 KeyService public class WeatherService { private final WebClient webClient; public WeatherService(WebClient.Builder builder) { this.webClient builder.baseUrl(https://api.open-meteo.com/v1).build(); } Tool(description 根据经纬度获取当前天气和未来预报) public String getWeather( ToolParameter(description 纬度例如 39.9042) String latitude, ToolParameter(description 经度例如 116.4074) String longitude) { try { return webClient.get() .uri(uri - uri.path(/forecast) .queryParam(latitude, latitude) .queryParam(longitude, longitude) .queryParam(current, temperature_2m,wind_speed_10m) .queryParam(timezone, auto) .build()) .retrieve() .bodyToMono(String.class) .block(); } catch (Exception e) { return 获取天气失败 e.getMessage(); } } }description写清楚很重要大模型就是靠这段文字判断什么时候该调用这个工具。参数描述也一样写得越具体模型填参数越准。3.4 注册 ToolCallbackProvider在启动类里把工具注册成 BeanSpringBootApplication public class McpServerApplication { public static void main(String[] args) { SpringApplication.run(McpServerApplication.class, args); } Bean public ToolCallbackProvider weatherTools(WeatherService weatherService) { return MethodToolCallbackProvider.builder() .toolObjects(weatherService) .build(); } }打包成 jarmvn clean package -DskipTests记下 jar 的完整路径下一步 Claude 配置里要用绝对路径。4. 第二步在 Claude 桌面端接入并验证Claude 桌面端通过一个 JSON 配置文件来管理 MCP Server。找到配置文件macOS 路径是~/Library/Application Support/Claude/claude_desktop_config.jsonWindows 是%APPDATA%\Claude\claude_desktop_config.json。如果文件不存在就新建一个。4.1 配置文件骨架{ mcpServers: { weather: { command: java, args: [ -Dspring.ai.mcp.server.stdiotrue, -Dspring.main.web-application-typenone, -Dlogging.pattern.console, -jar, /绝对路径/target/mcp-server-0.0.1.jar ], env: {} } } }几个要点-jar后面必须是 jar 的绝对路径相对路径 Claude 解析不到-Dlogging.pattern.console把控制台日志格式清空避免日志混进 stdio 通道-Dspring.main.web-application-typenone再显式声明一次双保险。4.2 重启并确认工具加载保存配置后完全退出 Claude 再重新打开。在输入框附近能看到工具图标点开应该能看到getWeather这个工具说明 MCP Server 被成功拉起、工具被正确注册。4.3 触发一次真实调用输入提示词“帮我查一下北京现在的天气”。Claude 会判断需要调用getWeather自动填入北京对应的经纬度然后返回天气数据。如果能看到温度、风速这些字段说明整条链路通了Claude 发起工具调用 → stdio 传给 Java 进程 → Java 调 Open-Meteo → 结果回传 → 模型组织成自然语言。这一步验证通过说明你的 Java MCP Server 是合格的。接下来把它迁移到 Spring AI Alibaba 生态让 Java 应用自己当客户端。5. 第三步Spring AI Alibaba 作为 MCP Client 调用现在换个角色不再是 Claude 来调你的服务而是你的 Java 应用去调 MCP Server。Spring AI Alibaba 提供了 stdio 和 SSE 两种客户端 starter。5.1 添加客户端依赖dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-mcp-client-spring-boot-starter/artifactId /dependency5.2 配置模型与 MCP 服务器spring: ai: openai: base-url: https://taotoken.net/api api-key: ${TAOTOKEN_API_KEY} chat: options: model: claude-3-5-sonnet mcp: client: stdio: servers-configuration: classpath:/mcp-servers-config.jsonbase-url指向 TaoToken 的 API 地址api-key从环境变量注入别硬编码在文件里。模型名按你实际可用的填。5.3 mcp-servers-config.json在src/main/resources下建这个文件内容和 Claude 那份类似{ mcpServers: { weather: { command: java, args: [ -Dspring.ai.mcp.server.stdiotrue, -Dspring.main.web-application-typenone, -Dlogging.pattern.console, -jar, /绝对路径/target/mcp-server-0.0.1.jar ], env: {} } } }5.4 注入工具并调用SpringBootApplication public class ClientApplication { public static void main(String[] args) { SpringApplication.run(ClientApplication.class, args); } Bean public CommandLineRunner run(ChatClient.Builder builder, ToolCallbackProvider tools, ConfigurableApplicationContext ctx) { return args - { ChatClient chatClient builder.defaultTools(tools).build(); String answer chatClient.prompt(北京的天气怎么样).call().content(); System.out.println( answer); ctx.close(); }; } }defaultTools(tools)这一行就是把 MCP Server 提供的工具挂到 ChatClient 上Spring AI Alibaba 会自动完成工具描述到模型 function calling 格式的适配。启动mvn spring-boot:run日志里会看到 MCP 客户端向服务端发起tools/list请求拿到工具列表然后模型决定调用getWeather返回天气数据。控制台打印出结果说明 Java 作为 MCP Client 的链路也通了。6. 常见报错与排查清单接入过程中最容易卡在几个地方我按出现频率排一下。工具重复注册报错如果你用 SSE 模式可能遇到Multiple tools with the same name。这是 Spring AI 的自动配置类SseHttpClientTransportAutoConfiguration和SseWebFluxTransportAutoConfiguration同时加载导致的两个都去申请了同一批工具。解决办法是在启动类上排除掉其中一个SpringBootApplication(exclude { org.springframework.ai.autoconfigure.mcp.client.SseHttpClientTransportAutoConfiguration.class })Claude 里看不到工具先确认 jar 路径是绝对路径再确认web-application-type: none配了最后看日志有没有输出到 stdout 污染通道。把logging.pattern.console设成空能解决大部分问题。模型不调用工具检查Tool的 description 是不是太模糊模型判断不出该不该用。把描述写具体比如“根据经纬度获取当前天气和未来预报”就比“获取天气”好很多。API Key 无效确认 base-url 是 https://taotoken.net/api Key 从 https://taotoken.net/api-keys 创建别把控制台登录态和 API Key 搞混。模型对话页面 https://taotoken.net/models 可以先单独验证 Key。SSE 模式连不上确认服务端真的在对应端口启动了url配置里别漏了协议头。SSE 服务端需要独立部署不能和 stdio 混在一个进程里。7. 继续往下走到这一步你已经跑通了 Java MCP 的完整链路写 Server、Claude 验证、Spring AI Alibaba 当 Client 调用。接下来可以做的方向很多比如把内部的数据查询接口用Tool包一层让智能体能直接查业务数据或者把 SSE 模式的 Server 部署到内网多个 Agent 共享同一批工具。如果你要长期跑编码类、Agent 类任务建议把模型调用切到 Coding Plan https://taotoken.net/coding-plan 额度更稳。接入细节和更多示例看文档 https://taotoken.net/doc 控制台在 https://taotoken.net/console API Key 管理在 https://taotoken.net/api-keys 。Claude Code 相关的接入说明在 https://taotoken.net/claude-code Anthropic 兼容接入在 https://taotoken.net/anthropic 。MCP 的价值不在于协议本身多复杂而在于它把“工具接入”这件事标准化了。你写的 Java 方法加个注解就能被任何支持 MCP 的智能体调用这才是对 Java 开发者最实在的收益。

相关推荐

【Claude Code】Claude Code 安装指南:从 npm 到 API Key 配置的完整流程
【Claude Code】Claude Code 安装指南:从 npm 到 API Key 配置的完整流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:08:27

网站没人看?这3款免费seo检查工具帮你对齐百度搜索资源平台
网站没人看?这3款免费seo检查工具帮你对齐百度搜索资源平台

网站没人看?这3款免费seo检查工具帮你对齐百度搜索资源平台 网站做好了没人访问,是不是让你急得挠头?别急着投广告,先花十分钟用免费工具查一下你的站。很多老板以为上线就是终点,其实那才是起点。… · 2026/9/27 22:08:15

网站建设价格低背后藏着坑?3个性能优化点救活你的排名
网站建设价格低背后藏着坑?3个性能优化点救活你的排名

网站建设价格低背后藏着坑?3个性能优化点救活你的排名 别再被那些“99元全包”的建站广告忽悠了。你拿到的往往是一个套壳模板,丑得让人不敢发朋友圈,更别提转化客户了。更扎心的是,这种低价站往往性能拉胯,打开速度像蜗牛,百度爬虫都懒得爬你。… · 2026/9/27 22:08:08

3DGS 端侧重建结果发糊不是算法玄学:采集覆盖率、模糊帧与轨迹回环怎么做门禁
3DGS 端侧重建结果发糊不是算法玄学:采集覆盖率、模糊帧与轨迹回环怎么做门禁

3DGS 端侧重建结果发糊不是算法玄学:采集覆盖率、模糊帧与轨迹回环怎么做门禁 同一台设备拍同一个物体,有时模型完整,有时背面塌掉、纹理发糊。把问题全部归到重建算法,通常会错过真正能控制的变量:输入帧是否清晰、视… · 2026/9/27 23:02:03

Java面试被问烂的JVM,这样答直接加分
Java面试被问烂的JVM,这样答直接加分

别背“堆栈方法区”,画一张内存图面试官问内存模型,不是考你记忆力,是考你脑子里有没有一幅图。你可以说:“我习惯把JVM内存想象成一栋楼。程序计数器是每层楼的门牌号,记录线程执行到哪一行;虚拟机栈是每个… · 2026/9/27 23:01:57

2026 年制造业 ERP 的 4 个新变化——老板该知道的,不是技术细节,而是选择逻辑
2026 年制造业 ERP 的 4 个新变化——老板该知道的,不是技术细节,而是选择逻辑

摘要: 制造业 ERP 市场正在发生几个大变化:AI 功能从噱头变成标配、SaaS 模式从小厂专属变成主流选择、国产 ERP 从"平替"变成"优选"、低代码平台让"定制开发"不再天价。这些变化对制造业老板意味着什么?不是&… · 2026/9/27 23:01:57

视频通话弱网测试笔记:用网络损伤仪把上行限到800kbps
视频通话弱网测试笔记:用网络损伤仪把上行限到800kbps

接着前面的选型记录,这篇把网准通 NetAccura ChaosBridge 网络损伤仪的使用方法写具体一点:怎么接线,怎么把视频通话的上行限到800kbps,以及画面卡住以后去哪里找原因。这一轮适合用DPDK引擎,重点是上下行分开设置、队… · 2026/9/27 23:01:57

ChromaPanel 与其他 React 颜色选择器对比:功能、包体积、可访问性等
ChromaPanel 与其他 React 颜色选择器对比:功能、包体积、可访问性等

选择一个 React 颜色选择器,听起来很简单,直到你开始认真考虑自己的应用到底需要什么。 也许你只需要一个很小的 HEX 颜色选择器。 也许你需要 RGB 和 HSL 控制、预设的调色板、一个吸管工具、从图片中取色、渐变功能、可访问性、表单支持,… · 2026/9/27 23:01:57

告别改需求拖一周,这份做网站计划是保姆级建站教程
告别改需求拖一周,这份做网站计划是保姆级建站教程

告别改需求拖一周,这份做网站计划是保姆级建站教程 改个按钮颜色,建站公司说要排期一周?这种憋屈事,谁干谁心累。 很多设计师转前端的朋友,手里有图,心里有底,但一旦涉及【做网站计划】,就容易卡壳。 今天不整虚的,直接上一份 保姆级建站教程… · 2026/9/27 23:01:57

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码