MCP Server服务注册至Nacos

70 阅读2分钟

介绍:将本地的MCP服务注册至Nacos,方便其他AI服务调用

概念解说

MCP(Model Context Protocol),模型上下文协议,用于大模型连接外部"数据源"的一种协议。

image.png

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

image.png

nacos版本为2,需要与依赖版本保持一致

image.png

cmd回车,执行命令

startup.cmd -m standalone

出现此界面,说明启动成功

image.png

浏览器访问

http://localhost:8848/nacos/#/login

image.png

默认账号和密码都为nacos

image.png

新建一个命名空间,生成的ID需要填写至配置信息中

image.png

步骤三:配置信息

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();
    }
}

步骤五:启动

image.png

验证

image.png

经过验证,工具列表已加载

image.png

在服务列表栏中,MCP Server服务成功注册

image.png

注意事项:spring ai alibaba的版本为1.0.0.3-SNAPSHOT

image.png

至此,MCP Server服务注册至nacos的Demo版结束啦,大家可根据业务需求自定义,完成AI服务调度,类似于SpringCloud Alibaba!

本人正在打造技术交流群,欢迎志同道合的朋友一起探讨,一起努力,通过自己的努力,在技术岗位这条道路上走得更远。QQ群号:925317809 备注:技术交流 即可通过!

加入技术群可以获取资料,含AI资料、Spring AI中文文档等,等你加入~