介绍:将本地的MCP服务注册至Nacos,方便其他AI服务调用
概念解说
MCP(Model Context Protocol),模型上下文协议,用于大模型连接外部"数据源"的一种协议。
spring-ai版本:1.0.0
spring-ai-alibaba版本:1.0.0.3-SNAPSHOT
jdk版本:17
步骤一:引入依赖
版本管理
<properties>
<spring-ai.version>1.0.0</spring-ai.version>
<spring-ai-alibaba.version>1.0.0.3-SNAPSHOT</spring-ai-alibaba.version>
</properties>
具体依赖
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-nacos2-mcp-server</artifactId>
<version>${spring-ai-alibaba.version}</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- MCP Server WebFlux 支持(也可换成 WebMvc) -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
<version>${spring-ai.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-bom</artifactId>
<version>${spring-ai-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
由于此次引入"1.0.0.3-SNAPSHOT"版本的依赖,需要配置镜像源拉取
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<id>sonatype</id>
<name>OSS Sonatype</name>
<url>https://oss.sonatype.org/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>aliyunmaven</id>
<name>aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
步骤二:启动nacos
nacos版本为2,需要与依赖版本保持一致
cmd回车,执行命令
startup.cmd -m standalone
出现此界面,说明启动成功
浏览器访问
http://localhost:8848/nacos/#/login
默认账号和密码都为nacos
新建一个命名空间,生成的ID需要填写至配置信息中
步骤三:配置信息
application.yml
spring:
application:
name: mcp-weather-server-test
ai:
mcp:
server:
name: weather-mcp-server
version: 1.0.0
type: async
sse-message-endpoint: /mcp/message
capabilities:
tool: true
resource: true
prompt: true
completion: true
alibaba:
mcp:
nacos:
namespace: 命名空间ID
enabled: true
server-addr: localhost:8848
username: 用户名
password: 密码
registry:
enabled: true
service-group: weather-server
步骤四:核心代码
[1]WeatherTool
@Service
@Slf4j
public class WeatherTool {
@Tool(description = "获取天气")
public String getWeather() {
log.info("getWeather()...");
return "小雨,26度";
}
}
[2]WeatherServerApplication
@SpringBootApplication
public class WeatherServerApplication {
public static void main(String[] args) {
SpringApplication.run(WeatherServerApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ weather模块启动成功 ლ(´ڡ`ლ)゙ ");
}
@Bean
public ToolCallbackProvider timeTools(WeatherTool weatherTool) {
return MethodToolCallbackProvider
.builder()
.toolObjects(weatherTool)
.build();
}
}
步骤五:启动
验证
经过验证,工具列表已加载
在服务列表栏中,MCP Server服务成功注册
注意事项:spring ai alibaba的版本为1.0.0.3-SNAPSHOT
至此,MCP Server服务注册至nacos的Demo版结束啦,大家可根据业务需求自定义,完成AI服务调度,类似于SpringCloud Alibaba!
本人正在打造技术交流群,欢迎志同道合的朋友一起探讨,一起努力,通过自己的努力,在技术岗位这条道路上走得更远。QQ群号:925317809 备注:技术交流 即可通过!
加入技术群可以获取资料,含AI资料、Spring AI中文文档等,等你加入~