Spring AI + MCP + SQLite 数据库实战指南
在上一篇文章中,我们学习了如何使用 Spring AI 集成 Model Context Protocol (MCP),并通过文件系统实现本地目录内容的访问。本文将继续深入实践,介绍如何将SQLite 数据库使用自然语言查询数据库表结构执行 SQL 查询并返回结果分析数据分布与统计信息自动生成建表语句与数据优化建议我们将基于示例项目,演示完整的部署流程、核心代码解析以及实际应用场景。
目录
- 系列篇章💥
- 前言
- 一、开发环境准备
-
- (一)Java 版本要求
- (二)Maven 构建工具
- (三)OpenAI API 密钥
- (四)Node.js 和 npx 命令
- (五)安装uvx 命令
- (六)安装SQLite 数据库
- 二、Maven 依赖配置
-
- (一)MCP客户端依赖配置
- (二)SpringAI相关依赖包版本管理
- 三、MCP客户端配置
- 四、核心代码解析:[Application.java]
-
- 核心逻辑说明:
- 五、MCP 工具注册与调用机制
-
- (一)工具自动注册
- (二)工具调用过程
- 六、完整运行流程详解
-
- (一)启动 SQLite MCP 服务
- (二)LLM 发起提问
- (三)MCP 客户端转发请求
- (四)返回结果并生成最终回答
- 七、部署与测试
-
- (一)构建项目
- (二)运行应用
- 八、结语
前言
在上一篇文章中,我们学习了如何使用 Spring AI 集成 Model Context Protocol (MCP),并通过文件系统实现本地目录内容的访问。
本文将继续深入实践,介绍如何将 SQLite 数据库 封装为 LLM 可调用的工具,从而实现:
- 使用自然语言查询数据库表结构
- 执行 SQL 查询并返回结果
- 分析数据分布与统计信息
- 自动生成建表语句与数据优化建议
我们将基于 spring-ai-mcp-sqlite 示例项目,演示完整的部署流程、核心代码解析以及实际应用场景。
一、开发环境准备
(一)Java 版本要求
本项目采用Java 17进行编译和运行,请务必确保你的开发环境已成功安装JDK 17。你可以在命令行中输入以下命令进行检查:
java -version
输出应类似如下内容:
openjdk version "17.0.8" 2023-07-18
OpenJDK Runtime Environment (build 17.0.8+7)
OpenJDK 64-Bit Server VM (build 17.0.8+7, mixed mode, sharing)
(二)Maven 构建工具
确保你已安装 Maven 并配置好环境变量:
mvn -v
输出应类似如下内容:
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: D:\Program Files (x86)\apache-maven-3.8.8
Java version: 17.0.12, vendor: Oracle Corporation, runtime: D:\Program Files\jdk-17.0.12
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
(三)OpenAI API 密钥
你需要注册 OpenAI 官网 获取 API Key(国内可以直接使用中转地址),并设置为环境变量:
export OPENAI_API_KEY="your_openai_api_key"
export OPENAI_API_URL="https://api.openai.com/v1"
注意:出于安全考虑,不建议将密钥硬编码在代码中,推荐使用环境变量或配置中心进行管理。
(四)Node.js 和 npx 命令
MCP 客户端默认通过 npx 启动 Brave Search 服务,因此需要安装 Node.js 并配置 npm 和 npx:
访问:https://nodejs.org 下载Node.js ,安装node 时注意勾选npm ;配置环境变量。
npx 是 npm 自带的工具,用于快速执行包中的命令。安装完成后,npx 也会自动可用。
检查版本信息:
node -v
npm -v
npx -v
配置 npm 全局模块路径(可选)
打开安装目录,新建两个文件夹:node_global 和 node_cache。
以管理员身份打开命令提示符,输入以下命令(将路径替换为你创建的文件夹路径):
npm config set prefix “你的路径\node_global”
npm config set cache “你的路径\node_cache”
(五)安装uvx 命令
MCP 客户端默认通过 uvx 启动 SQLite 服务,因此需要安装 Python 的 uv 包管理器:
pip install uv
验证是否安装成功:
uv --version
(六)安装SQLite 数据库
- 下载预编译的二进制文件
- 访问 SQLite 官方下载页面,在 Precompiled Binaries for Windows 区域找到以下文件:

- 解压文件:创建一个文件夹,例如
C:\sqlite。 - 配置环境变量:将
C:\sqlite添加到系统的 PATH 环境变量中。 - 验证安装
- 打开命令提示符(CMD),输入以下命令并按回车:
sqlite3
- 如果安装成功,将显示类似以下内容:
SQLite version 3.50.1 2025-06-06 14:52:32
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
二、Maven 依赖配置
(一)MCP客户端依赖配置
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-client</artifactId>
</dependency>
</dependencies>
spring-ai-starter-model-openai:提供 OpenAI 模型调用支持;spring-ai-starter-mcp-client:提供 MCP 客户端实现,支持 STDIO 与 SSE 传输方式。
(二)SpringAI相关依赖包版本管理
版本管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
部分通过引入spring-ai-bom,实现了对SpringAI相关依赖包版本的统一管理。这样,在项目中使用Spring AI相关依赖时,无需在每个依赖声明中单独指定版本号,只需遵循spring-ai-bom中定义的版本即可,极大地简化了依赖管理工作,同时确保了项目中依赖版本的一致性和稳定性。
三、MCP客户端配置
server.port=8000
spring.application.name=mcp
spring.main.web-application-type=none
spring.ai.openai.api-key=${OPENAI_API_KEY}
spring.ai.openai.base-url=${OPENAI_API_URL}
四、核心代码解析:[Application.java]
该类是 Spring Boot 主启动类,负责初始化 MCP 客户端并与 LLM 进行交互。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public CommandLineRunner predefinedQuestions(ChatClient.Builder chatClientBuilder,
List<McpSyncClient> mcpClients,
ConfigurableApplicationContext context) {
return args -> {
var chatClient = chatClientBuilder
.defaultToolCallbacks(new SyncMcpToolCallbackProvider(mcpClients))
.build();
System.out.println("正在运行预定义问题并获取 AI 模型的回答:\n");
String question1 = "你能连接到我的 SQLite 数据库,并告诉我有哪些产品以及它们的价格吗?";
System.out.println("问题: " + question1);
System.out.println("助手: " + chatClient.prompt(question1).call().content());
// 更多问题...
context.close();
};
}
@Bean(destroyMethod = "close")
public McpSyncClient mcpClient() {
var stdioParams = ServerParameters.builder("uvx")
.args("mcp-server-sqlite", "--db-path", getDbPath())
.build();
var mcpClient = McpClient.sync(new StdioClientTransport(stdioParams))
.requestTimeout(Duration.ofSeconds(10)).build();
var init = mcpClient.initialize();
System.out.println("MCP Initialized: " + init);
return mcpClient;
}
private static String getDbPath() {
return "D:\\github\\spring-ai-cookbook\\spring-ai-mcp-cookbook\\spring-ai-mcp-sqlite\\test.db";
}
}
核心逻辑说明:
| 组件 | 作用 |
|---|---|
ServerParameters |
构造 MCP 服务器启动参数 |
StdioClientTransport |
使用标准输入输出连接 MCP 服务 |
McpClient.sync(...) |
创建同步 MCP 客户端实例 |
initialize() |
初始化与 MCP 服务器的连接 |
SyncMcpToolCallbackProvider |
注册工具回调,供 LLM 调用 |
五、MCP 工具注册与调用机制
(一)工具自动注册
Spring AI 会自动扫描并注册所有 MCP 服务,通过如下方式注入到 ChatClient 中:
var chatClient = chatClientBuilder
.defaultToolCallbacks(new SyncMcpToolCallbackProvider(mcpClients))
.build();
这一步实现了 LLM 对 MCP 工具的透明调用。
(二)工具调用过程
当用户提问时,LLM 会根据语义决定是否需要调用 MCP 工具。如果需要,它会:
- 识别出需调用
queryDatabase工具; - 构造工具调用请求(JSON Schema);
- MCP 客户端接收到调用指令;
- 调用本地 SQLite 服务执行 SQL 查询;
- 返回结果给 LLM,生成最终回答。
六、完整运行流程详解
(一)启动 SQLite MCP 服务
Spring AI 默认通过 uvx 启动 SQLite 服务,命令如下:
uvx mcp-server-sqlite --db-path test.db
该服务会作为一个独立进程运行,等待来自 LLM 的上下文请求。
(二)LLM 发起提问
用户输入:
你能连接到我的 SQLite 数据库,并告诉我有哪些产品以及它们的价格吗?
LLM 分析后判断需要调用外部工具获取数据库内容 → 自动调用 listTables / queryTable 工具。
(三)MCP 客户端转发请求
Spring AI 的 [McpSyncClient]会将请求转发给 SQLite 服务,完成数据库查询。
(四)返回结果并生成最终回答
SQLite 服务返回查询结果后,LLM 会将其整合为自然语言回复,例如:
当前数据库中没有可用的数据表,请先创建一张产品表。
七、部署与测试
(一)构建项目
mvn clean package
(二)运行应用
java -jar target/spring-ai-filesystem-demo-0.0.1-SNAPSHOT.jar
程序会自动执行预设问题并输出结果。(以下是idea直接启动应用程序控制台输出)
八、结语
通过本文的实践,我们完成了 Spring AI 与 MCP 协议的集成,掌握了以下关键技能:
✅ 如何在 Spring Boot 中集成 MCP 客户端
✅ 如何配置并启动 SQLite MCP 服务
✅ 如何构建自然语言问答流程
✅ 如何自动调用 MCP 工具访问本地数据库
✅ 完整部署与测试流程
这是 Spring AI 集成 MCP 协议的重要一步,后续我们将继续深入,介绍如何构建企业级 MCP 工具平台、支持多源搜索、动态工具注册等内容。
如何学习AI大模型 ?
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
👉1.大模型入门学习思维导图👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
👉2.AGI大模型配套视频👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。

👉3.大模型实际应用报告合集👈
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

👉4.大模型实战项目&项目源码👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战项目来学习。(全套教程文末领取哈)
👉5.大模型经典学习电子书👈
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
👉6.大模型面试题&答案👈
截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)
为什么分享这些资料?
只要你是真心想学AI大模型,我这份资料就可以无偿分享给你学习,我国在这方面的相关人才比较紧缺,大模型行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术,如果日后有什么学习上的问题,欢迎找我交流,有技术上面的问题,我是很愿意去帮助大家的!
这些资料真的有用吗?
这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
更多推荐



所有评论(0)