先看效果
直接问他数据库有什么表。
大模型调用MySQL进行查询
搭建项目
添加依赖
创建项目后新添加Maven 依赖:
xml
<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>
添加配置
yml
spring:
ai:
dashscope:
api-key: sk-* # API Key
mcp:
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。
安装成功后直接复制:
json
{
"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 类。
java
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) {
// 大模型使用 MCP
chatClient = builder.defaultTools(toolCallbackProvider).build();
}
@GetMapping
public Flux<String> ai(String param) {
return chatClient.prompt(param).stream().content();
}
}
启动项目可以看到:
意味着 MCP 已经被识别到了。
测试一下
最终大模型生成的SQL是: