[Nacos/Docker/MCP] Nacos 3.x : 为 AI MCP 而生
0 序言 : Nacos 3.x 的发布
- 2025年4月28日,Nacos 3.0 正式发布:MCP Registry、安全零信任、链接更多生态
- 升级 MCP Registry,围绕着 MCP 服务管理,MCP 多种类型注册,包含 MCP Server 注册、编排、动态调试和管理,并且提供
Nacos-MCP-Router可以进行 MCP 动态发现,可以自动安装、代理 MCP Server,全生态面向 AI Registry 进行升级;


- 升级安全架构,默认开启鉴权,基础架构一系列升级,作为云原生时代的基础设施级产品,Nacos 3.0 不仅是技术能力的跃升,更是以更高效、安全的方式帮助用户构建云原生 AI 应用架构!
- 做一个对未来1-3年乃至更长时间的技术趋势判断:
对于国内开发者而言,基于 Java 构建的 AI 原生应用架构中,尤其是涉及到 MCP 管理的场景中,则必然少不了 Nacos,少不了 Nacos 3.x。
- 对于 Nacos 1.x / 2.x 不了解的朋友,可参见历往篇章。
1 概述: Nacos 3.x
Nacos 3.x 的诞生背景、特性
Nacos,/nɑ:kəʊs/是 Dynamic Naming and Configuration Service 的首字母简称。
- 其定位于一个更易于构建云原生 AI 应用的动态服务发现、配置管理和服务管理平台。
- 从 2018 年 7 月开始宣布开源以来,已经走过了第六个年头,在这六年里,备受广大开源用户欢迎,收获许多社区大奖。
- Nacos 在社区共同的建设下不断成长,逐步的开始帮助用户解决实际问题,助力企业数字化转型,目前已经广泛的使用在国内的公司中,根据微服务领域调查问卷,Nacos 在注册配置中心领域已经成为国内首选,占有 50%+ 国内市场份额,被各行各业的头部企业广泛使用!

Nacos在 2.X 版本经过近三年的技术演进,已成功实现最初设计的高性能架构与灵活扩展能力,并持续优化产品易用性与安全防护体系。
随着人工智能时代的全面到来,大语言模型(
LLM)的成熟应用正推动行业进入AI原生化发展阶段。
在此背景下,业界对AI原生应用的【开发标准】的探索、AI Agent框架的技术创新、动态Prompt的场景化需求,以及MCP协议、A2A通信规范等技术生态的构建,均对服务治理体系提出了新的要求。
Nacos 3.0架构迭代的就是为了更好的这些技术趋势;
Nacos 3.0将重点构建【面向AI原生架构的服务治理平台】,为 模型 / MCP Server / Agent 等新型业务智能场景架构提供更高效的运行支撑;
Nacos 3.0提升【安全性】,整体架构安全拆分,默认开启鉴权,并且支持动态数据源密钥等零信任方案;多语言生态,覆盖主流开发语言,Python、GoLang、Rust 作为重要部分,发布多个核心组件,可以打通 K8S 生态的 Service / ConfigMap / Secret 数据,面向全场景可以作为统一管理平台;

2 安装部署
Nacos 3.x (standalone版 + Docker 镜像方式)
Step1 拉取镜像
//拉取镜像 - 方式1
docker pull nacos/nacos-server:v3.0.3
//拉取镜像 - 方式2 (第三方镜像仓库)
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nacos/nacos-server:v3.0.3
# 新增镜像标签
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nacos/nacos-server:v3.0.3 docker.io/nacos/nacos-server:v3.0.3
- 查看镜像
docker images
拉取时最好指定版本,可在github查看所需版本: https://github.com/nacos-group/nacos-docker

Step2 启动镜像
- 以 standalone 版为例:
docker run -d --name nacos \
-p 8080:8080 \
-p 8848:8848 \
-p 9848:9848 \
-e MODE=standalone \
-e NACOS_AUTH_TOKEN=dG9rZW50b2tlbnRva2VudG9rZW50b2tlbnRva2VudG9rZW4= \
-e NACOS_AUTH_IDENTITY_KEY=MyAuthorization123456 \
-e NACOS_AUTH_IDENTITY_VALUE=MyToken123456 \
nacos/nacos-server:v3.0.3
- 相比 nacos 2.x ,nacos 3.x 多了【强制】要求配置的3个【环境变量】:
NACOS_AUTH_TOKEN: Nacos 用于生成JWT Token的密钥,使用长度大于32字符的字符串,再经过Base64编码。未配置时,
docker logs nacos会显示错误日志:echo 'env NACOS_AUTH_TOKEN must be set with Base64 String.',如下2个变量的错误日志类比。
基于shell命令获取base64编码的文本的参考命令:echo -n "your_token" | base64
NACOS_AUTH_IDENTITY_KEY: Nacos Server端之间 Inner API的身份标识的Key,必填。NACOS_AUTH_IDENTITY_VALUE: Nacos Server端之间 Inner API的身份标识的Value,必填。
- 如果使用非 Docker 部署,可直接修改
application.properties文件:
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=Authorization
nacos.core.auth.server.identity.value=my_token_value
nacos.core.auth.plugin.nacos.token.secret.key=your_secret_key
重启 Nacos 服务后生效。
如需将配置文件持久化到 mysql,可参考:
Step3 访问验证
- 验证Nacos服务是否启动成功
- 方法1:通过
docker logs -f $container_id命令,查看Nacos服务启动日志,如果看到如下日志,说明服务启动成功。
Nacos started successfully in xxxx mode. use xxxx storage

- 方法2:
curl -X POST "http://<nacos_host>:8848/nacos/v1/auth/login" -d "username=nacos&password=nacosPassword"
如: curl -X POST "http://127.0.0.1:8848/nacos/v1/auth/login" -d "username=nacos&password=nacosPassword"
页面会显示:
Nacos Console default port is 8080, and the path is /.

相比 nacos 2.x ,nacos 3.x 最大的新增特性即:【MCP管理】

3 MCP Server 自动注册与发现
3.1 概述
- 除了在控制台手动注册 MCP Server 服务以外,通过使用Spring AI Alibaba 框架 或者 Nacos MCP Wrapper Python 开发 MCP Server, 可以在 MCP Server启动后动态注册至 Nacos,并对齐进统一管理,支持以下能力:
- MCP Server 服务动态管理:通过 MCP 服务列表增删改查服务信息
- 描述动态生效:工具描述、参数定义等元信息支持运行时热更新,无需重启服务。
- MCP Server Tools 动态开关:支持 MCP Server 服务 Tools 运行时动态开启和关闭,无需重启服务。
- 全链路集成:服务注册信息自动同步至 Nacos 配置中心与服务发现模块,适配 AI Agent 调用需求
- 注册到 Nacos MCP Registry 中的服务,可以通过 Spring AI Alibaba 框架 或者 Nacos MCP Router 进行发现和调用,或者对接 Higress 网关,实现全链路集成。

Higress(AI网关) / Spring AI Alibaba 程序(AI智能应用) / NACOS MCP 管理 的三者关系
3.2 MCP Server 自动注册
使用 Spring AI Alibaba Nacos MCP 框架开发 MCP Server
step1 依赖引入
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-mcp-registry</artifactId>
<version>{1.0.0.3及以上版本}</version>
</dependency>
<!-- MCP Server (WebMVC) -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
<version>{1.0.0及以上版本}</version>
</dependency>
step2 服务定义(实例)
@Service
public class WeatherService {
@Tool(description = "Get weather information by city name")
public String getWeather(@ToolParam(description = "City name") String cityName) {
return "Sunny in " + cityName;
}
}
step3 自动注册参数配置
spring:
application:
name: mcp-nacos-registry-example
ai:
mcp:
server:
name: webmvc-mcp-server # MCP服务名称
version: 1.0.0 # 服务版本
type: SYNC # 调用类型:SYNC(同步)或ASYNC(异步)
instructions: "This mcp server provides time information tools and resources"
alibaba:
mcp:
nacos:
server-addr: # 替换为你的 Nacos 地址
namespace: public # Nacos 命名空间 ID(默认为public)
username: # 开源控制台用户名
password: # 开源控制台密码
register:
enabled: true # 是否开启服务注册
step4 服务启动
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public ToolCallbackProvider weatherTools(WeatherService weatherService) {
return MethodToolCallbackProvider.builder().toolObjects(weatherService).build();
}
}
使用 Nacos MCP Wrapper Python 开发 MCP Server
step1 环境准备
pip install nacos-mcp-wrapper-python
step2 自动注册参数配置
nacos_settings = NacosSettings()
nacos_settings.SERVER_ADDR = "127.0.0.1:8848" # <nacos_server_addr> e.g. 127.0.0.1:8848
nacos_settings.NAMESPACE= "public" # Nacos 命名空间ID
nacos_settings.USERNAME="" #开源控制台用户名
nacos_settings.PASSWORD="" #开源控制台密码
step3 MCP Server 代码编写
from nacos_mcp_wrapper.server.nacos_mcp import NacosMCP
from nacos_mcp_wrapper.server.nacos_settings import NacosSettings
import logging
import nacos_login as nacos_login
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
# Create an MCP server instance
nacos_settings = NacosSettings()
# 需要 nacos-server 开通 8848 / 9848 端口 | 验证方法: ssh 127.0.0.1 -p 9848 -v
nacos_settings.SERVER_ADDR = "127.0.0.1:8848" # <nacos_server_addr> e.g. 127.0.0.1:8848
nacos_settings.USERNAME = "nacos"
nacos_settings.PASSWORD = "nacosPassword"
mcp = NacosMCP("nacos-mcp-python", nacos_settings=nacos_settings, version="1.0.1", port=18001)
# Register an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two integers together"""
return a + b
# Register a subtraction tool
@mcp.tool()
def minus(a: int, b: int) -> int:
"""Subtract two numbers"""
return a - b
# 注册工具(装饰器方式,与官方 SDK 完全一致)
@mcp.tool()
def calculate(expression: str) -> str:
"""执行数学计算表达式"""
return str(eval(expression))
@mcp.tool()
def get_weather(city: str) -> str:
"""获取指定城市的天气"""
return f"{city} 今天晴天,25°C"
# 运行逻辑:
# 程序启动后会注册几个工具:add / minus / calculate / get_weather
# 使用 SSE 方式运行在端口 18001(在第 9 行设置)
# 连接到 Nacos 服务注册中心 (地址:127.0.0.1:8848)
# 服务名称为 nacos-mcp-python,版本 1.0.1
# 异常会被捕获并打印错误信息
# 如何发现并调用该 mcp 服务? curl http://127.0.0.1:18001/sse //todo 待续
if __name__ == "__main__":
logger.info(f"正在连接 Nacos 服务器:{nacos_settings.SERVER_ADDR}")
logger.info(f"用户名:{nacos_settings.USERNAME}")
try:
# transport/通信模式
mcp.run(transport="sse") # sse: Server-sent events/SSE (Server-sent Events):服务器推送事件到客户端;适用于:需要实时数据推送的场景; 特点:单向通信(服务器 → 客户端),基于 HTTP 长连接
# mcp.run(transport="stdio") # stdio :标准输入输出:通过进程的 stdin/stdout 通信; 适用于:本地进程间通信、命令行工具集成; 特点:双向通信,适合本地部署
# mcp.run(transport="streamable-http") # streamable-http/流式 HTTP:支持流式响应的 HTTP 协议; 适用于:需要双向通信的 Web 场景; 特点:双向通信,支持更复杂的交互模式
except Exception as e:
print(f"Runtime error: {e}")
logger.error(f"Runtime error: {e}", exc_info=True)
print(f"\n连接失败,请检查:")
print(f"1. Nacos 服务器 {nacos_settings.SERVER_ADDR} 是否可访问")
print(f"2. 用户名密码是否正确")
print(f"3. 网络防火墙是否开放端口")
更多使用案例可参见:

3.X 推荐文献
Y 推荐文献
- https://github.com/nacos-group/nacos-docker
- https://github.com/nacos-group/nacos-mcp-router
- Nacos 3.0 正式发布:MCP Registry、安全零信任、链接更多生态 - Nacos
- Nacos Docker 快速开始 - Nacos
X 参考文献
env NACOS_AUTH_TOKEN must be set with Base64 String.
env NACOS_AUTH_IDENTITY_KEY must be set.
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号