新闻详情

新闻详情

首页 / 资讯中心 / 详情

Spring AI MCP 浅析:从配置骨架到工具调用链路的可复现验证

发布时间:2026/11/13 10:18:33来源:尧图网络
Spring AI MCP 浅析:从配置骨架到工具调用链路的可复现验证
1. 从一次“工具没被调用”的排查说起Spring AI MCP 是什么简单说它把 Model Context Protocol 这套“模型和外部工具对话的约定”封装进了 Spring 生态让你用几个 Bean 和一段 yml 就能把 Java 方法暴露成模型可调用的工具。它适合谁适合已经在写 Spring Boot、想让大模型真正“动手干活”查库、调接口、算数据而不是只聊天的 Java 开发者。我最初跑官方 demo 时遇到一个很典型的现象模型回复得头头是道但日志里始终没有工具执行记录/sse连上了/mcp/message也返回 200可工具就是没触发。后来发现是工具注册的 Bean 没被ToolCallback收集到加上模型侧压根没拿到工具定义。这类“链路看着通、实际没打通”的问题正是本篇要带你复现并验证的核心。下面我会按“最小可运行示例”的思路走一遍先给application.yml和 MCP 客户端配置骨架再接入 TaoToken 的统一 Key/API 通道最后用一次真实请求确认工具调用链是否闭环。全程本机可跑不需要复杂环境。2. TaoToken 前置统一 Key 与 API 通道在动手写 MCP 之前先把模型访问这一层理顺。Spring AI 支持多种模型后端但配置项分散、Key 管理麻烦。TaoToken 提供统一的 API 通道一个 Key 就能对接多种模型省去在多个平台之间来回切换配置的功夫。你需要先拿到 Key进入控制台创建 API Key地址是 https://taotoken.net/console 。创建后复制保存后面写进application.yml的环境变量里。如果你还没决定用哪个模型可以先去模型对话页面体验一下不同模型的表现地址 https://taotoken.net/model-chat 确认哪个更适合你的工具调用场景。这里要强调一点MCP 的工具调用对模型的“函数调用/工具调用”能力有要求选模型时优先挑支持 tool calling 的。TaoToken 的 API 端点统一为 https://taotoken.net/api 在 Spring AI 里配置base-url时指向它即可不需要额外拼路径。注意Key 不要硬编码进代码提交到仓库用环境变量注入这是基本的安全习惯。3. 可复制配置application.yml 与 MCP 客户端骨架先建一个标准的 Spring Boot 3.x 工程依赖里加上spring-ai-starter-mcp-client和对应模型 starter。下面是application.yml的骨架重点看 MCP 客户端和模型两部分的配置。server: port: 8080 spring: ai: # 模型通道统一走 TaoToken openai: base-url: https://taotoken.net/api api-key: ${TAOTOKEN_API_KEY} chat: options: model: gpt-4o-mini temperature: 0.2 # MCP 客户端配置 mcp: client: enabled: true name: demo-mcp-client version: 1.0.0 # 连接本机启动的 MCP ServerSSE 传输 sse: connections: local-server: url: http://localhost:8081 sse-endpoint: /sse这里TAOTOKEN_API_KEY通过环境变量传入启动命令里带上即可export TAOTOKEN_API_KEY你的Key ./mvnw spring-boot:runMCP 客户端的核心是McpClientAutoConfiguration它会根据你配置的sse.connections自动建立连接并完成协议版本协商、能力协商、工具发现。你不需要手写连接代码Spring 会在启动时把远端 Server 暴露的工具注册成可调用的ToolCallback。如果你要做的是“本机最小示例”建议同时起一个 MCP Server端口 8081客户端8080连过去。Server 端可以用spring-ai-starter-mcp-server-webmvc暴露一个简单工具比如查询当前时间或做加法。这样客户端启动后就能在日志里看到工具发现的结果。4. 工具注册、调用与返回结果的逐步验证配置写完接下来是验证链路是否真的打通。分三步走每步都有可观察的结果。4.1 确认工具被发现启动客户端后在日志里搜索tools或discovered。正常情况下你会看到类似Discovered N tools from server local-server的输出。如果 N 是 0说明 Server 端没注册工具或者连接没建立成功。这一步是很多“链路不通”问题的分水岭。4.2 写一个触发工具调用的接口在客户端工程里加一个简单的 Controller把用户问题转给ChatClient并开启工具调用RestController public class ChatController { private final ChatClient chatClient; public ChatController(ChatClient.Builder builder) { this.chatClient builder .defaultSystem(你可以调用工具来完成任务。) .build(); } GetMapping(/ask) public String ask(RequestParam String q) { return chatClient.prompt() .user(q) .call() .content(); } }Spring AI 会自动把已发现的 MCP 工具注入到ChatClient的调用上下文中。你不需要手动传工具列表前提是工具发现成功。4.3 发一次真实请求并看返回假设 Server 端注册了一个add工具接受两个整数。请求curl http://localhost:8080/ask?q帮我算一下 37 加 58 等于多少预期结果模型不会直接口算而是返回一个工具调用请求客户端执行后把结果回传最终返回类似“37 加 58 等于 95”。同时 Server 端日志会打印工具执行记录。如果你在 Server 端工具方法里加了System.out.println就能看到它被真正调用了。这一步的关键观察点有三个模型是否发起了工具调用、客户端是否转发了执行请求、Server 是否返回了结果。三者缺一链路就没闭环。5. 本篇常见错排查实际跑的时候下面几个坑出现频率最高我按现象、原因、解法列出来。现象可能原因解法日志显示发现 0 个工具Server 端工具未注册为 Bean确认工具方法所在类被Component扫描且返回ToolCallback模型直接回答不调工具模型不支持 tool calling 或未传工具定义换支持工具调用的模型确认ChatClient开启了工具连接/sse超时Server 未启动或端口不对先单独启动 Servercurl http://localhost:8081/sse看是否挂起工具调用报参数解析失败工具入参 schema 与请求不匹配检查工具方法的参数类型和ToolParam描述401/403Key 未注入或 base-url 写错确认环境变量生效base-url 为 https://taotoken.net/api排查顺序建议从“工具发现”开始再到“模型是否发起调用”最后看“Server 是否执行”。这样能快速定位是配置层、模型层还是 Server 层的问题。如果你在接入文档里找不到对应说明可以对照 https://taotoken.net/doc 的接口约定检查请求格式。6. 把链路跑通之后工具调用链一旦闭环后面扩展就顺了加新工具只需在 Server 端注册新 Bean客户端重启后自动发现模型侧无需改动。如果你打算长期做编码类或 Agent 类项目频繁调用模型和工具可以了解下 Coding Plan地址 https://taotoken.net/coding-plan 按需选择更合适的额度方案。回到本篇的目标你要的不是“看起来能跑”而是“确认真的打通”。判断标准很简单——Server 端日志里出现了工具执行记录且最终回答里包含了工具返回的数据。只要这两点满足Spring AI MCP 的链路就算真正跑通了。
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/13 0:43:49

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/13 10:09:00

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/13 0:02:27

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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