openclaw-scanner-mcp
OpenClaw MCP Scanner
一个基于 Python/FastMCP 的本地 MCP Server,用来扫描并发现用户指定 IP 或 IP 段中的 OpenClaw 服务。
运行环境固定为 Python 3.13。
支持两种探测方式:
- HTTP 探测:默认扫描
18789/tcp,通过 OpenClaw 特征响应头和页面内容识别服务 - mDNS/UDP 探测:默认扫描
5353/udp,发送_clawdbot-gw._tcp.localPTR 查询并匹配clawdbot、role=gateway
安装
source ~/venv3.13/bin/activate
pip install -e .
如果直接运行 python openclaw_mcp.py,请先确保当前 Python 环境就是 ~/venv3.13,并且已经安装了依赖;否则脚本会提示缺少 mcp 或 pydantic。
Claude Code 中配置 MCP
在 Claude Code 的 MCP 配置里新增一项 stdio 服务器,把下面示例里的占位符换成你本机路径:
| 占位符 | 含义 |
|--------|------|
| <PYTHON_EXE> | 已安装本项目依赖的 Python 可执行文件(例如虚拟环境里的 python) |
| <OPENCLAW_MCP_SCRIPT> | 本仓库中 openclaw_mcp.py 的绝对路径 |
配置片段示例(名称可自定,与下方 openclaw-scanner 一致即可;把占位符换成你本机真实路径,勿照搬示例字面值):
"openclaw-scanner": {
"command": "<PYTHON_EXE>",
"args": [
"<OPENCLAW_MCP_SCRIPT>"
],
"env": {},
"type": "stdio"
}
说明:command 必须是可执行的 python(或 python3),args 第一项是脚本的完整路径;若依赖装在虚拟环境里,请使用该环境下的解释器路径,避免系统 Python 缺少 mcp / pydantic。
启动
默认使用 stdio 方式运行,适合本地 MCP 客户端直接拉起:
python openclaw_mcp.py
如果你希望以 Streamable HTTP 方式运行:
python openclaw_mcp.py --transport streamable-http --http-port 8000
提供的工具
openclaw_discover_services
组合扫描工具。
- 输入:
target: 单个 IP、CIDR、start-endIP 范围,或逗号分隔组合port: 可选
- 规则:
port为空时,同时执行:18789/tcpHTTP 探测5353/udpmDNS 探测
port = 5353时,仅执行 mDNS 探测- 其他指定端口时,执行 HTTP 探测
示例:
{
"target": "192.168.1.0/24"
}
{
"target": "192.168.1.10-192.168.1.20",
"port": 18789
}
openclaw_probe_http
只执行 HTTP 特征探测,默认端口 18789。
openclaw_probe_mdns
只执行 mDNS/UDP 特征探测,默认端口 5353。
目标格式
支持以下 target 写法:
192.168.1.10192.168.1.0/24192.168.1.10-192.168.1.20192.168.1.10,192.168.1.20,192.168.2.0/28
返回结果
工具返回结构化结果,包括:
ports_scannedprotocols_scannedtotal_hoststotal_probesmatch_countmatcheserrors
其中 matches 会返回命中的主机、端口、协议、命中证据,以及响应预览;mDNS 命中时还会尽量提取 displayName。
说明
- 为避免误扫过大网段,目标展开上限为
4096个地址 - HTTP 探测使用短超时 TCP 请求
- mDNS 探测实现参考你提供的 nuclei 模板逻辑