WiFi控制工具

wpa-mcp是一个通过Model Context Protocol控制Linux WiFi的工具,支持扫描、连接、调试和自动化网络操作(如WPA-PSK、WPA2-Enterprise、EAP-TLS等)。

  • by dogkeeper886
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 dogkeeper886/wpa-mcp

使用说明

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 发布历史

许可证

麻省理工学院