> 发布日期:2025年9月25日
> 作者:AI 助手
> 适用对象:Java 开发者、Spring Boot 工程师、AI 应用集成者
> 目标:使用 Spring Boot 3 与 Spring AI 快速搭建一个符合 Model Context Protocol (MCP) 规范的服务端,并通过 SSE (Server-Sent Events) 协议被 Cherry Studio 等 AI 客户端调用。


目录

  • 1. 背景介绍
  • 2. 什么是 Model Context Protocol (MCP)
  • 3. 什么是 Cherry Studio
  • 4. 环境准备
  • 5. 创建 Spring Boot 项目
  • 6. 添加 Spring AI MCP Server 依赖
  • 7. 实现 MCP Server 工具
  • 8. 注册 ToolCallbackProvider
  • 9. 配置应用属性
  • 10. 启动并测试服务
  • 11. 在 Cherry Studio 中配置 MCP 客户端
  • 12. 常见问题
  • 13. 结语

1. 背景介绍

随着大语言模型(LLM)的发展,让 AI 能够安全、可靠地调用外部系统(如数据库、API、业务逻辑)成为关键需求。Model Context Protocol (MCP) 应运而生,它为 LLM 提供了一种标准化的方式与外部工具交互。

本文将指导你使用 Spring BootSpring AI 框架,搭建一个基于 SSE (Server-Sent Events) 传输的 MCP Server,使其能够被 Cherry Studio 等支持 MCP 的 AI 客户端发现和调用。


2. 什么是 Model Context Protocol (MCP)

Model Context Protocol (MCP) 是由 Anthropic 推出的开放协议,旨在标准化 LLM 与外部工具、数据源之间的交互。其核心思想是:

  • 工具发现:AI 客户端可以查询 MCP Server 提供了哪些可用的工具(Tools)。
  • 工具调用:AI 模型在推理过程中,如果需要执行特定操作(如查询数据库、调用 API),可以调用 MCP Server 上注册的工具。
  • 安全隔离:MCP Server 作为代理,执行具体的业务逻辑,确保 LLM 不直接访问敏感系统。

MCP 通常通过 SSE (Server-Sent Events)STDIO 进行通信。本文采用 SSE,因为它基于 HTTP,易于集成和调试。


3. 什么是 Cherry Studio

Cherry Studio 是一款支持 MCP 协议的 AI 应用开发平台。它允许开发者连接 MCP Server,并在对话流程中自动调用你提供的工具,从而构建功能强大的 AI 助手。


4. 环境准备

确保你的开发环境满足以下要求:

  • JDK 17 或以上版本
  • Maven 3.6+
  • Spring Boot 3.4.3 或以上(推荐 3.4+)
  • Spring AI 1.0.0-M8(里程碑版本,支持 MCP)
  • IDE:IntelliJ IDEA 或 VS Code
  • Cherry Studio(用于测试)

5. 创建 Spring Boot 项目

使用 Spring Initializr 创建项目:

  • Project: Maven
  • Language: Java
  • Spring Boot: 3.4.3
  • Group: top.dreamcenter (参考博客)
  • Artifact: mcp
  • Dependencies:
    • Spring Web
    • Spring Boot Starter Test (可选)

生成并下载项目,解压后导入 IDE。


6. 添加 Spring AI MCP Server 依赖

这是最关键的一步。在 pom.xml 文件的 <dependencies> 标签中,添加 Spring AI 的 MCP Server 启动器依赖。

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

7. 实现 MCP Server 工具

MCP Server 的核心是定义可被 AI 调用的“工具”。这些工具是普通的 Spring Service 类,使用 @Tool 注解标记。

7.1 创建工具服务类

创建 NumService.java

package top.dreamcenter.mcp.service;

import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;

@Service
public class NumService {

    /**
     * 判断一个数是否为双数(偶数)
     * @param num 待判断的数字
     * @return 判断结果描述
     */
    @Tool(description = "判断是否是双数")
    public String judgeIfOddJava(@ToolParam(description = "待判断的数") Integer num) {
        return num + (num % 2 == 0 ? "是双数" : "不是双数");
    }
}

8. 注册 ToolCallbackProvider

为了让 MCP Server 知道有哪些工具可用,需要将工具类注册到 ToolCallbackProvider

创建 ToolCallbackProviderRegister.java

package top.dreamcenter.mcp.config;

import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import top.dreamcenter.mcp.service.NumService;

@Configuration
public class ToolCallbackProviderRegister {

    @Bean
    public ToolCallbackProvider numTools(NumService numService) {
        return MethodToolCallbackProvider.builder()
                .toolObjects(numService) // 注册工具类实例
                .build();
    }
}

9. 配置应用属性

src/main/resources/application.propertiesapplication.yml 中配置服务器端口。

application.yml:

spring:
  application:
    name: mcp-server
  ai:
    mcp:
      server:
        name: mcp-server # mcp-server名称
        sse-endpoint: sse # 启动sse协议,并指定端点路径为/sse
        enabled: true # 组件启用

server:
  port: 23990

10. 启动并测试服务

10.1 启动应用

运行主类 McpApplication.java,服务将启动在 http://localhost:23990

10.2 验证 MCP 服务

MCP Server 会自动暴露一个 SSE 端点。你可以通过浏览器或 curl 访问以下 URL 查看服务是否正常:

curl http://localhost:23990/sse

你将看到一个持续的 SSE 连接,MCP Server 会在此通道上与客户端(如 Cherry Studio)进行通信,包括发送工具列表和接收调用请求。

10.3 测试 RESTful 接口(可选)

虽然 MCP 使用 SSE,但你也可以为同一个业务逻辑提供传统的 REST API。

创建 NumController.java

package top.dreamcenter.mcp.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import top.dreamcenter.mcp.service.NumService;

@RestController
@RequestMapping("/api/num")
public class NumController {

    @Autowired
    private NumService numService;

    @GetMapping("/judge/{num}")
    public String judgeIfOddJava(@PathVariable Integer num) {
        return numService.judgeIfOddJava(num);
    }
}

测试:

curl http://localhost:8000/api/num/judge/4
# 返回: 4是双数

这体现了 MCP 工具接口传统 RESTful API 共存的优势。


11. 在 Cherry Studio 中配置 MCP 客户端

  1. 打开 Cherry Studio,进入项目。
  2. 添加 MCP 客户端组件。
  3. 配置服务地址:http://localhost:23990/sse

eIMScreenShot20250925153413969.jpg

  1. 选择支持 MCP 的 LLM(如 qwen-max)。

  2. 在对话中提问,例如:“判断数字 7 是不是双数。”

  3. Cherry Studio 会通过 MCP 协议调用你的 judgeIfOddJava 工具,并返回结果。


12. 常见问题

问题解决方案
@Tool 方法未被识别检查 ToolCallbackProvider 是否正确注册了 Service Bean
SSE 连接失败检查端口是否正确,防火墙是否阻止,依赖版本是否匹配
LLM 未调用工具检查工具描述 (description) 是否清晰,LLM 是否支持 MCP
依赖冲突确保 Spring Boot 和 Spring AI 版本兼容,参考 Spring AI Reference

13. 结语

通过本文,你已成功使用 Spring BootSpring AI 搭建了一个符合 Model Context Protocol (MCP) 规范的服务端。你定义的业务逻辑现在不仅可以作为传统的 REST API 被调用,更可以作为“工具”被大语言模型直接使用,极大地扩展了 AI 应用的能力边界。

这种架构让你的现有 CRUD 系统能够“秒变”为 AI 助手,是构建智能应用的强大模式。


文档版本:v2.0
最后更新:2025年9月25日
参考:Java springboot实现MCP Server SSE - CSDN博客

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:[email protected]