当前位置: 首页 > news >正文

Spring AI Alibaba - MCP连接 MySQL

先看效果

直接问他数据库有什么表。
在这里插入图片描述
大模型调用MySQL进行查询
在这里插入图片描述

搭建项目

添加依赖

创建项目后新添加Maven 依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId><version>1.0.0-M6</version>
</dependency><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>1.0.0-M6.1</version>
</dependency>

添加配置

spring:ai:dashscope:api-key: sk-*  # API Keymcp:client:stdio:servers-configuration: classpath:mcp-servers.json #mcp 配置的JSON

创建 mcp-servers.json

可以在: https://bailian.console.aliyun.com/?tab=mcp#/mcp-market 中找合适的MCP 使用,例如直接搜索 MySQL就能找到 MySQL 相关的 MCP:
在这里插入图片描述
点击进入,按照步骤进行本地安装,需要说明的是首先要安装 node 和 npx。
安装成功后直接复制:

{"mcpServers": {"mysql": {"command": "D:\\develop\\nodejs\\npx.cmd","args": ["mysql-mcp-server"],"env": {"MYSQL_HOST": "192.168.74.100","MYSQL_PORT": "3306","MYSQL_USER": "dev","MYSQL_PASSWORD": "Aa@123456","MYSQL_DATABASE": "history"}}}
}

这里和官方的有点不一样。JAVA代码一直报错找不到 npx 命令,所以直接改成了 npx 的绝对路径,然后删掉了 disabled 和 autoApprove。

开发接口

配置好的 MCP 实际上对应的是 ToolCallbackProvider 类。

package cn.salim.ai.controller;import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;@RestController
@RequestMapping("ai")
public class AiController {private ChatClient chatClient;public AiController(ChatClient.Builder builder, ToolCallbackProvider toolCallbackProvider) {// 大模型使用 MCPchatClient = builder.defaultTools(toolCallbackProvider).build();}@GetMappingpublic Flux<String> ai(String param) {return chatClient.prompt(param).stream().content();}}

启动项目可以看到:
在这里插入图片描述

意味着 MCP 已经被识别到了。
测试一下

最终大模型生成的SQL是:

http://www.xdnf.cn/news/171991.html

相关文章:

  • docker--docker的基本环境配置
  • Stable Diffusion 技术全景解析与行业竞争力分析
  • 小程序发布后,不能强更的情况下,怎么通知到用户需要去更新?
  • 图论---最大流(Dinic)
  • Golang 类型方法
  • 【2025最近Java面试八股】Spring中循环依赖的问题?怎么解决的?
  • 层级时间轮的 Golang 实现原理与实践
  • 环境DNA宏条形码技术,鱼类检测引物如何选择?
  • 基于知识库的客户服务工具
  • Unity Post Processing 小记 【使用泛光实现灯光亮度效果】
  • 2P4M-ASEMI机器人功率器件专用2P4M
  • ShardingSphere-Proxy数据隔离方案:不同用户操作不同的数据库
  • C#进阶学习(十五)关于特性的认识
  • Android10.0 Android.bp文件详解,以及内置app编写Android.bp文件
  • Spring 与 ActiveMQ 的深度集成实践(四)
  • 【大模型】图像生成 - Stable Diffusion 深度解析:原理、应用与实战指南
  • 基于STM32、HAL库的ADS1220IRVAR模数转换器ADC驱动程序设计
  • 服务器备份,服务器想要备份文件内容有哪些方法?
  • 【技术派后端篇】技术派并发访问性能优化
  • 多级缓存入门:Caffeine、Lua、OpenResty、Canal
  • 【上位机——MFC】文档
  • C语言结构体赋值与深拷贝
  • django admin 设置字段不可编辑
  • YOLO目标检测之模型剪枝
  • Go RPC 服务方法签名的要求
  • 有关爬虫中数据库的封装——单线程爬虫
  • Tauri窗口与界面管理:打造专业桌面应用体验 (入门系列五)
  • 【Fifty Project - D18】
  • 【2025 最新前沿 MCP 教程 06】构建你的第一个 MCP 服务器:分步指南(源码讲解)
  • 多节管件连接套总成弯扭复合旋转疲劳试验系统