OpenClaw-xiaozhi MCP Server
A bridge server that connects MCP-compatible clients to the OpenClaw (Jarvis) AI assistant for asynchronous task processing and real-time WebSocket communication. It enables users to send intents, execute tasks, and query results using a suite of tools including process_intent, ask_jarvis, and execute_task.
README
OpenClaw--xiaozhi MCP Server
OpenClaw-xiaozhi MCP Server 是一个基于 Model Context Protocol (MCP) 协议的智能桥接服务器,用于将用户意图通过 MCP 转发给 OpenClaw(贾维斯)AI 助手处理。支持异步任务处理、WebSocket 实时通信和任务完成回调通知。
📖 目录
✨ 功能特点
- 🚀 异步处理 - 立即返回"处理中"状态,不阻塞客户端
- 🔄 WebSocket 实时通信 - 与小智 MCP 服务器保持长连接
- 📬 回调通知 - 任务完成后自动通知用户
- 🛠️ 多工具支持 - 提供多种工具接口(ask_jarvis, execute_task, process_intent 等)
- 🔌 自动重连 - 连接断开后自动重连,支持指数退避
- 📊 完整 MCP 协议 - 支持 JSON-RPC 2.0 和 MCP 2024-11-05 协议
- 💼 生产就绪 - 支持 Windows 服务、任务计划程序等多种部署方式
🏗️ 系统架构
┌─────────────────┐ ┌─────────────────────┐ ┌─────────────────┐
│ MCP 客户端 │────▶│ OpenClaw MCP │────▶│ 小智 MCP │
│ (Claude 等) │◀────│ Server (本服务) │◀────│ WebSocket │
└─────────────────┘ └─────────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ OpenClaw │
│ (贾维斯 AI) │
└─────────────────┘
工作流程
1. MCP 客户端发送意图
│
▼
2. MCP Server 立即返回 task_id(状态:processing)
│
▼
3. 异步发送给 OpenClaw 处理
│
▼
4. OpenClaw 处理完成后通过 WebSocket 回调
│
▼
5. 客户端可通过 get_task_result 查询结果
📋 环境要求
必需软件
| 软件 | 版本 | 说明 |
|---|---|---|
| Python | 3.9+ | 推荐 Python 3.11+ |
| pip | 21.0+ | Python 包管理器 |
可选软件(用于生产部署)
| 软件 | 用途 |
|---|---|
| Windows 10/11 | 运行环境 |
| PowerShell 5.1+ | 运行安装脚本 |
Python 依赖
| 包名 | 版本 | 用途 |
|---|---|---|
| mcp | >=1.0.0 | MCP 协议实现 |
| websockets | >=12.0 | WebSocket 通信 |
| python-dotenv | >=1.0.0 | 环境变量管理 |
📦 安装指南
方法一:源码安装(推荐)
# 1. 克隆或下载项目
cd C:\Users\user\Desktop\openclaw-mcp-server
# 2. 创建虚拟环境
python -m venv venv
# 3. 激活虚拟环境(Windows)
venv\Scripts\activate
# 4. 安装依赖
pip install -r requirements.txt
方法二:使用 install-startup.bat
# 双击运行或命令行执行
install-startup.bat
⚙️ 配置说明
1. 环境变量配置
复制 .env.example 为 .env:
copy .env.example .env
编辑 .env 文件,设置您的 Token:
# OpenClaw MCP Token
# 从 wss://api.xiaozhi.me/mcp/?token=xxx 中获取
OPENCLAW_TOKEN=your_token_here
2. 获取 Token
- 访问小智 MCP 平台
- 创建您的 Agent
- 复制包含 token 的 WebSocket URL
- 提取
token=后面的值填入.env
3. MCP 客户端配置
Claude Desktop 配置
编辑 Claude Desktop 配置文件(通常位于 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"openclaw": {
"command": "python",
"args": ["C:/Users/user/Desktop/openclaw-mcp-server/server.py"],
"env": {
"OPENCLAW_TOKEN": "your_token_here"
}
}
}
}
其他 MCP 客户端
{
"mcpServers": {
"openclaw": {
"command": "path/to/your/python",
"args": ["path/to/openclaw-mcp-server/server.py"],
"env": {
"OPENCLAW_TOKEN": "your_token"
}
}
}
}
🚀 使用方法
启动服务器
# 激活虚拟环境
venv\Scripts\activate
# 运行服务器
python server.py
使用 run.bat 脚本
# 直接运行
run.bat
测试连接
# 运行测试脚本
python test_mcp_full.py
📡 API 参考
工具列表
1. process_intent
发送用户意图并立即返回任务 ID(异步处理)。
参数:
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| intent | string | ✅ | 用户意图或请求内容 |
| context | object | ❌ | 可选的上下文信息 |
请求示例:
{
"intent": "帮我写一封邮件",
"context": {
"tone": "formal",
"recipient": "client"
}
}
响应示例:
{
"status": "processing",
"task_id": "task_1",
"message": "意图已接收,正在处理中...",
"intent_preview": "帮我写一封邮件"
}
2. get_task_result
查询任务处理结果。
参数:
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| task_id | string | ✅ | 任务 ID(由 process_intent 返回) |
请求示例:
{"task_id": "task_1"}
响应示例(完成):
{
"status": "completed",
"result": {
"content": "尊敬的客户,..."
}
}
响应示例(处理中):
{
"status": "processing",
"message": "任务仍在处理中,请稍后查询"
}
3. ask_jarvis
向贾维斯提问获取智能回答。
参数:
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| question | string | ✅ | 要问的问题 |
| context | object | ❌ | 可选的上下文信息 |
4. execute_task
让贾维斯执行特定任务。
参数:
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| task_description | string | ✅ | 任务描述 |
| parameters | object | ❌ | 任务参数 |
5. get_status
获取贾维斯当前状态。
响应示例:
{
"name": "贾维斯",
"status": "online",
"version": "1.0.0",
"capabilities": [
"自然语言理解",
"任务执行",
"信息查询",
"工具调用"
]
}
🖥️ 部署选项
方案一:Windows 服务(推荐用于生产环境)
特点:
- ✅ 最稳定,系统级服务
- ✅ 开机自动启动
- ✅ 进程崩溃自动重启
- ✅ 完善的日志管理
- ⚠️ 需要管理员权限
安装步骤:
- 右键点击
install-service.ps1 - 选择 "以管理员身份运行"
- 按提示完成安装
管理命令:
# 启动服务
net start JarvisMCPBridge
# 停止服务
net stop JarvisMCPBridge
# 查看状态
sc query JarvisMCPBridge
# 查看日志
Get-Content service.log -Tail 50
# 卸载服务(管理员)
.\uninstall-service.ps1
方案二:任务计划程序(适合个人使用)
特点:
- ✅ 无需管理员权限
- ✅ 用户登录时自动启动
- ✅ 进程崩溃自动重启
安装步骤:
- 双击运行
install-task.ps1 - 按提示完成安装
管理命令:
# 启动任务
Start-ScheduledTask -TaskName JarvisMCPBridge_AutoStart
# 停止任务
Stop-ScheduledTask -TaskName JarvisMCPBridge_AutoStart
# 查看状态
Get-ScheduledTask -TaskName JarvisMCPBridge_AutoStart
方案三:开机启动文件夹(简单测试)
步骤:
- 按
Win + R - 输入
shell:startup - 创建
start-service.bat的快捷方式
部署方案对比
| 特性 | Windows 服务 | 任务计划 | 启动文件夹 |
|---|---|---|---|
| 管理员权限 | 需要 | 不需要 | 不需要 |
| 开机启动 | ✅ | ✅ (登录时) | ✅ (登录时) |
| 自动重启 | ✅ | ✅ | ❌ |
| 日志管理 | ✅ | ⚠️ | ❌ |
| 稳定性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 推荐场景 | 生产环境 | 个人使用 | 临时测试 |
🐛 故障排除
常见问题
1. OPENCLAW_TOKEN 未设置
错误信息:
ValueError: 请设置 OPENCLAW_TOKEN 环境变量
解决方案:
- 确保
.env文件存在于项目根目录 - 检查
.env文件中OPENCLAW_TOKEN是否正确设置
2. WebSocket 连接失败
错误信息:
连接失败:...
解决方案:
- 检查网络连接
- 验证 Token 是否有效
- 检查防火墙设置
3. 依赖安装失败
解决方案:
# 升级 pip
python -m pip install --upgrade pip
# 重新安装依赖
pip install -r requirements.txt --force-reinstall
4. 服务无法启动
诊断步骤:
# 查看详细错误
sc qc JarvisMCPBridge
# 手动测试运行
cd C:\Users\user\Desktop\openclaw-mcp-server
venv\Scripts\activate
python bridge.py
日志查看
# 查看服务日志
Get-Content service.log -Tail 100
# 持续跟踪日志
Get-Content service.log -Wait -Tail 20
检查 Python 环境
# 确认 Python 路径
where python
# 确认虚拟环境激活
echo %VIRTUAL_ENV%
# 检查已安装的包
pip list | Select-String "websockets|mcp|dotenv"
📁 项目结构
openclaw-mcp-server/
├── server.py # MCP 服务器主程序
├── bridge.py # 小智桥接器(完整 MCP 协议)
├── openclaw_client.py # OpenClaw WebSocket 客户端
├── tools.py # MCP 工具定义
├── config.py # 配置管理
├── requirements.txt # Python 依赖
├── .env # 环境变量(需自行创建)
├── .env.example # 环境变量示例
├── manifest.json # 项目清单
├── mcp-client-config.json # MCP 客户端配置示例
│
├── run.bat # 快速运行脚本
├── start-service.bat # 服务启动脚本
├── install-service.ps1 # 安装 Windows 服务
├── uninstall-service.ps1 # 卸载服务
├── install-task.ps1 # 安装任务计划
├── install-startup.bat # 快速安装脚本
│
├── test_client.py # 客户端测试
├── test_mcp_full.py # 完整 MCP 测试
│
├── README.md # 本文档
├── SERVICE_GUIDE.md # 服务部署指南
├── SETUP_COMPLETE.md # 安装完成说明
└── TEST_REPORT.md # 测试报告
🔧 开发指南
添加新工具
在 tools.py 中添加新的工具定义:
@mcp.tool()
def your_new_tool(param1: str, param2: int = 0) -> dict:
"""
工具描述
Args:
param1: 参数 1 说明
param2: 参数 2 说明
Returns:
返回结果
"""
# 实现逻辑
return {"result": "success"}
调试模式
# 启用详细日志
python -u server.py 2>&1 | tee debug.log
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📞 支持
如有问题,请提交 Issue 或联系维护者。
🤖 Powered by OpenClaw (贾维斯)
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。