Spring AI:搭建自定义 MCP Server:获取 QQ 信息
Spring AI:搭建自定义 MCP Server:获取 QQ 信息
历史文章
Spring AI:对接DeepSeek实战
Spring AI:对接官方 DeepSeek-R1 模型 —— 实现推理效果
Spring AI:ChatClient实现对话效果
Spring AI:使用 Advisor 组件 - 打印请求大模型出入参日志
Spring AI:ChatMemory 实现聊天记忆功能
Spring AI:本地安装 Ollama 并运行 Qwen3 模型
Spring AI:提示词工程
Spring AI:提示词工程 - Prompt 角色分类(系统角色与用户角色)
Spring AI:基于 “助手角色” 消息实现聊天记忆功能
Spring AI:结构化输出 - 大模型响应内容
Spring AI:Docker 安装 Cassandra 5.x(限制内存占用)&& CQL
Spring AI:整合 Cassandra - 实现聊天消息持久化
Spring AI:多模态 AI 大模型
Spring AI:文生图:调用通义万相 AI 大模型
Spring AI:文生音频 - cosyvoice-V2
Spring AI:文生视频 - wanx2.1-i2v-plus
Spring AI:上手体验工具调用(Tool Calling)
Spring AI:整合 MCP Client - 调用高德地图 MCP 服务
上文中,我们使用 MCP Client 对接了第三方提供的 MCP Server 服务 —— 高德地图。那能否自行搭建一个 MCP Server 服务呢?答案是肯定的。
新建 MCP Server 项目

①:选择 Spring Boot 生成器来创建项目;
②:项目名称填写 xiaoma-mcp-server-qq;
③: 项目存放位置,选择之前创建好的文件夹;
④:项目构建方式选择 Maven;
⑤:填写 Group 组织名称,通常为公司域名倒写,如 com.xiaoma;
⑥: 项目唯一标识符,这里填写 xiaoma-mcp-server-qq;
⑦: 包名填写 com.xiaoma.xiaomamcpserverqq;
⑧: JDK 版本选择 21 版本;
⑨: Java 语言版本也选择 21, 和 JDK 保持一致;
修改 pom.xml
接着,编辑 pom.xml 文件,首先将 Spring Boot 的版本号修改为 3.4.5。另外,添加 Spring AI 框架的依赖管理、 lombok 工具依赖、仓库地址等,如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.xiaoma</groupId>
<artifactId>xiaoma-mcp-server-qq</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>xiaoma-mcp-server-qq</name>
<description>MCP Server: 获取 QQ 信息</description>
<properties>
<!-- JDK 版本 -->
<java.version>21</java.version>
<!-- Spring AI 版本 -->
<spring-ai.version>1.0.0</spring-ai.version>
<lombok.version>1.18.30</lombok.version>
</properties>
<!-- Spring AI 依赖管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 避免编写那些冗余的 Java 样板式代码,如 get、set 方法等 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<name>Central Portal Snapshots</name>
<id>central-portal-snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<!-- 添加华为云、阿里云 maven 中央仓库,提升 Jar 包下载速度 -->
<repository>
<id>huaweicloud</id>
<name>huawei</name>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</repository>
<repository>
<id>aliyunmaven</id>
<name>aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
</project>
MCP Server 三种部署模式
在 Spring AI 项目中,MCP Server 支持三种部署模式,下面是对比表格,涵盖核心特性、适用场景及配置要点:

这里我们选择支持更高并发的 WebFlux 模式,再次编辑 pom.xml, 添加如下依赖:
<!-- MCP Server WebFlux -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>
依赖添加完成后,记得刷新一下 Maven, 将依赖下载到本地 Maven 仓库中。
添加配置
然后,编辑 applicaiton.yml, 添加配置项如下:
server:
port: 8000 # 启动端口号
spring:
ai:
mcp:
server:
type: sync # 处理模式,SYNC 同步或 ASYNC 异步
name: mcp-server-qq # MCP Server 名称
version: 1.0.0 # MCP Server 版本号
# 奶思猫 API 密钥(替换为你自己的)
api-key: xxx
注意:根据 QQ 号查询 QQ 信息,需要调用奶思猫第三方平台的 API, 需要先申请 API Key
具体接口请求方式,可访问官方文档:https://api.nsmao.net/doc/21

可通过 GET 请求,如下,只需要在链接的后面,携带上想要查询的 QQ 号,与 key 密钥两个参数,就能拿到相关数据:
https://api.nsmao.net/api/qq/query?key=你的key&qq=1645253
key 密钥需要先在奶思猫 API 平台上,注册一个新用户,然后登录到管理后台,在 密钥管理 中,复制属于你自己的密钥:

配置 RestTemplate
因为业务涉及到 Http 调用第三方平台,咱们先来配置一下 RestTemplate。新增 /config 包,并新建 RestTemplateConfig 配置类,如下:
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(10000); // 连接超时时间:10秒
factory.setReadTimeout(10000); // 读取超时时间:10秒
return new RestTemplate(factory);
}
}
定义 Tool
接着,新建一个 /tools 包,并通过 @Tool 注解声明一个 “根据 QQ 号获取 QQ 信息” 工具方法,模式和之前定义 Function Call 差不太多(Spring AI:上手体验工具调用(Tool Calling)),代码如下:
@Component
@Slf4j
public class QQTool {
@Resource
private RestTemplate restTemplate;
@Value("${api-key}")
private String apiKey;
@Tool(description = "根据 QQ 号获取 QQ 信息")
public String getQQInfo(String qq) {
log.info("## 获取 QQ 信息, qq: {}", qq);
// 请求第三方接口
String url = String.format("https://api.nsmao.net/api/qq/query?qq=%s&key=%s", qq, apiKey);
String result = restTemplate.getForObject(url, String.class);
log.info("## 返参: {}", result);
return result;
}
}
注册工具
完成以上工作后,编辑 XiaoMaMcpServerQqApplication 启动类,注册工具回调(Tool Callbacks),代码如下:
@SpringBootApplication
public class XiaoMaMcpServerQqApplication {
public static void main(String[] args) {
SpringApplication.run(XiaohaMcpServerQqApplication.class, args);
}
/**
* 注册工具回调(Tool Callbacks)
* @param qqTool
* @return
*/
@Bean
public ToolCallbackProvider qqTools(QQTool qqTool) {
return MethodToolCallbackProvider.builder()
.toolObjects(qqTool)
.build();
}
}
测试
最后,重启后端项目,观察控制台日志,如下图所示,若包含提示信息 Registered tools: 1 , 表示已注册了一个工具,到此,一个简单的 MCP Server 就跑起来了!
更多推荐

所有评论(0)