当前位置: 首页 > 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是:

相关文章:

  • [三分钟]web自动化测试(二):selenium自动化测试常用函数(上)
  • HarmonyOS Next~鸿蒙系统流畅性技术解析:预加载与原生架构的协同进化
  • vite.config.ts 的详细配置项说明、完整代码示例及表格总结
  • Nacos简介—4.Nacos架构和原理三
  • 英语中时间的表达
  • 数据一致性问题剖析与实践(四)——竞态条件竞争导致的一致性问题
  • C++入门小馆: STL 之queue和stack
  • JavaScript输出数据的方法
  • 解决qnn htp 后端不支持boolean 数据类型的方法。
  • 如何创建并使用极狐GitLab 部署令牌?
  • shell命令二
  • 迈锐思C1pro插件安装包【附百度网盘链接】
  • 用户行为检测技术解析:从请求头到流量模式的对抗与防御
  • DataStreamAPI实践原理——快速上手
  • 【quantity】2 Unit 结构体(unit.rs)
  • S08-电机功能块讨论
  • 全新升级:BRAV-7601-T003高性能无风扇AI边缘计算系统,助力智能未来!
  • 智能指针之设计模式5
  • Xray-安全评估工具
  • 19.TVS特性与使用注意事项
  • 梅花画与咏梅诗
  • 五矿地产:今年要确保债务“不爆雷”、交付“不烂尾”
  • 苏炳添任暨南大学体育学院院长
  • 胃病、闭经、湿疹、失明:藏在疾病后的情绪问题
  • 马上评丨电子屏不如黑板?解决问题不能靠怀旧
  • 秭归“橘颂”:屈原故里打造脐橙全产业链,创造12个亿元村,运输用上无人机