跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaAIjava

Spring AI MCP Server 集成与源码解析

Spring AI MCP Server通过Java SDK和Spring Boot扩展提供MCP协议支持,示例展示了工具注册、客户端调用流程及关键源码分析。核心组件包括McpSchema协议定义、同步/异步客户端封装及自动配置类,实现AI模型与外部服务的标准化交互。

涅槃凤凰发布于 2026/2/6更新于 2026/10/1793 浏览
Spring AI MCP Server 集成与源码解析

概述

本文介绍Spring AI MCP Server的集成方式、工具注册及客户端调用示例,并分析相关源码实现。

MCP Java SDK依赖配置

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>io.modelcontextprotocol.sdk</groupId>
      <artifactId>mcp-bom</artifactId>
      <version>0.8.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
<dependency>
  <groupId>io.modelcontextprotocol.sdk</groupId>
  <artifactId>mcp</artifactId>
</dependency>
<dependency>
  <groupId>io.modelcontextprotocol.sdk</groupId>
  <artifactId>mcp-spring-webflux</>


  io.modelcontextprotocol.sdk
  mcp-spring-webmvc

artifactId
</dependency>
<dependency>
<groupId>
</groupId>
<artifactId>
</artifactId>
</dependency>

Spring AI MCP扩展依赖

<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
</dependency>

工具注册示例

配置类

@Bean
public ToolCallbackProvider weatherTools(WeatherService weatherService) {
  return MethodToolCallbackProvider.builder()
    .toolObjects(weatherService)
    .build();
}

@Bean
public ToolCallback toUpperCase() {
  return FunctionToolCallback.builder("toUpperCase", input -> input.input().toUpperCase())
    .inputType(TextInput.class)
    .description("Convert text to uppercase")
    .build();
}

WeatherService实现

@Service
public class WeatherService {
  private static final String BASE_URL = "https://api.weather.gov";
  private final RestClient restClient;

  public WeatherService() {
    this.restClient = RestClient.builder()
      .baseUrl(BASE_URL)
      .defaultHeader("Accept", "application/geo+json")
      .defaultHeader("User-Agent", "WeatherApiClient/1.0")
      .build();
  }

  @Tool(description = "Get weather forecast by location")
  public String getWeatherForecastByLocation(double latitude, double longitude) {
    var points = restClient.get()
      .uri("/points/{lat},{lon}", latitude, longitude)
      .retrieve()
      .body(Points.class);
    // 处理预报数据...
  }

  @Tool(description = "Get weather alerts for state")
  public String getAlerts(String state) {
    Alert alert = restClient.get()
      .uri("/alerts/active/area/{state}", state)
      .retrieve()
      .body(Alert.class);
    // 处理警报数据...
  }
}

客户端调用示例

var transport = new HttpClientSseClientTransport("http://localhost:8080");
var client = McpClient.sync(transport).build();
client.initialize();

// 获取可用工具列表
ListToolsResult tools = client.listTools();

// 调用天气查询工具
CallToolResult result = client.callTool(
  new CallToolRequest("getWeatherForecastByLocation",
    Map.of("latitude", "47.6062", "longitude", "-122.3321"))
);

核心源码解析

McpSchema协议定义

定义了生命周期方法(initialize/ping)、工具操作(tools/list/call)等标准接口。

McpSyncClient同步封装

提供阻塞式API,内部委托McpAsyncClient实现异步操作。

自动配置类

  • McpServerAutoConfiguration: 注册同步/异步服务器实例
  • McpWebMvcServerAutoConfiguration: 配置WebMVC SSE传输层

总结

Spring AI MCP Server通过标准化协议实现AI模型与外部工具的桥接,支持工具注册、资源管理和提示词交互。核心架构采用分层设计,底层协议由Model Context Protocol规范定义,上层通过Spring Boot自动配置简化集成流程。

目录

  1. 概述
  2. MCP Java SDK依赖配置
  3. Spring AI MCP扩展依赖
  4. 工具注册示例
  5. 配置类
  6. WeatherService实现
  7. 客户端调用示例
  8. 核心源码解析
  9. McpSchema协议定义
  10. McpSyncClient同步封装
  11. 自动配置类
  12. 总结

更多推荐文章

查看全部
  • Copilot Pro 使用指南:模型配额与性价比策略
  • JNI 开发:C++ Debug 正常 Release 返回 NaN 原因解析
  • 基于 HOG 特征与 SVM 的目标检测实现及 Python 代码
  • 腾讯混元 Hunyuan3D-Part:3D 部件生成架构解析
  • VSCode Copilot 配置并使用 DeepSeek 模型指南
  • 大模型 LLM:提示工程(Prompt Engineering)核心解读
  • 前端函数防抖原理与实战实现
  • OpenClaw Web UI 访问报错 Not Found 排查与修复
  • FARS 全自动科研系统:从多智能体架构到工业化科研范式
  • DreamShaper XL Lightning 模型发布与使用指南
  • OpenHarmony 中使用 web_socket 实现跨平台 WebSocket 通信
  • AD9361 FPGA 纯 Verilog 驱动:LVDS 接口无依赖库
  • Promise.resolve 方法详解
  • VRCT 语音翻译工具在 VRChat 中的配置与使用指南
  • MySQL 8.0 安装与 Workbench 配置实战指南
  • 操作系统迁移至新 SSD 的两种实用方法
  • 鸿鹄电子招投标系统功能模块详解
  • 小型 AIS 接收机 dAI01 连接配置与使用指南
  • 鸿蒙金融理财全栈项目:风险控制、合规审计与产品创新
  • 基于 FPGA 的北斗导航自适应抗干扰算法设计与实现

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online