跳转到内容
Alibaba Cloud AI Agent Handbook 已开源,汇集50+工程师的一手实践经验点此了解

客户端API

使用默认鉴权插件时如何获取和配置访问凭据,请参见配置访问凭据。

0. 客户端API 相关说明

0.1. 适用边界

客户端 API 面向应用运行时和自定义客户端。调用者通常已经知道要访问的 namespaceId、groupName、dataId、serviceName 或实例信息。

适合使用不适合使用
查询单个已知配置。发布、删除、导入、导出配置。
注册、注销、查询和发现已知服务或实例。查询全量配置列表、全量服务列表、订阅者列表等范围型数据。
搜索可见 AI 资源、获取内容、发现 Agent/MCP 端点并监听 Agent 变化。管理 AI 资源审核、权限和完整版本生命周期。
在缺少合适 SDK 的语言中,通过 HTTP 完成少量运行时访问。构建发布平台、运维平台、网关管控面或审计工具。

业务应用优先使用 SDK。需要范围型管理能力时,请使用运维 API或运维 SDK。

0.2. 统一路径格式

Nacos的客户端API,使用统一的Path格式进行的规范。格式为[/$nacos.server.contextPath]/v3/client/[module]/[subPath]..., 其中

  • $nacos.server.contextPath:客户端API的根路径,默认为/nacos,可以通过nacos.server.contextPath配置项进行修改。
  • module:客户端API模块名称,例如server、cs、ns、core等。
  • subPath:客户端API的子路径,例如state、namespace、config等, 可能有多层子路径。

下列列出的客户端API,采用默认$nacos.server.contextPath的情况进行展示,若已修改部署环境中的$nacos.server.contextPath 配置项,请自行修改调用API时的请求URL。

同时下列列出的客户端API样例中,均采用默认Nacos Web Server的端口进行展示,若已修改部署环境中的$nacos.server.main.port 配置项,请自行修改调用API时的请求URL。

0.3. Swagger 类型文档

Nacos 3.X 的客户端 Open API 也提供了Swagger风格的文档,您可以通过访问Nacos Swagger HTTP 客户端 API查看。

下文的 map<string, any> 表示键为字符串、值可为任意 JSON 类型(字符串、数字、布尔值、对象、数组或 null)的映射。map<string, string>、map<string, boolean> 和命名模型映射仍遵循各自的值类型约束。

0.4. 鉴权与示例准备

Nacos 3.3 默认开启 Client 鉴权。未携带有效身份或缺少资源权限时,配置读取、服务注册与发现等请求会被拒绝。

使用默认鉴权插件时,先按配置访问凭据登录,将响应中的 accessToken 保存到 NACOS_ACCESS_TOKEN 环境变量,再在同一终端运行下文示例。示例使用 Bash(Windows 可使用 Git Bash 或 WSL),通过 accessToken 请求头携带 token;请求头要求适用于所有受保护接口,不再逐一列入参数表。

鉴权失败时检查账号密码、token 是否过期以及资源权限;token 过期后重新登录并更新变量。登录控制台不会自动为终端中的 curl 配置身份。

0.5. 请求关联 ID

建议直接 HTTP 调用方通过 Nacos-Request-Id 为每次请求提供唯一标识,便于排障关联。该请求头可选,详见 HTTP 请求关联 ID;具体接口要求的 X-Nacos-Client-Id 仍需单独配置。

1. 配置管理

1.1. 获取配置

接口描述

获取指定配置

起始版本

3.0.0

请求方式

GET

请求URL

/nacos/v3/client/cs/config

请求头

参数名参数类型是否必填描述说明
User-Agentstring否用户代理,默认为空,通常为 Nacos-${program-language}-Client:v${version}。
Client-Versionstring否客户端版本,默认为空,通常为 Nacos-${program-language}-Client:v${version}。

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认为public与 ''相同
groupNamestring是配置分组名
dataIdstring是配置名

返回数据

返回体遵循Nacos open API 统一返回体格式,下表只阐述data字段中的返回参数。

参数名参数类型描述
dataConfigQueryResponse配置查询结果。
data.contentstring配置内容
data.encryptedDataKeystring配置的加解密密钥,仅在使用配置加解密插件时有此值
data.contentTypestring配置的类型,如TEXT,JSON等
data.md5string配置的md5值
data.lastModifiedinteger配置的最后修改时间
data.betaboolean配置是否有灰度配置

其他字段为预留字段,暂时无用,忽略即可。

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X GET '127.0.0.1:8848/nacos/v3/client/cs/config?dataId=test&groupName=test'
  • 返回示例
{
"code": 0,
"message": "success",
"data": {
"resultCode": 200,
"errorCode": 0,
"message": null,
"requestId": null,
"content": "test",
"encryptedDataKey": null,
"contentType": "text",
"md5": "098f6bcd4621d373cade4e832627b4f6",
"lastModified": 1743151634823,
"tag": null,
"beta": false,
"success": true
}
}

2. 服务发现

2.1. 注册实例/续约实例

接口描述

注册或续约一个实例

起始版本

3.0.0

请求方式

POST

请求URL

/nacos/v3/client/ns/instance

请求头

参数名参数类型是否必填描述说明
User-Agentstring否用户代理,默认为空,通常为 Nacos-${program-language}-Client:v${version}。
Client-Versionstring否客户端版本,默认为空,通常为 Nacos-${program-language}-Client:v${version}。

请求参数

参数名参数类型必填参数描述
namespaceIdstring否命名空间Id,默认为public
groupNamestring否分组名,默认为DEFAULT_GROUP
serviceNamestring是服务名
ipstring是IP地址
portinteger是端口号
clusterNamestring否集群名称,默认为DEFAULT
healthyboolean否是否只查找健康实例,默认为true
weightnumber否实例权重,默认为1.0
enabledboolean否是否可用,默认为true
metadatastring否实例元数据,JSON 对象字符串
heartBeatboolean否是否为续约请求,默认为false
ephemeralboolean否是否为临时实例

返回数据

返回体遵循Nacos open API 统一返回体格式,下表只阐述data字段中的返回参数。

参数名参数类型描述
datastring是否注册、续约成功,成功时返回ok,失败时返回失败原因。

示例

  • 请求示例
Terminal window
# 注册实例
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X POST "127.0.0.1:8848/nacos/v3/client/ns/instance" -d "serviceName=test1&ip=127.0.0.1&port=3306&ephemeral=true"
# 续约实例
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X POST "127.0.0.1:8848/nacos/v3/client/ns/instance" -d "serviceName=test1&ip=127.0.0.1&port=3306&heartBeat=true&ephemeral=true"
  • 返回示例
{
"code": 0,
"message": "success",
"data": "ok"
}

2.2. 注销实例

接口描述

注销指定实例

起始版本

3.0.0

请求方式

DELETE

请求URL

/nacos/v3/client/ns/instance

请求头

参数名参数类型是否必填描述说明
User-Agentstring否用户代理,默认为空,通常为 Nacos-${program-language}-Client:v${version}。
Client-Versionstring否客户端版本,默认为空,通常为 Nacos-${program-language}-Client:v${version}。

请求参数

参数名参数类型必填参数描述
namespaceIdstring否命名空间Id,默认为public
groupNamestring否分组名,默认为DEFAULT_GROUP
serviceNamestring是服务名
ipstring是IP地址
portinteger是端口号
clusterNamestring否集群名称,默认为DEFAULT
ephemeralboolean否是否为临时实例

返回数据

返回体遵循Nacos open API 统一返回体格式,下表只阐述data字段中的返回参数。

参数名参数类型描述
datastring是否注销成功,成功时返回ok,失败时返回失败原因。

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X DELETE "127.0.0.1:8848/nacos/v3/client/ns/instance?serviceName=test1&ip=127.0.0.1&port=3306&ephemeral=true"
  • 返回示例
{
"code": 0,
"message": "success",
"data": "ok"
}

2.3. 查询指定服务的实例列表

接口描述

查询指定服务下的实例详情信息列表

起始版本

3.0.0

请求方式

GET

请求URL

/nacos/v3/client/ns/instance/list

请求头

参数名参数类型是否必填描述说明
User-Agentstring否用户代理,默认为空,通常为 Nacos-${program-language}-Client:v${version}。
Client-Versionstring否客户端版本,默认为空,通常为 Nacos-${program-language}-Client:v${version}。

请求参数

参数名参数类型是否必填描述说明
namespaceIdstring否命名空间Id,默认为public
groupNamestring否分组名,默认为DEFAULT_GROUP
serviceNamestring是服务名
clusterNamestring否集群名称,不传则查询所有集群的实例

返回数据

返回体遵循Nacos open API 统一返回体格式,下表只阐述data字段中的返回参数。

参数名参数类型描述说明
dataarray<Instance>实例列表
data.[i].ipstring实例IP
data.[i].portinteger实例端口号
data.[i].weightnumber实例权重
data.[i].healthyboolean实例是否健康
data.[i].enabledboolean实例是否可用
data.[i].ephemeralboolean是否为临时实例
data.[i].clusterNamestring实例所在的集群名称
data.[i].serviceNamestring服务名
data.[i].metadatamap<string, string>实例元数据
data.[i].instanceHeartBeatTimeOutinteger实例心跳超时时间
data.[i].ipDeleteTimeoutinteger实例删除超时时间
data.[i].instanceHeartBeatIntervalinteger实例心跳间隔

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X GET '127.0.0.1:8848/nacos/v3/client/ns/instance/list?serviceName=test1'
  • 返回示例
{
"code": 0,
"message": "success",
"data": [
{
"ip": "127.0.0.1",
"port": 3306,
"weight": 1.0,
"healthy": true,
"enabled": true,
"ephemeral": true,
"clusterName": "DEFAULT",
"serviceName": "DEFAULT_GROUP@@test1",
"metadata": {},
"ipDeleteTimeout": 30000,
"instanceIdGenerator": "simple",
"instanceHeartBeatInterval": 5000,
"instanceHeartBeatTimeOut": 15000
}
]
}

3. AI 相关

本章覆盖应用运行时使用的 AI 接口。AI 资源的版本发布与可见性参见统一生命周期,Agent 接入流程参见 RAD 接入指南。搜索返回当前可见且启用的资源;索引同步期间,新发布的资源可能暂未出现在结果中。

3.1. 查询 Prompt

接口描述

通过该接口,可按 version、label 或 latest 查询 Prompt,优先级 version > label > latest;支持 md5 条件返回 304。

起始版本

3.2.0

请求方式

GET

请求URL

/nacos/v3/client/ai/prompt

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认为public
promptKeystring是Prompt 键名
versionstring否精确版本号,优先于 label;均省略时使用 latest。
labelstring否版本标签,未指定 version 时生效。
md5string否本地缓存的内容 MD5;与当前 Prompt 内容一致时返回 304 Not Modified,无响应体。

返回数据

返回体遵循Nacos open API 统一返回体格式,下表只阐述data字段中的返回参数。

参数名参数类型描述
dataPromptPrompt 内容及版本信息。
data.promptKeystringPrompt 键名
data.versionstring版本号
data.templatestringPrompt 模板内容
data.md5string内容 md5,用于 304 判断
data.variablesarray<PromptVariable>Prompt 变量列表,包含 name、defaultValue 和 description。

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X GET '127.0.0.1:8848/nacos/v3/client/ai/prompt?promptKey=myPrompt'
  • 返回示例
{
"code": 0,
"message": "success",
"data": {
"promptKey": "myPrompt",
"version": "1.0",
"template": "You are a helpful assistant.",
"md5": "..."
}
}

3.2. 获取 AgentSpec

接口描述

通过该接口,可按命名空间、名称、版本号或 label 获取指定 AgentSpec 详情;支持通过 md5 进行缓存条件查询。

起始版本

3.2.0

请求方式

GET

请求URL

/nacos/v3/client/ai/agentspecs

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认为public
namestring是AgentSpec 名称
versionstring否AgentSpec 版本号
labelstring否AgentSpec 标签
md5string否本地缓存的 AgentSpec 内容 MD5;与所选在线版本内容一致时返回 304 Not Modified。

返回数据

返回体遵循Nacos open API 统一返回体格式,下表只阐述data字段中的返回参数。

参数名参数类型描述说明
dataAgentSpecAgentSpec 详情。
data.namespaceIdstringAgentSpec 所属命名空间
data.namestringAgentSpec 名称
data.descriptionstringAgentSpec 描述
data.bizTagsstringAgentSpec 业务标签
data.contentstringAgentSpec 内容
data.resourcemap<string, AgentSpecResource>关联资源,值包含名称、类型、内容及元数据。

AgentSpecResource.metadata 为 map<string, any>,允许任意 JSON 值。200 响应通过 ETag、X-Nacos-AgentSpec-Md5 和 X-Nacos-AgentSpec-Resolved-Version 返回非空的内容 MD5 和解析后版本;304 无响应体,返回 MD5 相关的前两个响应头,客户端继续使用缓存。

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X GET '127.0.0.1:8848/nacos/v3/client/ai/agentspecs?name=my-agent'
  • 返回示例
{
"code": 0,
"message": "success",
"data": {}
}

3.3. 搜索 AgentSpec

接口描述

通过该接口,可按命名空间和关键词分页搜索 AgentSpec。

起始版本

3.2.0

请求方式

GET

请求URL

/nacos/v3/client/ai/agentspecs/search

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认为public
keywordstring否搜索关键字
querystring否兼容继承字段,只校验长度(最多 1024 字符);名称筛选使用 keyword。
tagsAllarray<string>否可重复传入的标签,须全部匹配,最多 32 个非空值。
pageNointeger否页码,默认 1,必须为正整数。
pageSizeinteger否每页返回条数,默认 100,必须为正整数。

返回数据

返回体遵循Nacos open API 统一返回体格式,下表只阐述data字段中的返回参数。

参数名参数类型描述说明
dataPage<AgentSpecBasicInfo>AgentSpec 搜索结果。
data.totalCountinteger匹配资源总数。
data.pageNumberinteger当前页码。
data.pagesAvailableinteger总页数。
data.pageItemsarray<AgentSpecBasicInfo>当前页资源摘要,包含 namespaceId、name、description、updateTime。

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X GET '127.0.0.1:8848/nacos/v3/client/ai/agentspecs/search?keyword=agent&pageNo=1&pageSize=10'
  • 返回示例
{
"code": 0,
"message": "success",
"data": {}
}

3.4. 下载 Skill

接口描述

通过该接口,可按命名空间、名称、版本号或 label 下载 Skill ZIP 文件;支持通过 md5 进行缓存条件查询。

起始版本

3.2.0

请求方式

GET

请求URL

/nacos/v3/client/ai/skills

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认为public
namestring是Skill 名称
versionstring否Skill 版本号
labelstring否Skill 标签
md5string否本地缓存的 Skill 内容 MD5;与所选在线版本内容一致时返回 304 Not Modified。

示例

  • 请求示例
Terminal window
curl -f -H "accessToken: ${NACOS_ACCESS_TOKEN}" '127.0.0.1:8848/nacos/v3/client/ai/skills?name=my-skill' -o my-skill.zip
  • 返回说明

200 返回 Skill ZIP 文件(Content-Type: application/zip),以上命令保存为 my-skill.zip,不使用 JSON Result 包装。304 无响应体,客户端继续使用已有 ZIP 缓存,不应以空响应覆盖缓存文件。两种响应均会在值非空时返回 ETag、X-Nacos-Skill-Md5 和 X-Nacos-Skill-Resolved-Version,分别用于内容校验及确认解析后的版本。

Agent 管理 API 说明: 以下 Agent API(3.5~3.11)是后续推荐的统一集成方向,未来将逐步替代现有 A2A 管理 API。新接入的用户和 SDK 应优先对接并兼容这些 Agent 管理 API,避免为新集成继续依赖旧 A2A API;已有 A2A 集成可依据后续版本发布和迁移说明逐步切换。这里描述的是管理 API 的演进,不表示 A2A 协议本身已废弃。

3.5. 发现 Agent

接口描述

发现指定的可见 Agent 版本及当前匹配的端点集合。携带 X-Nacos-Client-Id 时只续约已存在的 HTTP Client,不能替代 Publisher 心跳。

起始版本

3.3.0

请求方式

GET

请求URL

/nacos/v3/client/ai/agents

请求头

参数名类型必填参数描述
X-Nacos-Client-Idstring否已有逻辑 HTTP Client 的可选稳定标识;携带时长度必须为 1~256、匹配 [A-Za-z0-9._:-]+,并与该客户端发布 Endpoint 时使用的值保持一致。Search 和 Discover 只续约已存在的 Client 生命周期,不会创建空 Client,也不会续约 Publisher 活性,因此不能替代 Publisher heartbeat。
X-Nacos-Agent-Discovery-Triggerstring否可选诊断标记,watch-notify 表示本次 Discover 由 Watch 通知触发。缺失、空值和未知值均兼容接受;不影响发现结果、鉴权或缓存,也不表示内容一定发生变化。

收到 Watch changed-ID 通知后重新 Discover 时,可携带 X-Nacos-Agent-Discovery-Trigger: watch-notify;主动查询、初始化和轮询回退不设置该标记。

请求参数

参数名类型必填参数描述
namespaceIdstring否Agent 所属命名空间,默认为 public。
agentNamestring是要发现的 Agent 名称。
versionstring否要发现的精确 Agent 版本,与 label 互斥。
labelstring否用于选择 Agent 版本的标签,与 version 互斥。
protocolarray<string>否可重复提交的协议过滤参数,用于匹配调用接口。
protocolVersionstring否用于匹配调用接口的协议版本。
transportarray<string>否可重复提交的传输方式过滤参数,用于匹配端点。
endpointSourcearray<string>否可重复提交的端点来源过滤参数,值为 RUNTIME 或 DECLARED。
metadataSelectorstring否URL 编码的端点元数据选择器 JSON 对象。

version 和 label 均省略时,返回 latest 定义元数据,并保留兼容任一当前在线版本的 Runtime Endpoint;显式指定 label=latest 时,只保留与 latest 版本匹配的 Runtime Endpoint。

返回数据

返回体遵循Nacos open API 统一返回体格式,下表阐述 data 及其字段。

参数名参数类型描述
dataAgentDiscoveryResultAgent 发现结果。
data.namespaceIdstringAgent 所属命名空间。
data.agentNamestringAgent 名称。
data.versionstring本次发现得到的 Agent 版本。
data.contentDigeststringAgent 定义内容摘要。
data.descriptionstringAgent 当前的公共描述。
data.tagsarray<string>Agent 当前的公共标签。
data.callInterfacesarray<AgentCallInterface>Agent 调用接口及其匹配的端点集合。
data.callInterfaces[i].protocolstring调用接口协议。
data.callInterfaces[i].protocolVersionstring调用接口协议版本。
data.callInterfaces[i].descriptorMediaTypestring协议原生描述的媒体类型。
data.callInterfaces[i].nativeDescriptorobject协议原生描述内容。
data.callInterfaces[i].endpointSetsarray<EndpointSet>按来源组织的端点集合。
data.callInterfaces[i].endpointSets[i].sourcestring端点来源,取值为 RUNTIME 或 DECLARED。
data.callInterfaces[i].endpointSets[i].sourceRevisionstring端点来源的修订标识。
data.callInterfaces[i].endpointSets[i].endpointsarray<Endpoint>当前来源下匹配的端点。
data.callInterfaces[i].endpointSets[i].endpoints[i].uristring端点 URI。
data.callInterfaces[i].endpointSets[i].endpoints[i].transportstring端点传输方式。
data.callInterfaces[i].endpointSets[i].endpoints[i].priorityinteger端点优先级。
data.callInterfaces[i].endpointSets[i].endpoints[i].weightnumber端点权重。
data.callInterfaces[i].endpointSets[i].endpoints[i].metadatamap<string, string>端点元数据。
data.callInterfaces[i].endpointSets[i].endpoints[i].healthyboolean端点是否健康。
data.callInterfaces[i].endpointSets[i].endpoints[i].enabledboolean端点是否启用。
data.callInterfaces[i].endpointSets[i].endpoints[i].bindingsarray<RuntimeVersionBinding>端点的运行时版本绑定信息。
data.callInterfaces[i].endpointSets[i].endpoints[i].bindings[i].runtimeVersionstringPublisher 运行时版本。
data.callInterfaces[i].endpointSets[i].endpoints[i].bindings[i].versionRangestring该运行时支持的 Agent 版本范围。

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X GET '127.0.0.1:8848/nacos/v3/client/ai/agents?namespaceId=public&agentName=my-agent&version=1.0.0&protocol=a2a' \
-H 'X-Nacos-Client-Id: 550e8400-e29b-41d4-a716-446655440000'
  • 返回示例
{
"code": 0,
"message": "success",
"data": {
"namespaceId": "public",
"agentName": "my-agent",
"version": "1.0.0",
"contentDigest": "sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"callInterfaces": [
{
"protocol": "a2a",
"protocolVersion": "1.0",
"descriptorMediaType": "application/json",
"nativeDescriptor": {
"name": "my-agent",
"version": "1.0.0",
"description": "Example Agent",
"protocolVersion": "1.0",
"supportedInterfaces": [
{
"url": "https://example.com/my-agent/jsonrpc",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0",
"transport": "JSONRPC"
}
],
"capabilities": {
"streaming": true,
"extendedAgentCard": true
}
},
"endpointSets": [
{
"source": "RUNTIME",
"sourceRevision": "1",
"endpoints": [
{
"uri": "http://127.0.0.1:8081/a2a",
"transport": "HTTP+JSON",
"priority": 0,
"weight": 1.0,
"metadata": {},
"healthy": true,
"bindings": [
{
"runtimeVersion": "1.0.0",
"versionRange": "[1.0.0]"
}
]
}
]
}
]
}
]
}
}

3.6. 发布 Agent 定义

接口描述

从应用代码创建或完整替换可编辑的 Agent 草稿。首次创建首个版本时自动提交;后续新版本或已有草稿由 autoSubmit 决定是否提交。提交可能进入审核,成功返回不代表版本已上线。已有非草稿版本不会被覆盖或重新上线,详见 Agent 管理。

起始版本

3.3.0

请求方式

POST

请求参数编码为 application/x-www-form-urlencoded Form。

请求URL

/nacos/v3/client/ai/agents

请求参数

参数名类型必填参数描述
namespaceIdstring否Agent 所属命名空间,默认为 public。
agentNamestring是要发布的 Agent 名称。
versionstring是要发布的 Agent 版本。
displayNamestring否Agent 展示名称。
descriptionstring否Agent 描述。
iconUrlstring否Agent 图标 URL。
providerstring否AgentProvider JSON 对象字符串,包含 name 和 url。
tagsstring否Agent 标签的 JSON 数组字符串。
extensionsstring否Agent 扩展属性的 JSON 对象字符串。
callInterfacesstring否array<AgentCallInterface> JSON 字符串,与 basedOnVersion 二选一;首次创建 Agent 时必须使用该字段。
authorstring否Agent 版本作者。
changeDescriptionstring否本次版本变更说明。
basedOnVersionstring否复制内容所基于的精确 Agent 版本,与 callInterfaces 二选一;首次创建 Agent 时不可使用。
autoSubmitboolean否是否执行普通提交流程,默认 false;首次新建首个版本时强制提交。

返回数据

返回体遵循Nacos open API 统一返回体格式,下表阐述 data 及其字段。

参数名参数类型描述
dataAgentVersionDetail本次操作后的 Agent 版本详情。
data.namespaceIdstringAgent 所属命名空间。
data.agentNamestringAgent 名称。
data.versionstringAgent 版本。
data.statusstringAgent 版本状态。
data.callInterfacesarray<AgentCallInterface>Agent 调用接口定义。
data.callInterfaces[i].protocolstring调用接口协议。
data.callInterfaces[i].protocolVersionstring调用接口协议版本。
data.callInterfaces[i].descriptorMediaTypestring协议原生描述的媒体类型。
data.callInterfaces[i].nativeDescriptorobject协议原生描述内容。
data.callInterfaces[i].endpointSourceOrderarray<string>端点来源的查询顺序。
data.callInterfaces[i].endpointSetsarray<EndpointSet>定义中的声明端点集合。
data.callInterfaces[i].endpointSets[i].sourcestring定义中为 DECLARED。
data.callInterfaces[i].endpointSets[i].endpointsarray<Endpoint>声明端点。
data.callInterfaces[i].endpointSets[i].endpoints[i].uristring端点 URI。
data.callInterfaces[i].endpointSets[i].endpoints[i].transportstring端点传输方式。
data.callInterfaces[i].endpointSets[i].endpoints[i].priorityinteger端点优先级。
data.callInterfaces[i].endpointSets[i].endpoints[i].weightnumber端点权重。
data.callInterfaces[i].endpointSets[i].endpoints[i].metadatamap<string, string>端点元数据。
data.authorstringAgent 版本作者。
data.changeDescriptionstringAgent 版本变更说明。
data.contentDigeststringAgent 定义内容摘要。
data.createTimeinteger创建时间。
data.updateTimeinteger更新时间。

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X POST '127.0.0.1:8848/nacos/v3/client/ai/agents' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'namespaceId=public' \
-d 'agentName=my-agent' \
-d 'version=1.0.0' \
--data-urlencode 'callInterfaces=[{"protocol":"a2a","protocolVersion":"1.0","descriptorMediaType":"application/json","nativeDescriptor":{"name":"my-agent","version":"1.0.0","description":"Example Agent","protocolVersion":"1.0","supportedInterfaces":[{"url":"https://example.com/my-agent/jsonrpc","protocolBinding":"JSONRPC","protocolVersion":"1.0","transport":"JSONRPC"}],"capabilities":{"streaming":true,"extendedAgentCard":true}},"endpointSourceOrder":["DECLARED","RUNTIME"],"endpointSets":[{"source":"DECLARED","endpoints":[{"uri":"https://example.com/my-agent/jsonrpc","transport":"JSONRPC"}]}]}]' \
-d 'author=demo' \
-d 'changeDescription=initial version' \
-d 'autoSubmit=true'
  • 返回示例
{
"code": 0,
"message": "success",
"data": {
"namespaceId": "public",
"agentName": "my-agent",
"version": "1.0.0",
"status": "online",
"callInterfaces": [
{
"protocol": "a2a",
"protocolVersion": "1.0",
"descriptorMediaType": "application/json",
"nativeDescriptor": {
"name": "my-agent",
"version": "1.0.0",
"description": "Example Agent",
"protocolVersion": "1.0",
"supportedInterfaces": [
{
"url": "https://example.com/my-agent/jsonrpc",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0",
"transport": "JSONRPC"
}
],
"capabilities": {
"streaming": true,
"extendedAgentCard": true
}
},
"endpointSourceOrder": ["DECLARED", "RUNTIME"],
"endpointSets": [
{
"source": "DECLARED",
"endpoints": [
{
"uri": "https://example.com/my-agent/jsonrpc",
"transport": "JSONRPC"
}
]
}
]
}
],
"author": "demo",
"changeDescription": "initial version",
"contentDigest": "sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"createTime": 1785897600000,
"updateTime": 1785897600000
}
}

3.7. 注册 Agent 端点

接口描述

替换某个 HTTP Publisher 针对 Agent 协议发布的完整运行时 Endpoint Batch。同一逻辑客户端在其绑定 namespace 下拥有的全部 Batch 必须复用一个稳定的 X-Nacos-Client-Id。返回的 ClientLivenessInfo 是服务端实际活性策略:应按 heartbeatIntervalMillis 为该 client id 调度一个心跳任务,而不是为每个 Endpoint 或 Batch 分别调度。

起始版本

3.3.0

请求方式

POST

请求参数编码为 application/x-www-form-urlencoded Form;其中 endpoints 是 JSON 数组字符串。

请求URL

/nacos/v3/client/ai/agents/endpoints

请求头

参数名类型必填参数描述
X-Nacos-Client-Idstring是逻辑 HTTP Client 必填的稳定 opaque 标识。每个客户端或 SDK 实例生成一个唯一值,建议至少包含 96 bit 随机熵;UUID 是合法值,且长度必须为 1~256、匹配 [A-Za-z0-9._:-]+。Endpoint 注册、注销、心跳、重试、Server 切换和 redo 必须复用该值,客户端实例或进程重启后生成新值;互不相关的客户端或进程不得共享同一 id。首次 Endpoint 写入会将该 id 绑定到鉴权主体和 namespace。该 id 归属客户端的全部 Endpoint Publication,是路由标识而非 credential。
Request-Modulestring是Endpoint Publisher 生命周期操作的必填 Header,请将 Request-Module 设置为 AI。

请求参数

参数名类型必填参数描述
namespaceIdstring否Agent 所属命名空间,默认为 public。
agentNamestring是要注册端点的 Agent 名称。
runtimeVersionstring是Publisher 的运行时版本。
versionRangestring否这些端点支持的 Agent 版本范围。
protocolstring是该端点发布对应的 Agent 协议。
endpointsstring是当前 Publisher 完整 Endpoint Batch 的 JSON 数组字符串。

返回数据

返回体遵循Nacos open API 统一返回体格式,下表阐述 data 及其字段。

参数名参数类型描述
dataClientLivenessInfo服务端实际生效的 HTTP Client 活性策略。
data.heartbeatIntervalMillisinteger建议的客户端心跳间隔,单位为毫秒。
data.unhealthyTimeoutMillisinteger客户端转为不健康状态的超时时间,单位为毫秒。
data.expireTimeoutMillisinteger客户端及其发布信息过期的超时时间,单位为毫秒。

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X POST '127.0.0.1:8848/nacos/v3/client/ai/agents/endpoints' \
-H 'X-Nacos-Client-Id: 550e8400-e29b-41d4-a716-446655440000' \
-H 'Request-Module: AI' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'namespaceId=public' \
-d 'agentName=my-agent' \
-d 'runtimeVersion=1.0.0' \
--data-urlencode 'versionRange=[1.0.0]' \
-d 'protocol=a2a' \
--data-urlencode 'endpoints=[{"uri":"http://127.0.0.1:8081/a2a","transport":"HTTP+JSON","priority":0,"weight":1.0,"metadata":{}}]'
  • 返回示例
{
"code": 0,
"message": "success",
"data": {
"heartbeatIntervalMillis": 5000,
"unhealthyTimeoutMillis": 15000,
"expireTimeoutMillis": 30000
}
}

3.8. 注销 Agent 端点

接口描述

移除指定 X-Nacos-Client-Id 所拥有的、针对某个 Agent 协议的整份 HTTP Publisher Runtime Endpoint Publication。该 Client 仍有任意 Publication 时保留一个 Client 级心跳,最后一份 Publication 移除后停止心跳。

该接口使用专用 Form 绑定 namespaceId、agentName 和 protocol 普通请求参数,不接收 Endpoint 自然键或 JSON 请求体。

起始版本

3.3.0

请求方式

DELETE

请求URL

/nacos/v3/client/ai/agents/endpoints

请求头

参数名类型必填参数描述
X-Nacos-Client-Idstring是逻辑 HTTP Client 必填的稳定 opaque 标识。每个客户端或 SDK 实例生成一个唯一值,建议至少包含 96 bit 随机熵;UUID 是合法值,且长度必须为 1~256、匹配 [A-Za-z0-9._:-]+。Endpoint 注册、注销、心跳、重试、Server 切换和 redo 必须复用该值,客户端实例或进程重启后生成新值;互不相关的客户端或进程不得共享同一 id。首次 Endpoint 写入会将该 id 绑定到鉴权主体和 namespace。该 id 归属客户端的全部 Endpoint Publication,是路由标识而非 credential。
Request-Modulestring是Endpoint Publisher 生命周期操作的必填 Header,请将 Request-Module 设置为 AI。

请求参数

参数名类型必填参数描述
namespaceIdstring否Agent 所属命名空间,默认为 public。
agentNamestring是要注销端点的 Agent 名称。
protocolstring是要注销端点的 Agent 协议。

返回数据

返回体遵循Nacos open API 统一返回体格式,下表阐述 data 字段。

参数名参数类型描述
dataVoid成功时不返回业务数据,值为 null。

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X DELETE '127.0.0.1:8848/nacos/v3/client/ai/agents/endpoints?namespaceId=public&agentName=my-agent&protocol=a2a' \
-H 'X-Nacos-Client-Id: 550e8400-e29b-41d4-a716-446655440000' \
-H 'Request-Module: AI'
  • 返回示例
{
"code": 0,
"message": "success",
"data": null
}

3.9. Agent 端点心跳

接口描述

刷新该 X-Nacos-Client-Id 对应的 HTTP Client 及其拥有的全部 Agent Endpoint Publication。无论 Endpoint、Agent、协议或 Batch 数量多少,每个 client id 只维护一个心跳任务,禁止按 Endpoint 分别调度。使用注册响应或最新心跳响应中的 heartbeatIntervalMillis 作为下一次心跳的等待间隔;后续响应发生变化时重新调度,不要硬编码当前默认值。unhealthyTimeoutMillis 和 expireTimeoutMillis 是服务端实际阈值,调用方不能通过请求覆盖。Search 和 Discover 不会续约 Publisher 活性。收到 HTTP_CLIENT_NOT_FOUND (50404) 后,应先重新注册每个完整期望 Batch,再继续心跳。

起始版本

3.3.0

请求方式

PUT

请求URL

/nacos/v3/client/ai/agents/endpoints/heartbeat

请求头

参数名类型必填参数描述
X-Nacos-Client-Idstring是逻辑 HTTP Client 必填的稳定 opaque 标识。每个客户端或 SDK 实例生成一个唯一值,建议至少包含 96 bit 随机熵;UUID 是合法值,且长度必须为 1~256、匹配 [A-Za-z0-9._:-]+。Endpoint 注册、注销、心跳、重试、Server 切换和 redo 必须复用该值,客户端实例或进程重启后生成新值;互不相关的客户端或进程不得共享同一 id。首次 Endpoint 写入会将该 id 绑定到鉴权主体和 namespace。该 id 归属客户端的全部 Endpoint Publication,是路由标识而非 credential。
Request-Modulestring是Endpoint Publisher 生命周期操作的必填 Header,请将 Request-Module 设置为 AI。

返回数据

返回体遵循Nacos open API 统一返回体格式,下表阐述 data 及其字段。

参数名参数类型描述
dataClientLivenessInfo服务端实际生效的 HTTP Client 活性策略。
data.heartbeatIntervalMillisinteger建议的客户端心跳间隔,单位为毫秒。
data.unhealthyTimeoutMillisinteger客户端转为不健康状态的超时时间,单位为毫秒。
data.expireTimeoutMillisinteger客户端及其发布信息过期的超时时间,单位为毫秒。

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X PUT '127.0.0.1:8848/nacos/v3/client/ai/agents/endpoints/heartbeat' \
-H 'X-Nacos-Client-Id: 550e8400-e29b-41d4-a716-446655440000' \
-H 'Request-Module: AI'
  • 返回示例
{
"code": 0,
"message": "success",
"data": {
"heartbeatIntervalMillis": 5000,
"unhealthyTimeoutMillis": 15000,
"expireTimeoutMillis": 30000
}
}

3.10. 搜索 Agent 目录

接口描述

按名称、标签、协议和分页参数搜索可见的 Agent 目录条目。携带 X-Nacos-Client-Id 时只续约已存在的 HTTP Client,不会续约其 Endpoint Publisher 活性。

起始版本

3.3.0

请求方式

GET

请求URL

/nacos/v3/client/ai/agents/search

请求头

参数名类型必填参数描述
X-Nacos-Client-Idstring否已有逻辑 HTTP Client 的可选稳定标识;携带时长度必须为 1~256、匹配 [A-Za-z0-9._:-]+,并与该客户端发布 Endpoint 时使用的值保持一致。Search 和 Discover 只续约已存在的 Client 生命周期,不会创建空 Client,也不会续约 Publisher 活性,因此不能替代 Publisher heartbeat。

请求参数

参数名类型必填参数描述
namespaceIdstring否Agent 所属命名空间,默认为 public。
agentNameContainsstring否Agent 名称需包含的大小写敏感文本。
tagsAllarray<string>否可重复提交;目录条目必须同时包含全部指定标签。
protocolsAnyarray<string>否可重复提交;目录条目匹配任一指定协议即可。
pageNointeger否页码,从 1 开始,默认 1。
pageSizeinteger否每页条目数,默认 20,范围 1~100。

返回数据

返回体遵循Nacos open API 统一返回体格式,下表阐述 data 及其字段。

参数名参数类型描述
dataPage<AgentSummary>Agent 目录分页结果。
data.totalCountinteger符合条件的目录条目总数。
data.pageNumberinteger当前页码。
data.pagesAvailableinteger可用总页数。
data.pageItemsarray<AgentSummary>当前页的 Agent 目录条目,仅含公共元数据和在线版本信息。
data.pageItems[i].agentNamestringAgent 名称。
data.pageItems[i].displayNamestringAgent 展示名称。
data.pageItems[i].descriptionstringAgent 描述。
data.pageItems[i].iconUrlstringAgent 图标 URL。
data.pageItems[i].providerAgentProviderAgent 提供方。
data.pageItems[i].provider.namestring提供方名称。
data.pageItems[i].provider.urlstring提供方 URL。
data.pageItems[i].tagsarray<string>Agent 标签。
data.pageItems[i].extensionsmap<string, any>Agent 扩展属性,值可为任意 JSON 类型。
data.pageItems[i].versionInfoAgentVersionInfo在线版本集合和标签映射。
data.pageItems[i].versionInfo.labelsmap<string, string>标签到在线版本的映射,含 latest。
data.pageItems[i].versionInfo.onlineVersionsarray<AgentVersionSummary>在线版本摘要。
data.pageItems[i].versionInfo.onlineVersions[i].versionstringAgent 版本。
data.pageItems[i].versionInfo.onlineVersions[i].labelsarray<string>自定义版本标签,不含 latest。
data.pageItems[i].versionInfo.onlineVersions[i].protocolsarray<string>版本支持的协议。

示例

  • 请求示例
Terminal window
curl -H "accessToken: ${NACOS_ACCESS_TOKEN}" -X GET '127.0.0.1:8848/nacos/v3/client/ai/agents/search?namespaceId=public&agentNameContains=agent&tagsAll=assistant&protocolsAny=a2a&pageNo=1&pageSize=10' \
-H 'X-Nacos-Client-Id: 550e8400-e29b-41d4-a716-446655440000'
  • 返回示例
{
"code": 0,
"message": "success",
"data": {
"totalCount": 1,
"pageNumber": 1,
"pagesAvailable": 1,
"pageItems": [
{
"agentName": "my-agent",
"displayName": "My Agent",
"description": "Example Agent",
"iconUrl": "https://example.com/icon.png",
"provider": {
"name": "example-provider",
"url": "https://example.com"
},
"tags": ["assistant"],
"versionInfo": {
"labels": {"latest": "1.0.0"},
"onlineVersions": [
{
"version": "1.0.0",
"labels": [],
"protocols": ["a2a"]
}
]
}
}
]
}
}

3.11. 监听 Agent 发现变化

接口描述

对当前完整的监听集合执行一次批量长轮询。响应只提示哪些监听项发生变化;应用需再次 Discover 获取完整结果,再开始下一轮监听。持续监听优先使用 RAD SDK。

起始版本

3.3.0

请求方式

POST,请求体类型为 application/x-www-form-urlencoded。

请求URL

/nacos/v3/client/ai/agents/watch

请求头

参数名类型必填参数描述
X-Nacos-Client-Idstring是稳定客户端标识,1~256 字符,匹配 [A-Za-z0-9._:-]+。
Request-Modulestring是固定为 AI。

请求参数

参数名类型必填参数描述
generationinteger是客户端维护的非负、单调递增的监听集合代次,用于识别过期响应。
timeoutMillisinteger是长轮询等待时间,1000~60000 毫秒。
watchesstring是array<AgentWatchBatchItem> JSON 字符串,1~1000 项,所有项使用同一生效命名空间。

每个监听项包含以下字段:

字段类型说明
clientWatchIdstring批次内唯一,1~128 字符,匹配 [A-Za-z0-9._:-]+。
discoveryRequestAgentDiscoveryRequest完整发现请求,包含 namespaceId、reference(agentName 及可选版本/标签)和可选 filter;过滤器使用 protocols、transports、endpointSources 等模型字段。
materializedFingerprintstring必填,最后保存的完整发现快照的规范化指纹;格式为 sha256-canonical-json-v1: 加 64 位小写十六进制摘要。

Java 客户端可用 AgentDiscoveryCanonicalizer.fingerprint(snapshot) 计算指纹。它不是定义的 contentDigest,也不能用 HTTP 原始 JSON 文本的 SHA-256 替代。监听集合变化后应替换上一轮请求,忽略过期代次及已取消项的响应。

返回数据

参数名参数类型描述
dataAgentWatchBatchResponse本次长轮询结果。
data.generationinteger与请求相同的代次。
data.changedboolean是否有变化;正常超时为 false。
data.changedClientWatchIdsarray<string>需要重新 Discover 的监听项标识,不包含发现内容或新指纹。

示例

先将同一发现请求的当前快照指纹保存到 NACOS_AGENT_FINGERPRINT,再执行:

Terminal window
curl -sS -X POST 'http://127.0.0.1:8848/nacos/v3/client/ai/agents/watch' \
-H "accessToken: ${NACOS_ACCESS_TOKEN}" \
-H 'X-Nacos-Client-Id: agent-consumer-1' \
-H 'Request-Module: AI' \
-d 'generation=1' -d 'timeoutMillis=30000' \
--data-urlencode "watches=[{\"clientWatchId\":\"watch-1\",\"discoveryRequest\":{\"namespaceId\":\"public\",\"reference\":{\"agentName\":\"my-agent\",\"version\":\"1.0.0\"}},\"materializedFingerprint\":\"${NACOS_AGENT_FINGERPRINT}\"}]"

正常超时示例:

{"code":0,"message":"success","data":{"generation":1,"changed":false,"changedClientWatchIds":[]}}

3.12. 查询 MCP 服务版本

接口描述

获取指定 MCP 服务的在线版本及端点。省略版本时查询 latest。可选的客户端标识仅续约已有 HTTP Client,不能替代端点心跳。

起始版本

3.3.0

请求方式

GET

请求URL

/nacos/v3/client/ai/mcp

请求头

参数名类型必填参数描述
X-Nacos-Client-Idstring否已有 HTTP Client 的稳定标识,1~256 字符,匹配 [A-Za-z0-9._:-]+。

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认 public。
mcpNamestring是MCP 服务名称。
versionstring否精确版本号;省略时查询 latest。

返回数据

参数名参数类型描述
dataMcpServerDetailInfoMCP 服务版本详情。
data.namespaceIdstring命名空间。
data.idstring服务 ID。
data.namestring服务名称。
data.descriptionstring服务描述。
data.protocolstring后端协议。
data.frontProtocolstring对外协议。
data.versionDetailServerVersionDetail版本信息,包含 version、release_date 和 is_latest。
data.versionstring版本号。
data.remoteServerConfigMcpServerRemoteServiceConfig远程服务引用、导出路径和前端端点配置。
data.localServerConfigmap<string, any>本地进程启动配置,例如字符串 command 和数组 args。
data.enabledboolean是否启用。
data.statusstring版本状态。
data.capabilitiesarray<string>服务能力。
data.backendEndpointsarray<McpEndpointInfo>后端端点,包含 protocol、address、port、path、headers。
data.frontendEndpointsarray<McpEndpointInfo>对外端点,字段同后端端点。
data.toolSpecMcpToolSpecification工具定义。
data.toolSpec.toolsarray<McpTool>工具列表;每个工具的 inputSchema、outputSchema 和 _meta 均为 map<string, any>,保留其 JSON Schema 或协议定义的内容。
data.toolSpec.toolsMetamap<string, McpToolMeta>按工具名称组织的元数据;invokeContext 为 map<string, string>,templates 为 map<string, any>。
data.toolSpec.extensionsmap<string, any>工具扩展信息。
data.resourceSpecMcpResourceSpecification资源定义。
data.resourceSpec.resourcesarray<map<string, any>>资源定义列表,各资源字段值可为任意 JSON 类型。
data.resourceSpec.resourceTemplatesarray<map<string, any>>资源模板列表。
data.resourceSpec.extensionsmap<string, any>资源扩展信息。
data.allVersionsarray<ServerVersionDetail>版本列表。
data.repositoryRepository源码仓库信息。
data.packagesarray<Package>分发包信息。
data.iconsarray<Icon>图标信息。
data.websiteUrlstring项目网站。

示例

Terminal window
curl -sS -G 'http://127.0.0.1:8848/nacos/v3/client/ai/mcp' \
-H "accessToken: ${NACOS_ACCESS_TOKEN}" \
--data-urlencode 'namespaceId=public' \
--data-urlencode 'mcpName=my-mcp' \
--data-urlencode 'version=1.0.0'

3.13. 发布 MCP 版本

接口描述

从应用发布 MCP 版本。默认直接上线;createDraft=true 时只创建草稿,需要资源已进入生命周期托管模式,再按生命周期流程提交和发布。

起始版本

3.3.0

请求方式

POST,请求体类型为 application/x-www-form-urlencoded。

请求URL

/nacos/v3/client/ai/mcp

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认 public。
mcpNamestring否若提供,必须与 serverSpecification.name 相同。
serverSpecificationstring是McpServerBasicInfo JSON 对象字符串,包含服务名称、协议、版本及服务配置。
toolSpecificationstring否McpToolSpecification JSON 对象字符串。
resourceSpecificationstring否McpResourceSpecification JSON 对象字符串。
endpointSpecificationstring否McpEndpointSpec JSON 对象字符串:type=DIRECT 的 data 包含 address/port;type=REF 的 data 包含 namespaceId/groupName/serviceName。远程服务按端点接入方式提供。
createDraftstring否true 或 false,默认 false。

返回数据

参数名参数类型描述
datastringMCP 服务 ID。

示例

以下发布一个 stdio 服务定义;它不会在 Nacos Server 上启动该进程。

Terminal window
curl -sS -X POST 'http://127.0.0.1:8848/nacos/v3/client/ai/mcp' \
-H "accessToken: ${NACOS_ACCESS_TOKEN}" \
-d 'namespaceId=public' \
--data-urlencode 'serverSpecification={"name":"my-mcp","protocol":"stdio","frontProtocol":"stdio","versionDetail":{"version":"1.0.0"},"localServerConfig":{"command":"python","args":["server.py"]}}' \
-d 'createDraft=false'

3.14. 注册 MCP 端点

接口描述

为已发布且配置了服务引用(REF)的远程 MCP 服务注册运行端点。先按 MCP 管理准备远程服务定义及版本;此处示例使用 my-remote-mcp 的 1.0.0。注册成功后按返回的心跳间隔持续续约。

同一身份和命名空间内,一个逻辑客户端的 Agent/MCP 发布复用稳定的 Client ID,并维护一个心跳任务。

起始版本

3.3.0

请求方式

POST,请求体类型为 application/x-www-form-urlencoded。

请求URL

/nacos/v3/client/ai/mcp/endpoints

请求头

参数名类型必填参数描述
X-Nacos-Client-Idstring是稳定客户端标识,1~256 字符,匹配 [A-Za-z0-9._:-]+。
Request-Modulestring是固定为 AI。

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认 public。
mcpNamestring是MCP 服务名称。
addressstring是合法的 IPv4 或 IPv6 地址。
portinteger是运行端点端口,范围 1~65535。
versionstring否端点所属服务版本;建议显式指定,注销时保持一致。

返回数据

参数名参数类型描述
dataClientLivenessInfo客户端活性参数。
data.heartbeatIntervalMillisinteger心跳发送间隔,毫秒。
data.unhealthyTimeoutMillisinteger标记不健康的超时时间,毫秒。
data.expireTimeoutMillisinteger过期清理超时时间,毫秒。

示例

Terminal window
curl -sS -X POST 'http://127.0.0.1:8848/nacos/v3/client/ai/mcp/endpoints' \
-H "accessToken: ${NACOS_ACCESS_TOKEN}" \
-H 'X-Nacos-Client-Id: mcp-publisher-1' \
-H 'Request-Module: AI' \
-d 'namespaceId=public' -d 'mcpName=my-remote-mcp' \
-d 'address=127.0.0.1' -d 'port=9999' -d 'version=1.0.0'

返回示例(后续心跳使用实际响应中的间隔):

{"code":0,"message":"success","data":{"heartbeatIntervalMillis":5000,"unhealthyTimeoutMillis":15000,"expireTimeoutMillis":30000}}

3.15. 注销 MCP 端点

接口描述

注销当前 HTTP Client 拥有的 MCP 运行端点。使用注册时相同的 Client ID、服务、版本、地址和端口;不会删除服务定义。

起始版本

3.3.0

请求方式

DELETE,请求体类型为 application/x-www-form-urlencoded。

请求URL

/nacos/v3/client/ai/mcp/endpoints

请求头

参数名类型必填参数描述
X-Nacos-Client-Idstring是与注册端点时相同的稳定客户端标识。
Request-Modulestring是固定为 AI。

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认 public。
mcpNamestring是MCP 服务名称。
addressstring是已注册的端点地址。
portinteger是已注册的端点端口。
versionstring否与注册时相同的版本。

返回数据

成功时返回统一 Result,data 为 null。

示例

Terminal window
curl -sS -X DELETE 'http://127.0.0.1:8848/nacos/v3/client/ai/mcp/endpoints' \
-H "accessToken: ${NACOS_ACCESS_TOKEN}" \
-H 'X-Nacos-Client-Id: mcp-publisher-1' \
-H 'Request-Module: AI' \
-d 'namespaceId=public' -d 'mcpName=my-remote-mcp' \
-d 'address=127.0.0.1' -d 'port=9999' -d 'version=1.0.0'
{"code":0,"message":"success","data":null}

3.16. MCP 端点心跳

接口描述

续约共享 HTTP Client 及其拥有的 Agent/MCP 发布。按最新响应的 heartbeatIntervalMillis 调度一个心跳任务;返回 HTTP_CLIENT_NOT_FOUND 时重新注册需要保留的端点。查询或 Watch 不能代替发布者心跳。

起始版本

3.3.0

请求方式

PUT

请求URL

/nacos/v3/client/ai/mcp/endpoints/heartbeat

请求头

参数名类型必填参数描述
X-Nacos-Client-Idstring是与注册端点时相同的稳定客户端标识。
Request-Modulestring是固定为 AI。

请求参数

无。

返回数据

参数名参数类型描述
dataClientLivenessInfo客户端活性参数。
data.heartbeatIntervalMillisinteger下一轮心跳间隔,毫秒。
data.unhealthyTimeoutMillisinteger标记不健康的超时时间,毫秒。
data.expireTimeoutMillisinteger过期清理超时时间,毫秒。

示例

Terminal window
curl -sS -X PUT 'http://127.0.0.1:8848/nacos/v3/client/ai/mcp/endpoints/heartbeat' \
-H "accessToken: ${NACOS_ACCESS_TOKEN}" \
-H 'X-Nacos-Client-Id: mcp-publisher-1' \
-H 'Request-Module: AI'

3.17. 搜索 MCP 资源

接口描述

按关键词、标签、协议和能力分页搜索当前可见且启用的 MCP 资源。空查询列出资源;同一数组内 tagsAll 全部匹配,protocolsAny 和 capabilitiesAny 各自任一匹配,不同条件之间同时满足。

起始版本

3.3.0

请求方式

GET

请求URL

/nacos/v3/client/ai/mcp/search

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认 public。
querystring否搜索文本,最多 1024 字符。
tagsAllarray<string>否可重复传入的标签,须全部匹配,最多 32 个非空值。
protocolsAnyarray<string>否可重复传入的协议,任一匹配,最多 32 个非空值。
capabilitiesAnyarray<string>否可重复传入的能力,任一匹配,如 TOOL、PROMPT、RESOURCE,最多 32 个非空值。
pageNointeger否正整数,默认 1。
pageSizeinteger否正整数,默认 100。

返回数据

参数名参数类型描述
dataPage<McpServerBasicInfo>MCP 资源分页结果。
data.totalCountinteger匹配资源总数。
data.pageNumberinteger当前页码。
data.pagesAvailableinteger总页数。
data.pageItemsarray<McpServerBasicInfo>当前页服务摘要;获取调用端点和完整定义请使用 MCP 查询接口。
data.pageItems[i].localServerConfigmap<string, any>本地进程启动配置,值可为任意 JSON 类型。

示例

Terminal window
curl -sS -G 'http://127.0.0.1:8848/nacos/v3/client/ai/mcp/search' \
-H "accessToken: ${NACOS_ACCESS_TOKEN}" \
--data-urlencode 'namespaceId=public' --data-urlencode 'query=weather' \
--data-urlencode 'capabilitiesAny=TOOL' \
--data-urlencode 'pageNo=1' --data-urlencode 'pageSize=20'

3.18. 搜索 Skill 资源

接口描述

按关键词和标签分页搜索当前可见且启用的 Skill,空查询列出资源。获取内容请使用 Skill 下载接口。

起始版本

3.3.0

请求方式

GET

请求URL

/nacos/v3/client/ai/skills/search

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认 public。
querystring否搜索文本,最多 1024 字符。
tagsAllarray<string>否可重复传入的标签,须全部匹配,最多 32 个非空值。
pageNointeger否正整数,默认 1。
pageSizeinteger否正整数,默认 100。

返回数据

参数名参数类型描述
dataPage<SkillBasicInfo>Skill 分页结果。
data.totalCountinteger匹配资源总数。
data.pageNumberinteger当前页码。
data.pagesAvailableinteger总页数。
data.pageItemsarray<SkillBasicInfo>当前页摘要,包含 namespaceId、name、description、updateTime。

示例

Terminal window
curl -sS -G 'http://127.0.0.1:8848/nacos/v3/client/ai/skills/search' \
-H "accessToken: ${NACOS_ACCESS_TOKEN}" \
--data-urlencode 'namespaceId=public' --data-urlencode 'query=travel' \
--data-urlencode 'pageNo=1' --data-urlencode 'pageSize=20'

3.19. 搜索 Prompt 资源

接口描述

按关键词和标签分页搜索当前可见且启用的 Prompt,空查询列出资源。获取模板内容请使用 Prompt 查询接口。

起始版本

3.3.0

请求方式

GET

请求URL

/nacos/v3/client/ai/prompt/search

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认 public。
querystring否搜索文本,最多 1024 字符。
tagsAllarray<string>否可重复传入的标签,须全部匹配,最多 32 个非空值。
pageNointeger否正整数,默认 1。
pageSizeinteger否正整数,默认 100。

返回数据

参数名参数类型描述
dataPage<PromptMetaSummary>Prompt 分页结果。
data.totalCountinteger匹配资源总数。
data.pageNumberinteger当前页码。
data.pagesAvailableinteger总页数。
data.pageItemsarray<PromptMetaSummary>当前页元数据摘要,包含 promptKey、描述、业务标签和版本信息。

示例

Terminal window
curl -sS -G 'http://127.0.0.1:8848/nacos/v3/client/ai/prompt/search' \
-H "accessToken: ${NACOS_ACCESS_TOKEN}" \
--data-urlencode 'namespaceId=public' --data-urlencode 'query=assistant' \
--data-urlencode 'pageNo=1' --data-urlencode 'pageSize=20'

3.20. 跨类型搜索 AI 资源

接口描述

使用游标搜索当前可见且启用的 AI 资源。空白 query 列出资源;非空时按相关度搜索。结果来自异步同步的索引,新发布的内容可能暂未出现。返回资源摘要,调用或下载内容仍需使用相应资源接口。

起始版本

3.3.0

请求方式

GET

请求URL

/nacos/v3/client/ai/resources/search

请求参数

参数名类型必填参数描述
namespaceIdstring否命名空间,默认 public。
querystring否搜索文本,最多 1024 字符。
resourceTypesarray<string>否可重复传入 agent、agentspec、skill、prompt、mcp;省略时搜索全部支持类型。
tagsAllarray<string>否可重复传入的标签,须全部匹配。
capabilitiesAnyarray<string>否可重复传入的能力,任一匹配。
cursorstring否上一页返回的 nextCursor,首请求省略;原样传回,最多 2048 字符。
limitinteger否每页条数,默认 20,范围 1~100。

每个数组过滤参数最多 32 个非空值;不同过滤条件同时满足。翻页时保持搜索条件不变,没有 nextCursor 即已到末页。

返回数据

参数名参数类型描述
dataAiResourceSearchResponse游标分页结果,不包含页码和总数。
data.itemsarray<AiResourceSearchItem>本页资源摘要。
data.nextCursorstring下一页游标;末页不返回。
data.items[i].namespaceIdstring命名空间。
data.items[i].resourceTypestring资源类型。
data.items[i].resourceNamestring资源名称。
data.items[i].resourceVersionstring当前版本。
data.items[i].displayNamestring展示名称。
data.items[i].descriptionstring描述。
data.items[i].tagsarray<string>标签。
data.items[i].capabilitiesarray<string>能力。
data.items[i].representativeQueriesarray<string>代表性查询文本。
data.items[i].metadatamap<string, any>资源扩展元数据,值可为任意 JSON 类型。
data.items[i].createTimeinteger创建时间。
data.items[i].updateTimeinteger更新时间。
data.items[i].scoreinteger相关度分数。

示例

Terminal window
curl -sS -G 'http://127.0.0.1:8848/nacos/v3/client/ai/resources/search' \
-H "accessToken: ${NACOS_ACCESS_TOKEN}" \
--data-urlencode 'namespaceId=public' --data-urlencode 'query=travel' \
--data-urlencode 'resourceTypes=agent' --data-urlencode 'resourceTypes=skill' \
--data-urlencode 'limit=20'

无匹配资源示例:

{"code":0,"message":"success","data":{"items":[]}}

3.21. 查询 AI HTTP 能力

接口描述

查询当前节点实现的 Client HTTP 能力,用于客户端选择接入方式。遵循 Client 鉴权配置,只校验身份,不要求具体 AI 资源权限。结果不授予资源访问权限,也不代表全部节点支持或迁移已完成。

起始版本

3.3.0

请求方式

GET

请求URL

/nacos/v3/client/ai/capabilities

请求参数

无。

返回数据

参数名参数类型描述
datamap<string, any>当前节点的能力声明;已定义字段的值类型如下。
data.schemaVersioninteger声明格式版本,当前为 1。
data.capabilitiesmap<string, boolean>能力开关:radV1、mcp、skill、prompt、agentSpec。

示例

Terminal window
curl -sS 'http://127.0.0.1:8848/nacos/v3/client/ai/capabilities' \
-H "accessToken: ${NACOS_ACCESS_TOKEN}"
{"code":0,"message":"success","data":{"schemaVersion":1,"capabilities":{"radV1":true,"mcp":true,"skill":true,"prompt":true,"agentSpec":true}}}