新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/27 22:08:36来源:尧图网络
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 开发者最实在的收益。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

用Python打造销售数据可视化看板:Pandas+Flask+ECharts实战 2026/9/27 23:04:37

用Python打造销售数据可视化看板:Pandas+Flask+ECharts实战

简介:这是一套完整的Python销售数据可视化看板项目,面向希望提升数据可视化技能的数据分析学习者与业务人员,解决如何用Python高效构建交互式销售数据看板的问题。压缩包共3个文件,涵盖Python源码、Excel销售数据集及依赖说明文本…

阅读更多 →
卫星链路计算中信号带宽的顶层设计:从符号速率到链路余量 2026/9/27 23:04:37

卫星链路计算中信号带宽的顶层设计:从符号速率到链路余量

简介:这是一套基于MATLAB的卫星链路计算工具包,面向卫星通信工程师与相关研究者,可用于星地链路中的信号带宽、空间损耗、天线增益及链路预算等关键参数计算。压缩包为RAR格式,大小约4KB,包含多个.m脚本文件&#xff0…

阅读更多 →
Python销售数据可视化看板实战:从数据清洗到Flask部署全流程 2026/9/27 23:04:37

Python销售数据可视化看板实战:从数据清洗到Flask部署全流程

简介:一份基于Python的销售数据可视化看板实战项目,主要面向有编程基础、希望提升数据分析与界面展示能力的开发者。项目以超市销售记录为样本,覆盖数据清洗、指标计算、图表绘制和看板搭建等环节,采用Pandas处理原始数据&#xf…

阅读更多 →
Django+Vue2股票数据可视化:难点不在画图在数据管道 2026/9/27 23:04:37

Django+Vue2股票数据可视化:难点不在画图在数据管道

简介:这是一套基于Django后端与Vue2前端构建的股票数据可视化与新闻实时更新Web应用系统完整源码,适合想通过综合项目学习前后端分离、数据采集与可视化展示的开发者。项目中股票市场新闻抓取、交互式搜索、多维度数据展示及用户个人中心等模块均已编码实…

阅读更多 →
镜像安全:扫描、签名与软件供应链 2026/9/27 23:04:37

镜像安全:扫描、签名与软件供应链

TL;DR 镜像扫描解决已知漏洞,是安全基线;镜像签名确保内容可信,防篡改保障;SBOM 提供供应链透明度,便于审计追溯;Kyverno 在准入阶段强制校验签名与漏洞策略;建议从 CI 扫描起步,逐步…

阅读更多 →
SpringBoot+Vue外卖系统课设全指南:从框架搭建到答辩避坑 2026/9/27 23:04:31

SpringBoot+Vue外卖系统课设全指南:从框架搭建到答辩避坑

简介:一套基于 SpringBoot 与 Vue 的外卖管理系统源码及配套数据库,目标是帮助 Java 课程设计、期末大作业和毕业设计阶段的学生,以较低门槛完成一个前后端分离且能稳定运行的管理系统。压缩包共 192 个文件,整体 26.55MB&#xf…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉