【实战】OpenClaw调用本地部署的Nacos注册的Library MCP 服务

未来已来,只需一句指令,养龙虾专栏导航,持续更新ing...

一、背景介绍

业务场景中,工具的Prompt(提示词)需要根据实际需求快速迭代和优化。传统方式下,任何Prompt的变更都可能需要重新部署应用,流程繁琐,无法满足快速更新、调试和验证的需求。

使用阿里开源的Nacos 作为 MCP Registry,实现 Prompt 动态更新,Nacos 在此架构中担任 MCP Registry 的角色,负责服务注册与配置管理,完美解决了Prompt动态更新的痛点。

  • 动态配置管理: 可以将MCP工具的Prompt、描述等元数据作为配置项托管在Nacos中。
  • 实时更新生效: 当需要调整或优化某个工具的Prompt时,只需在Nacos控制台修改对应的配置。MCP Server会实时监听并拉取最新的配置,无需重启服务或重新部署应用,即可实现Prompt的快速更新、调试与验证。

MCP

**MCP(Model Context Protocol,模型上下文协议)
用户
OpenClaw AI助手
MCP客户端

mcporter
MCP协议层
MCP服务器

Library服务
图书数据库/API

核心设计思想:MCP 采用客户端-服务器架构,AI 应用(客户端)通过标准化接口连接 MCP 服务器,服务器再与底层工具交互。这种隔离设计确保 AI 不会直接接触敏感资源,提升了安全性和可审计性。

OpenClaw 与 MCP 的关系

OpenClaw 是一个自托管的 AI 助手运行时,它通过 mcporter 组件作为 MCP 客户端,连接各种外部 MCP 服务器。mcporter 是一个 TypeScript 运行时和 CLI 工具,支持零配置发现、调用 MCP 服务,并自动生成类型安全的客户端代码。

为什么选择 Nacos 托管 MCP 服务?

Nacos 3.0+ 原生支持 MCP Registry 能力,将 MCP 服务注册到 Nacos 具有以下优势:

优势 说明
集中管理 服务配置统一存储,支持多版本管理
动态更新 工具描述和参数支持运行时热更新,无需重启
零代码改造 通过配置即可将现有 HTTP 服务转换为 MCP 服务
生态集成 与 Spring AI Alibaba、Dify、Higress 等无缝集成

二、准备工作

或者,直接参阅:【实战】HiMarket本地化部署指南

1. 确认 Nacos 版本与环境

版本要求:Nacos Server ≥ 3.0.1(MCP Registry 功能从 3.0 版本开始支持)

检查 Nacos 服务状态:

bash 复制代码
# 检查 Nacos 是否运行(默认端口 8080)
curl http://localhost:8080/nacos/v3/console/health/readiness

预期返回:

json 复制代码
{"status": "UP", "components": {...}}

2. 确认 Nacos 中的 MCP 服务

登录 Nacos 控制台(http://localhost:8080/nacos),在左侧菜单找到 "AI MCP""MCP 管理" 模块,确认:

  • ✅ 已创建命名空间(例如 public,这是 Nacos 的默认命名空间)
  • ✅ 已注册名为 library 的 MCP 服务
  • ✅ 服务类型为 streamablesse(HTTP 流式传输协议)

发现与调用
OpenClaw 环境
mcporter.json 配置
mcporter CLI
OpenClaw Gateway
Nacos MCP Registry
命名空间: public
MCP Server: library

版本: 1.0.0

协议: streamable-http
命名空间: dev
命名空间: prod

3. 获取服务访问信息

Nacos 3.x 支持通过 MCP RouterHigress 网关 暴露 MCP 服务。典型的访问路径格式为:

复制代码
http://{网关地址}/{MCP路由前缀}/{服务名}/sse

示例(通过 Higress 网关访问):

bash 复制代码
curl -i "http://localhost:8080/mcp/library/sse" \
  -H "Authorization: Bearer <你的token>"

⚠️ 说明 :URL 路径 http://localhost:8080/v3/console/ai/mcp?mcpName=library&namespaceId=public&username=nacosNacos 控制台内部 API,并非标准的 MCP 客户端接入点。实际接入时应通过 Higress 网关或 Nacos MCP Router 暴露的端点。

正确的 URL 格式

  • 通过 Higress 网关:http://{higress-domain}/mcp/{mcp-server-name}/sse
  • 直接访问(streamable HTTP):http://{service-host}:{port}/mcp

如下图所示:


三、配置 OpenClaw

1. 找到 mcporter 配置文件

mcporter 使用 mcporter.json 作为 MCP 服务器配置文件。

配置加载优先级(从高到低):

  1. --config 命令行参数指定的路径
  2. MCPORTER_CONFIG 环境变量
  3. 当前项目 ./config/mcporter.json
  4. 用户主目录 ~/.mcporter/mcporter.json(或 .jsonc

OpenClaw 集成配置

bash 复制代码
# 1. 启用 mcporter 技能
openclaw config set skills.entries.mcporter.enabled true

# 2. 设置配置文件路径(根据实际路径调整)
openclaw config set skills.entries.mcporter.env.MCPORTER_CONFIG "~/.mcporter/mcporter.json"

2. 编辑 mcporter.json

创建或编辑配置文件:

bash 复制代码
mkdir -p ~/.mcporter
touch ~/.mcporter/mcporter.json

添加 library 服务配置:

json 复制代码
{
  "mcpServers": {
    "library": {
      "url": "http://localhost:8080/mcp/library/sse",
      "headers": {
        "Authorization": "Bearer eyJhbGciOiJIUzI1NiJ9..."
      }
    }
  }
}

字段说明

字段 类型 说明
url string MCP 服务的 SSE 或 Streamable HTTP 端点地址
headers.Authorization string Bearer Token 认证头,用于访问受保护的 MCP 服务
type string (可选)传输协议类型:ssestreamable-http

💡 配置合并机制 :mcporter 支持系统配置(~/.mcporter/)和项目配置(./config/)的层级合并。全局服务在所有项目中可用,项目配置可覆盖全局设置。

配置类型对比

服务类型 配置方式 适用场景
HTTP/SSE url + headers 远程托管的 MCP 服务(如 Nacos 注册的服务)
Stdio command + args 本地运行的 MCP 服务器(如 Python 脚本)

四、加载与验证

1. 重启 OpenClaw Gateway

更改配置后,需要重启网关进程以加载新配置:

bash 复制代码
openclaw gateway restart

2. 使用 mcporter CLI 验证

bash 复制代码
# 列出所有配置的 MCP 服务器
mcporter list

# 查看 library 服务的工具列表(带详细 Schema)
mcporter list library --schema

# 测试调用 list_categories 工具
mcporter call library.list_categories

预期输出示例:

复制代码
📂 library 工具列表 (4 个工具):
• list_categories - 获取图书分类列表
• list_book_names - 列出所有图书(支持 available 参数过滤)
• search_books - 搜索图书(支持 title/author/category 参数)
• get_book_details - 获取图书详情(通过 isbn 或 title 查询)

3. 在 OpenClaw 中调用

配置成功后,OpenClaw可以通过自然语言或技能前缀调用:

用户意图 实际调用的 Skill 底层 MCP 工具
"列出所有可借的图书" library__list_book_names(available=true) list_book_names
"搜索刘慈欣的书" library__search_books(author="刘慈欣") search_books
"查询《三体》详情" library__get_book_details(title="三体") get_book_details
"有哪些图书分类?" library__list_categories() list_categories

工作原理
Library服务 Nacos MCP mcporter OpenClaw 用户 Library服务 Nacos MCP mcporter OpenClaw 用户 "搜索刘慈欣的书" 意图识别 → 选择 library__search_books 调用 skill HTTP SSE 请求 路由到目标服务 返回图书列表 SSE 响应 结构化数据 "找到刘慈欣的3本图书..."

如下图所示:


五、Nacos MCP 服务管理进阶

1. 动态更新工具描述

Nacos 支持在不重启服务的情况下,通过控制台动态修改 MCP 工具的描述和参数定义:

  1. 登录 Nacos 控制台 → AI MCP → MCP 列表
  2. 找到 library 服务,点击 "编辑"
  3. 修改工具描述(帮助 AI 更好地理解工具用途)
  4. 保存后,改动实时生效

2. 版本管理与灰度发布

Nacos MCP Registry 支持多版本管理:

json 复制代码
// 在 mcporter.json 中指定版本
{
  "mcpServers": {
    "library": {
      "url": "http://localhost:8080/mcp/library/sse",
      "headers": { "Authorization": "Bearer ..." },
      "env": {
        "MCP_SERVER_VERSION": "2.0.0"
      }
    }
  }
}

3. 通过 Nacos MCP Router 智能路由

对于复杂的 MCP 服务集群,可以部署 Nacos MCP Router
OpenClaw

mcporter
Nacos MCP Router
智能路由
Library v1.0

基础查询
Library v2.0

高级推荐
Library Dev

测试功能

Router 提供三种核心工具:

  • search_mcp_server:根据任务描述智能筛选 MCP 服务
  • add_mcp_server:动态初始化指定的 MCP 服务
  • use_mcp_tool:代理调用目标服务的具体工具

六、常见问题与排查

1. mcporter list 看不到 library 服务

检查项 排查命令/方法
JSON 语法错误 jq . ~/.mcporter/mcporter.json
配置文件路径 echo $MCPORTER_CONFIG
配置加载顺序 mcporter list --verbose(查看配置来源)
网关重启状态 systemctl status openclaw-gateway

2. 调用失败:401 Unauthorized

  • ✅ 确认 Nacos 的 Access Token 未过期(Nacos 默认 Token 有过期时间)
  • ✅ 确认 Authorization header 格式为 Bearer <token>(注意 Bearer 后的空格)
  • ✅ 检查 Nacos 是否开启认证(nacos.core.auth.enabled=true

3. 调用超时或连接被拒绝

bash 复制代码
# 测试 Nacos 服务连通性
curl http://localhost:8848/nacos/v3/console/health/readiness

# 测试 MCP 端点(替换为实际地址)
curl -N http://localhost:8080/mcp/library/sse \
  -H "Authorization: Bearer <token>"
  • ✅ 确认 Nacos 服务地址和端口正确(默认 8848)
  • ✅ 如果是远程服务,检查防火墙/安全组规则
  • ✅ 确认 Higress/Nacos MCP Router 已正确配置并运行

4. 工具调用返回空结果或错误

  • ✅ 在 Nacos 控制台验证 library 服务的工具配置是否正确
  • ✅ 检查工具的后端地址格式(应为 http://host:port,而非 http:/host:port
  • ✅ 使用 mcporter call library.{tool_name} --args '{...}' 显式传递参数测试

5. 如何更新 Token?

编辑 ~/.mcporter/mcporter.json,替换 headers.Authorization 的值,然后重载 OpenClaw Gateway。


七、总结

通过以上步骤,你已经成功将 Nacos 托管的 library MCP 服务集成到 OpenClaw 中。

核心流程回顾
运行阶段
OpenClaw 接收用户查询
mcporter 路由请求
Nacos MCP Router
Library 服务执行
返回结果给 OpenClaw
配置阶段
准备 Nacos 3.0+ 环境
注册 library MCP 服务
配置 mcporter.json

现在你可以

  • ✅ 在 OpenClaw 对话框中使用自然语言查询图书
  • ✅ 通过 library__* 技能前缀精确调用图书管理功能
  • ✅ 利用 Nacos 的动态更新能力,无需重启即可调整工具行为
  • ✅ 通过 Nacos MCP Registry 管理多个 MCP 服务的注册与发现

🌟 扩展提示:Nacos MCP Registry 不仅支持 Library 服务,还可以托管 MySQL、Redis、GitHub、Slack 等各类 MCP 服务,构建企业统一的 AI 工具市场。结合 Spring AI Alibaba 框架,你可以快速将现有微服务"零代码"改造为 MCP 服务。

相关推荐
嵌入式老牛1 小时前
OpenCV与MFC混合编程中的图像格式转换研究
人工智能·opencv·mfc
Raink老师6 小时前
【AI面试临阵磨枪】Harness 的环境隔离(沙箱)如何设计?文件、网络、命令、权限四层隔离?
人工智能·ai 面试
人工智能AI技术7 小时前
Python 断言 assert 基础用法
人工智能
我是发哥哈7 小时前
横向评测:五款主流AI培训课程效果与选型分析
人工智能
GetcharZp7 小时前
告别昂贵显卡!llama.cpp 终极指南:在你的电脑上满速运行大模型!
人工智能
AI木马人7 小时前
3.【Prompt工程实战】如何设计一个可复用的Prompt系统?(避免每次手写提示词)
linux·服务器·人工智能·深度学习·prompt
Agent产品评测局8 小时前
临床前同源性反应种属筛选:利用AI Agent加速筛选的实操方案 —— 2026企业级智能体选型与技术落地指南
人工智能·ai·chatgpt
ting94520008 小时前
HunyuanOCR 全方位深度解析
人工智能·架构
woai33648 小时前
AI通识-大模型的原理&应用
人工智能
头发够用的程序员8 小时前
从滑动窗口到矩阵运算:img2col算法基本原理
人工智能·算法·yolo·性能优化·矩阵·边缘计算·jetson