自留 踩了一些坑记录一下
前言
首先是Spring AI Alibaba的官网,有没了解过的可以先去了解一下。
多个社区都有mcp板块,这里提供三个
阿里云百炼,MCP Server,魔搭社区
这里我用的是魔搭社区,有个npx的文件拿起来会方便一点。
本次使用的是高德地图的MCP,本来是前两天看到支付宝的MCP出了想试一下的,结果发现又是需要上线又是需要营业许可证的,做demo而已没有这种东西,所以改为调高德的MCP。
首先需要系统有node环境再安装npx,没有安装的可以先去node.js官网下载安装一个node.js。安装完成后配置环境变量(我的好像自己配上了),然后在控制台使用npm install -g npx
安装npx即可。
注意1:我在安装后在IDEA的控制台执行命令会报【无法加载文件XXX,因为在此系统上禁止运行脚本。】,此时先用管理员身份打开Windows PowerShell,选择管理员身份运行。
执行set-executionpolicy remotesigned
更改策略。
1.准备
打开魔搭社区,进入MCP广场。
选择高德地图的MCP。
阅读首页介绍,发现需要高德的API KEY 可以先去高德开放平台申请一个。申请完成后,点击右上角的Npm。
这里有两个东西,首先拿到右上角的命令,打开cmd并执行以下载安装。
下面这段先留着后续有用到。
2.配置
打开IDEA,新建Spring Boot项目,在pom文件中引入Spring AI Alibaba的包和Spring Ai Mcp Client的包。
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter</artifactId>
<version>1.0.0-M6.1</version>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId>
<version>1.0.0-M6</version>
</dependency>
在配置文件增加大模型相关的配置
spring:
ai:
dashscope: //这里使用的是阿里云DashScope系列模型
api-key: xxxxxxxxxxx //你对接ai大模型对应平台的key(我用的是百炼平台的key)
chat:
options:
model: qwen-max //使用的大模型
mcp:
client:
enabled: true
name: mcp-client
version: 1.0.0
type: SYNC
request-timeout: 60000
stdio:
servers-configuration: classpath:/mcp-servers-config.json //指定MCP服务器配置文件路径
在自己的classpath下创建mcp-servers-config.json,把刚才拿到的那段npx配置拿过来。
{
"mcpServers": {
"amap-maps": {
"command": "npx.cmd",
"args": [
"-y",
"@amap/amap-maps-mcp-server"
],
"env": {
"AMAP_MAPS_API_KEY": "" //刚才在高德开放平台拿到的API KEY
}
}
}
}
注意2:这里原本文件中的"command": "npx"
需要改为"command": "npx.cmd"
,因为在java中不会自动补全拓展名,会导致java无法找到该文件,最终在启动时会报【系统找不到指定文件】。
至此,配置完成,可以实际调用试一下了。
3.使用
此次尝试的是高德中查询天气的服务。
先看一下没有调用mcp的适合直接请求大模型的结果。
很明显,大模型无法直接获取天气情况。
增加MCP支持
其实只是在原本由ChatClient构建的基础上多了一步把ToolCallbackProvider放到defaultTools中。
看看效果: