使用说明
wpa mcp
从Claude和其他MCP客户端控制Linux WiFi --通过模型上下文协议扫描、连接、调试和自动化网络(WPA-PSK、WPA2 Enterprise、EAP-TLS、Hotspot 2.0、强制门户、MAC随机化)。
wpa-mcp包装 wpa_supplicant 和 dhclient 在23个MCP工具中,AI代理可以驱动
真正的WiFi适配器——加入网络,根据企业RADIUS进行身份验证,通过
使用真实浏览器的专属门户,并从请求者日志中诊断故障。它
在Docker容器中运行,该容器将WiFi设备保存在其 自有网络命名空间,所以
所有这些都不会触及主机的路由表。
"Scan for networks" → wifi_scan
"Connect to CoffeeShop" → wifi_connect → DHCP → ip address
"Why did that fail?" → wifi_get_debug_logs filter=eap
运作原理
三个想法使wpa-mcp不同于“外包” wpa_cli“每个都值得一张照片。
1.WiFi设备位于容器的网络命名空间中
主机移动无线 物理 放入容器中 iw phy set netnsThe
接口从主机上消失;它的所有路由、DHCP租约和IP地址都存在
仅在容器内。WiFi成为集装箱的唯一默认路线,而入站
MCP流量仍然通过Docker网桥到达——主机路由表从未被触及。
2.一个端口后面有两个MCP服务器
一个暴露的端口(3000)连接两台服务器。 /mcp wpa-mcp本身、进程中和
无国籍。 /playwright-mcp 是一个反向代理 微软剧作家
主控程序 浏览器共享的子进程
容器的网络命名空间——这样它就可以访问您加入的WLAN上的专属门户
wifi_connect.
3.按参考而非按价值分列的证书
EAP-TLS证书上传一次(SCP),验证并复制到持久存储中。 然后,工具通过以下方式引用凭据 ID 而不是在中传递数千字节的PEM blob 每次调用都会更快,并且材料在Docker命名的卷上容器重启后仍能存活。
特征
| 类别 | 功能 |
|---|---|
| WiFi连接 | WPA-PSK、WPA2-EAP(PEAP/TTLS)、EAP-TLS、热点2.0/Passpoint、开放网络、BSSID定位 |
| 网络管理 | 扫描、状态、列表保存、忘记、重新连接 |
| 隐私 | 每个连接的MAC随机化、预关联MAC、网络移动后的真实MAC恢复 |
| 诊断 | EAP状态/决策,筛选的请求者日志(EAP、状态、扫描、错误) |
| 连接 | Ping、DNS查找、互联网检查、专属门户检测 |
| 浏览器自动化 | 脚本化的Playwright runner+代理的Playwritt MCP,用于在容器的网络中逐步控制浏览器 |
| 持久性 | 凭据存储+在Docker命名的卷上保存的网络,跨重启和重建 |
快速开始
先决条件
- Docker,在Linux主机上安装并运行
iw—sudo dnf install iw或sudo apt install iw- 主机上的PCIe或USB WiFi适配器
1.找到WiFi接口及其物理位置
ip link show | grep -E "^[0-9]+: wl" # e.g. 3: wlp6s0
cat /sys/class/net/wlp6s0/phy80211/name # e.g. phy0
2.从NetworkManager中释放接口
sudo make nm-unmanage WIFI_INTERFACE=wlp6s0
3.获取图像并开始
拉取已发布的图像(推荐):
docker pull dogkeeper886/wpa-mcp:2.0.0
echo "WPA_MCP_IMAGE=dogkeeper886/wpa-mcp:2.0.0" >> .env
sudo make docker-start
…或在本地构建:
make docker-build
sudo make docker-start
make docker-start 使用Docker网桥网络运行容器,移动WiFi物理
进入其命名空间,等待运行状况,并删除网桥默认路由,使WiFi成为
唯一违约。
4.验证
curl http://localhost:3000/health # server is up
ip link show wlp6s0 # host: gone (moved into container)
docker exec wpa-mcp ip link show wlp6s0 # container: present
为了停止, make docker-stop (phy返回到主机)。要在每次启动时启动,请安装
systemd单元 sudo make install-systemd WIFI_INTERFACE=wlp6s0.
向MCP客户端注册
容器在端口3000上暴露了两个MCP端点:
| 端点 | 它是什么 |
|---|---|
/mcp |
wpa-mcp——WiFi、凭据、连接、脚本剧作家 |
/playwright-mcp |
代理剧作家MCP——容器网络内的分步浏览器控制 |
项目范围 (本次回购发行了 .mcp.json 指着 localhost:3000,
因此Claude Code在此处打开时会自动发现这两个服务器)。
克劳德代码 (从主机或任何可以到达端口3000的机器):
claude mcp add wpa-mcp --transport http http://<HOST_IP>:3000/mcp
claude mcp add wpa-playwright --transport http http://<HOST_IP>:3000/playwright-mcp
克劳德桌面版 --添加到 claude_desktop_config.json:
{
"mcpServers": {
"wpa-mcp": { "url": "http://<HOST_IP>:3000/mcp" },
"wpa-playwright": { "url": "http://<HOST_IP>:3000/playwright-mcp" }
}
}
工具
涵盖五个领域的23个MCP工具。完整参考: docs/reference/01_WiFi_Tools.md.
WiFi管理 — wifi_scan, wifi_connect, wifi_connect_eap, wifi_connect_tls,
wifi_hs20_connect, wifi_disconnect, wifi_status, wifi_list_networks, wifi_forget,
wifi_reconnect
诊断 — wifi_eap_diagnostics, wifi_get_debug_logs
浏览器自动化 — browser_open, browser_run_script, browser_list_scripts
凭证 — credential_store, credential_list, credential_get, credential_delete
连接性 — network_ping, network_check_internet, network_check_captive,
network_dns_lookup
配置
复制 .env.example 到 .env.按键设置:
| 变量 | 默认值 | 描述 |
|---|---|---|
PORT |
3000 | HTTP服务器端口 |
HOST |
0.0.0.0 | 绑定地址 |
WIFI_INTERFACE |
wlan0 | WiFi接口名称 |
WPA_CONFIG_PATH |
/etc/wpa_supplicant/wpa_supplicant.conf | wpa_suppliant配置 |
WPA_DEBUG_LEVEL |
2 | 调试冗长(1-3) |
WPA_MCP_BROWSER_LANG |
(未设置) | 容器内浏览器的BCP-47区域设置,例如。 pt-PT |
WPA_MCP_BROWSER_TZ |
(未设置) | 容器内浏览器的IANA时区,例如。 Europe/Lisbon |
浏览器区域设置/时区变量在容器开始时读取并应用于
mcp__wpa-playwright__* 和 browser_run_script。参见
docs/design/14_浏览器_本地_时区_设计.md.
EAP-TLS证书
要使用EAP-TLS或Hotspot 2.0,请将证书文件放置在 certs/ 在建造之前
image——它们在每个容器开始时被烘焙并自动导入:
certs/
├── <identity>_crt.pem # client certificate (required)
├── <identity>_prv.pem # private key (required)
└── ca*.pem # CA certificate (optional)
然后 make docker-build, sudo make docker-start,并与连接 wifi_connect_tls 或
wifi_hs20_connect。凭据也可以在运行时通过以下方式添加 credential_store
工具。完整工作流程: docs/design/11_证书_存储_设计.md.
文档
| 文档 | 描述 |
|---|---|
| docs/README.md | 文档索引、用户流、功能表 |
| docs/reference/00_体系结构.md | 组件架构 |
| docs/reference/05_数据库_网络_隔离.md | 网络架构+路由追踪 |
| docs/reference/01_WiFi_Tools.md | WiFi工具+调试日志过滤器 |
| docs/reference/03_Browser_Tools.md | 脚本制作人+代理编剧MCP |
| 文档/设计/13_资料_MCP_编剧_设计.md | 双MCP代理设计 |
| docs/operations/20_故障排查.md | Docker+DNS故障排除 |
| 更改日志.md | 发布历史 |
许可证
麻省理工学院
