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是: