使用说明
OpenClaw MCP服务器
MCP(模型上下文协议)服务器,向Claude Code和其他MCP兼容客户端公开OpenClaw网关工具。
特性
允许Claude Code(和任何MCP客户端)访问:
- 消息传递 --通过Telegram、WhatsApp、Discord、Slack、Signal、iMessage、谷歌聊天发送消息
- 会话 --列出、检查并与其他OpenClaw课程交流
- 调度 --为自动化任务创建和管理cron作业
- 节点 --控制配对设备(通知、摄像头、位置、远程命令)
- 网络 --搜索和获取网络内容
- 记忆 --搜索OpenClaw的内存文件
- 文本转语音 --文本到语音转换
- 网关 --状态和配置访问
先决条件
- Node.js 18+
- OpenClaw网关在本地运行(默认值:
http://127.0.0.1:18789) - 网关身份验证令牌(如果已配置)
安装
# Clone and install
cd /path/to/openclaw-mcp-server
npm install
npm run build
# Or install globally
npm install -g .
配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
OPENCLAW_GATEWAY_URL |
网关HTTP URL | http://127.0.0.1:18789 |
OPENCLAW_GATEWAY_TOKEN |
身份验证令牌(如果需要) | (无) |
客户端设置
OpenClaw MCP服务器可与任何兼容MCP的客户端配合使用。以下是常见客户端的配置说明。
克劳德桌面版
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"openclaw": {
"command": "node",
"args": ["/absolute/path/to/openclaw-mcp-server/dist/index.js"],
"env": {
"OPENCLAW_GATEWAY_TOKEN": "your-token-here"
}
}
}
}
备注:编辑配置文件后重新启动Claude Desktop。
克劳德代码(CLI)
使用Claude Code CLI添加:
# Using the CLI
claude mcp add openclaw -- node /path/to/openclaw-mcp-server/dist/index.js
# Or with environment variables
claude mcp add openclaw -e OPENCLAW_GATEWAY_TOKEN=your-token -- node /path/to/openclaw-mcp-server/dist/index.js
或手动编辑 ~/.claude/settings.json:
{
"mcpServers": {
"openclaw": {
"command": "node",
"args": ["/absolute/path/to/openclaw-mcp-server/dist/index.js"],
"env": {
"OPENCLAW_GATEWAY_TOKEN": "your-token-here"
}
}
}
}
Zed编辑
添加到Zed设置文件(用打开 Zed: Open Settings 或编辑 ~/.config/zed/settings.json):
{
"context_servers": {
"openclaw": {
"command": {
"path": "node",
"args": ["/absolute/path/to/openclaw-mcp-server/dist/index.js"]
},
"settings": {
"env": {
"OPENCLAW_GATEWAY_TOKEN": "your-token-here"
}
}
}
}
}
备注:添加配置后,您可能需要重新加载Zed。
Cline(VSCode扩展)
- 打开VSCode设置(Cmd/Ctrl+,)
- 搜索“临床:MCP服务器”
- 点击“在settings.json中编辑”
- 添加OpenClaw服务器配置:
{
"cline.mcpServers": {
"openclaw": {
"command": "node",
"args": ["/absolute/path/to/openclaw-mcp-server/dist/index.js"],
"env": {
"OPENCLAW_GATEWAY_TOKEN": "your-token-here"
}
}
}
}
或者,使用临床MCP设置UI:
- 打开Cline面板
- 点击设置/齿轮图标
- 导航到MCP服务器部分
- 使用以下命令添加服务器:
node /absolute/path/to/openclaw-mcp-server/dist/index.js
备注:配置更改后重新加载VSCode窗口。
Windsurf编辑器
添加到Windsurf的配置文件(~/.windsurf/settings.json 或通过设置UI):
{
"mcp.servers": {
"openclaw": {
"command": "node",
"args": ["/absolute/path/to/openclaw-mcp-server/dist/index.js"],
"env": {
"OPENCLAW_GATEWAY_TOKEN": "your-token-here"
}
}
}
}
或者使用Windsurf设置UI:
- 打开设置(Cmd/Ctrl+,)
- 导航到“MCP服务器”
- 点击“添加服务器”
- 输入服务器详细信息:
- 姓名:
openclaw - 命令:
node - Args:
/absolute/path/to/openclaw-mcp-server/dist/index.js - 环境变量:
OPENCLAW_GATEWAY_TOKEN=your-token-here
- 姓名:
备注:添加配置后重新启动Windsurf。
其他MCP客户端
对于任何其他MCP兼容客户端,请使用标准MCP服务器配置格式:
{
"command": "node",
"args": ["/absolute/path/to/openclaw-mcp-server/dist/index.js"],
"env": {
"OPENCLAW_GATEWAY_TOKEN": "your-token-here"
}
}
重要说明
- 绝对路径:始终使用绝对路径(例如。,
/Users/username/...或C:\Users\...)在配置文件中,不是相对路径或~ - 令牌安全:如果您的OpenClaw网关需要身份验证,请设置
OPENCLAW_GATEWAY_TOKEN环境变量 - 网关URL:如果您的网关未在默认情况下运行
http://127.0.0.1:18789,setOPENCLAW_GATEWAY_URL在环境变量中 - 服务器重新启动:更改MCP服务器配置后,大多数客户端都需要重新启动或重新加载
可用工具
消息传递
openclaw_message_send
通过OpenClaw向各种消息平台(Telegram、WhatsApp、Discord、Slack、Signal、iMessage、Google Chat)发送消息。
自然语言示例:
- “给@john发一条电报,说‘下午3点开会’”
- “在Slack上给我的团队发消息:'部署已完成'”
- “向Discord上的开发频道发送无声通知”
参数:
message(字符串,必填)-要发送的消息文本channel(字符串,可选)-通道类型:telegram,whatsapp,discord,slack,signal,imessage,googlechattarget(字符串,可选)-目标聊天/用户ID或名称replyTo(字符串,可选)-要回复的消息IDsilent(布尔值,可选)-无需通知即可静默发送
输入示例:
{
"channel": "telegram",
"target": "@username",
"message": "Hello from OpenClaw!",
"silent": false
}
输出示例:
{
"success": true,
"messageId": "msg_123456",
"timestamp": "2026-02-02T10:30:00Z"
}
openclaw_message_broadcast
跨消息传递平台向多个目标广播消息。
自然语言示例:
- “向我的所有Telegram群组广播‘今晚10点服务器维护’”
- 在WhatsApp上向Alice、Bob和Charlie发送关于项目更新的消息
- “通知我联系人列表中的所有人此事件”
参数:
message(字符串,必填)-要广播的消息文本targets(字符串数组,必填)-目标ID列表channel(字符串,可选)-通道类型
输入示例:
{
"channel": "telegram",
"targets": ["@user1", "@user2", "@user3"],
"message": "Important announcement for everyone!"
}
输出示例:
{
"success": true,
"sent": 3,
"failed": 0,
"results": [
{ "target": "@user1", "status": "delivered" },
{ "target": "@user2", "status": "delivered" },
{ "target": "@user3", "status": "delivered" }
]
}
会话
openclaw_sessions_list
列出具有可选过滤功能的活动OpenClaw会话。
自然语言示例:
- “显示最近一小时的所有活动会话”
- “列出我的Telegram会话及其最近的消息”
- “在过去的30分钟里,有哪些会话处于活动状态?”
参数:
kinds(字符串数组,可选)-按会话种类/类型筛选activeMinutes(数字,可选)-按N分钟内的活动筛选limit(number,可选)-要返回的最大会话数messageLimit(数字,可选)-每个会话包括最后N条消息
输入示例:
{
"activeMinutes": 60,
"limit": 10,
"messageLimit": 5
}
输出示例:
{
"sessions": [
{
"sessionKey": "sess_abc123",
"kind": "telegram",
"label": "Main Chat",
"active": true,
"lastActivity": "2026-02-02T10:25:00Z",
"messageCount": 127,
"recentMessages": [
{ "role": "user", "content": "What's the weather?" },
{ "role": "assistant", "content": "Let me check..." }
]
}
],
"total": 1
}
openclaw_sessions_history
获取特定会话的完整消息历史记录。
自然语言示例:
- “显示会话sess_abc123的对话历史记录”
- “从我的主会话中获取最后100条消息”
- “获取Telegram会话的所有工具调用的历史记录”
参数:
sessionKey(字符串,必填)-用于获取历史记录的会话密钥limit(number,可选)-要返回的最大消息数includeTools(布尔值,可选)-在历史记录中包含工具调用
输入示例:
{
"sessionKey": "sess_abc123",
"limit": 50,
"includeTools": true
}
输出示例:
{
"sessionKey": "sess_abc123",
"messages": [
{
"timestamp": "2026-02-02T10:00:00Z",
"role": "user",
"content": "Search for OpenClaw documentation"
},
{
"timestamp": "2026-02-02T10:00:05Z",
"role": "assistant",
"content": "I'll search for that...",
"toolCalls": [
{ "tool": "web_search", "args": { "query": "OpenClaw documentation" } }
]
}
],
"total": 127
}
openclaw_sessions_send
向另一个活动的OpenClaw会话发送消息。
自然语言示例:
- “询问助理2是否完成了数据分析”
- “向监控会话发送一条消息,询问当前状态”
- “告诉后台会话暂停其工作”
参数:
message(字符串,必填)-要发送的消息sessionKey(字符串,可选)-目标会话密钥label(字符串,可选)-目标会话标签(sessionKey的替代品)timeoutSeconds(数字,可选)-响应超时
输入示例:
{
"label": "Assistant-2",
"message": "Can you help with the data analysis task?",
"timeoutSeconds": 30
}
输出示例:
{
"success": true,
"response": "Sure, I'll start working on the data analysis right away.",
"responseTime": 2.4
}
openclaw_sessions_spawn
在隔离会话中生成一个后台子代理,用于自主执行任务。
自然语言示例:
- “生成后台代理以监视服务器日志中的错误”
- “创建一个子代理来研究竞争对手,并在30分钟内总结结果”
- “在我处理其他任务的同时,启动一个单独的会话来处理客户支持消息”
参数:
task(字符串,必填)-子代理的任务描述agentId(字符串,可选)-要使用的特定代理IDmodel(字符串,可选)-要使用的型号(例如,“claude-sonnet-4”)label(字符串,可选)-人类可读的会话标签runTimeoutSeconds(数字,可选)-最长执行时间
输入示例:
{
"task": "Monitor the server logs and alert me if any errors occur in the next hour",
"label": "Log Monitor",
"model": "claude-sonnet-4",
"runTimeoutSeconds": 3600
}
输出示例:
{
"success": true,
"sessionKey": "sess_xyz789",
"label": "Log Monitor",
"status": "running",
"startTime": "2026-02-02T10:30:00Z"
}
调度
openclaw_cron_list
列出所有计划的cron作业。
自然语言示例:
- “显示我的所有计划任务”
- “列出所有cron作业,包括已禁用的作业”
- “我设置了哪些自动化任务?”
参数:
includeDisabled(布尔值,可选)-在列表中包含已禁用的作业
输入示例:
{
"includeDisabled": true
}
输出示例:
{
"jobs": [
{
"id": "job_001",
"name": "Daily Backup",
"schedule": { "hour": 2, "minute": 0 },
"enabled": true,
"nextRun": "2026-02-03T02:00:00Z",
"lastRun": "2026-02-02T02:00:00Z"
},
{
"id": "job_002",
"name": "Weekly Report",
"schedule": { "dayOfWeek": 1, "hour": 9, "minute": 0 },
"enabled": false
}
],
"total": 2
}
openclaw_cron_add
创建新的定时cron作业。
自然语言示例:
- “安排每天凌晨2点的备份”
- “创建一个定时任务,每天早上7点向我发送天气更新”
- “设置每周一上午9点生成的周报”
参数:
job(对象,必填)-作业定义包含:name(string)-作业名称schedule(对象)-时间表规范(分钟、小时、星期等)payload(对象)-任务有效载荷/配置sessionTarget(string)-目标会话:main或isolatedenabled(boolean)-作业是否启用
输入示例:
{
"job": {
"name": "Morning Weather Alert",
"schedule": {
"hour": 7,
"minute": 0
},
"payload": {
"action": "send_message",
"channel": "telegram",
"message": "Good morning! Here's today's weather forecast."
},
"sessionTarget": "main",
"enabled": true
}
}
输出示例:
{
"success": true,
"jobId": "job_003",
"nextRun": "2026-02-03T07:00:00Z"
}
openclaw_cron_remove
删除计划的cron作业。
自然语言示例:
- “删除早晨天气警报作业”
- “删除cron作业job_003”
- “取消每日备份任务”
参数:
jobId(字符串,必填)-要删除的作业ID
输入示例:
{
"jobId": "job_003"
}
输出示例:
{
"success": true,
"message": "Job job_003 removed successfully"
}
openclaw_cron_run
触发cron作业,使其在计划时间之外立即运行。
自然语言示例:
- “立即运行备份作业”
- “立即触发周报”
- “立即执行job_001”
参数:
jobId(字符串,必填)-要执行的作业ID
输入示例:
{
"jobId": "job_001"
}
输出示例:
{
"success": true,
"executionId": "exec_12345",
"startTime": "2026-02-02T10:30:00Z",
"status": "completed",
"result": "Backup completed successfully"
}
节点(配对设备)
openclaw_nodes_status
获取所有配对节点(移动设备、远程机器)的状态信息。
自然语言示例:
- “显示我所有连接设备的状态”
- “哪些节点当前处于联机状态?”
- “我的iPhone电池电量是多少?”
参数: 无
输入示例:
{}
输出示例:
{
"nodes": [
{
"id": "node_iphone",
"name": "iPhone 15 Pro",
"type": "mobile",
"platform": "ios",
"online": true,
"lastSeen": "2026-02-02T10:29:00Z",
"battery": 87,
"capabilities": ["camera", "location", "notifications"]
},
{
"id": "node_laptop",
"name": "MacBook Pro",
"type": "computer",
"platform": "macos",
"online": true,
"lastSeen": "2026-02-02T10:30:00Z"
}
],
"total": 2
}
openclaw_nodes_notify
向配对节点发送推送通知。
自然语言示例:
- “向我的iPhone发送通知:'任务已成功完成'”
- “以高优先级提醒我的手机部署已完成”
- “通知我的所有设备晚餐准备好了”
参数:
title(字符串,必填)-通知标题body(字符串,必填)-通知正文/消息node(字符串,可选)-节点ID或名称(默认为所有节点)priority(字符串,可选)-优先级:passive,active,timeSensitive
输入示例:
{
"node": "node_iphone",
"title": "Task Complete",
"body": "Your data analysis has finished processing.",
"priority": "timeSensitive"
}
输出示例:
{
"success": true,
"delivered": true,
"node": "node_iphone",
"timestamp": "2026-02-02T10:30:00Z"
}
openclaw_nodes_camera_snap
从节点的相机中捕获照片。
自然语言示例:
- “用iPhone的后置摄像头拍照”
- “用手机上的两个摄像头拍一张照片”
- “从前置摄像头拍摄高质量图像”
参数:
node(字符串,可选)-节点ID或名称facing(字符串,可选)-要使用的相机:front,back,bothquality(数字,可选)-图像质量0-100
输入示例:
{
"node": "node_iphone",
"facing": "back",
"quality": 85
}
输出示例:
{
"success": true,
"images": [
{
"camera": "back",
"url": "https://openclaw.gateway/images/img_abc123.jpg",
"size": 2456789,
"timestamp": "2026-02-02T10:30:00Z"
}
]
}
openclaw_nodes_location
从配对节点获取当前位置。
自然语言示例:
- “我的iPhone现在在哪里?”
- “获取我手机的精确位置”
- “显示node_iphone的当前位置”
参数:
node(字符串,可选)-节点ID或名称desiredAccuracy(字符串,可选)-精度等级:coarse,balanced,precise
输入示例:
{
"node": "node_iphone",
"desiredAccuracy": "precise"
}
输出示例:
{
"success": true,
"location": {
"latitude": 37.7749,
"longitude": -122.4194,
"accuracy": 10,
"altitude": 52,
"timestamp": "2026-02-02T10:30:00Z",
"address": "San Francisco, CA"
}
}
openclaw_nodes_run
在配对节点上执行命令。
自然语言示例:
- “在我的笔记本电脑上运行'ls-la'”
- “在远程服务器上执行git pull”
- “通过运行'df-h'检查node_laptop上的磁盘空间”
参数:
command(字符串数组,必填)-要执行的命令和参数node(字符串,可选)-节点ID或名称cwd(string,可选)-命令执行的工作目录timeoutMs(数字,可选)-命令超时(毫秒)
输入示例:
{
"node": "node_laptop",
"command": ["ls", "-la", "/home/user/projects"],
"timeoutMs": 5000
}
输出示例:
{
"success": true,
"stdout": "total 48\ndrwxr-xr-x 6 user staff 192 Feb 2 10:00 .\ndrwxr-xr-x 12 user staff 384 Feb 1 09:00 ..\n...",
"stderr": "",
"exitCode": 0,
"executionTime": 124
}
网络
openclaw_web_search
使用Brave Search API搜索网页。
自然语言示例:
- “在网上搜索‘2026年最佳TypeScript实践’”
- “查找过去一周关于人工智能助手的最新文章”
- “在线查找OpenClaw文档”
参数:
query(字符串,必填)-搜索查询count(number,可选)-要返回的结果数(1-10)country(字符串,可选)-本地化结果的2个字母的国家代码freshness(字符串,可选)-时间过滤器:pd(过去一天),pw(上周),pm(上个月),py(去年)
输入示例:
{
"query": "OpenClaw AI assistant",
"count": 5,
"freshness": "pm"
}
输出示例:
{
"results": [
{
"title": "OpenClaw - Personal AI Assistant Platform",
"url": "https://example.com/openclaw",
"description": "OpenClaw is an advanced AI assistant platform...",
"age": "2 days ago"
},
{
"title": "Getting Started with OpenClaw",
"url": "https://docs.example.com/openclaw/intro",
"description": "Learn how to set up and use OpenClaw...",
"age": "1 week ago"
}
],
"totalResults": 5
}
openclaw_web_fetch
从URL中提取可读内容。
自然语言示例:
- “从以下位置获取内容https://example.com/article并将其提取为降价”
- “从这篇博客文章中获取文本:https://blog.example.com/post"
- “在此URL下载并总结文章”
参数:
url(字符串,必填)-要获取的URLextractMode(字符串,可选)-提取格式:markdown或textmaxChars(数字,可选)-返回的最大字符数
输入示例:
{
"url": "https://example.com/article",
"extractMode": "markdown",
"maxChars": 5000
}
输出示例:
{
"success": true,
"url": "https://example.com/article",
"title": "Understanding AI Assistants",
"content": "# Understanding AI Assistants\n\nAI assistants have revolutionized...",
"length": 3456,
"extracted": "2026-02-02T10:30:00Z"
}
网关和实用程序
openclaw_gateway_status
获取OpenClaw网关会话的当前状态。
自然语言示例:
- “我当前会话的状态如何?”
- “显示网关状态”
- “这个会议活跃了多久?”
参数:
sessionKey(字符串,可选)-要查询的特定会话密钥
输入示例:
{
"sessionKey": "sess_abc123"
}
输出示例:
{
"sessionKey": "sess_abc123",
"status": "active",
"uptime": 3600,
"messageCount": 127,
"toolCallCount": 45,
"lastActivity": "2026-02-02T10:30:00Z",
"connectedNodes": 2
}
openclaw_gateway_config_get
检索当前网关配置设置。
自然语言示例:
- “显示网关配置”
- “我的网关中启用了哪些功能?”
- “获取当前网关设置”
参数: 无
输入示例:
{}
输出示例:
{
"version": "1.2.0",
"config": {
"maxSessions": 50,
"enabledChannels": ["telegram", "slack", "discord"],
"features": {
"webSearch": true,
"tts": true,
"nodes": true
}
}
}
openclaw_tts
将文本转换为语音音频。
自然语言示例:
- “将‘Hello world’转换为语音”
- “生成一个音频文件,说明‘任务已完成’”
- “为Telegram创建一条语音消息,说‘迟到了,快到’”
参数:
text(字符串,必填)-要转换为语音的文本channel(字符串,可选)-用于格式优化的目标通道
输入示例:
{
"text": "Hello, this is a text to speech test.",
"channel": "telegram"
}
输出示例:
{
"success": true,
"audioUrl": "https://openclaw.gateway/audio/tts_xyz789.mp3",
"duration": 3.2,
"format": "mp3",
"size": 51200
}
openclaw_memory_search
使用语义搜索搜索OpenClaw的内存文件。
自然语言示例:
- “在我的记忆中搜索有关天气的对话”
- “查找上周提到的项目截止日期”
- “查看我们讨论的部署过程”
参数:
query(字符串,必填)-搜索查询maxResults(number,可选)-要返回的最大结果数minScore(数字,可选)-最低相关性得分(0-1)
输入示例:
{
"query": "weather forecast discussions from last week",
"maxResults": 5,
"minScore": 0.7
}
输出示例:
{
"results": [
{
"content": "We discussed the weather forecast for San Francisco...",
"timestamp": "2026-01-28T14:30:00Z",
"score": 0.89,
"source": "session_log_2026-01-28"
},
{
"content": "The forecast indicated rain for the weekend...",
"timestamp": "2026-01-27T10:15:00Z",
"score": 0.82,
"source": "session_log_2026-01-27"
}
],
"total": 5
}
发展
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build for production
npm run build
# Run built version
npm start
测试
使用MCP检查器测试服务器:
npx @modelcontextprotocol/inspector node dist/index.js
或直接测试:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.js
许可证
麻省理工学院
作者
赫尔姆斯AI
