内容
# cua-bridge
为 [cua-driver](https://github.com/trycua/cua) 提供的一个最小化的 MCP 网桥。启动 `cua-driver mcp`,连接到其标准输入/输出,并暴露一个支持流式 HTTP SSE 的 HTTP 服务器。
我编写这个项目是为了取代 [supergateway](https://github.com/supercorp-ai/supergateway) —— 一个 Node.js 网桥,它会引入约 200MB 的依赖项,在空闲时占用 40-50% 的 CPU。这个项目只有约 190 行 Rust 代码,编译后的二进制文件大小约为 2MB,在空闲时占用 0% 的 CPU。
## 构建
```bash
cargo build --release
```
## 运行
```bash
./target/release/cua-bridge \
--cua-driver /Applications/CuaDriver.app/Contents/MacOS/cua-driver \
--port 8080
```
如果网桥与代理不在同一台机器上,并且您使用 Tailscale:
```bash
./target/release/cua-bridge \
--cua-driver /path/to/cua-driver \
--port 8080 \
--tailscale-ip 100.64.0.1
```
省略 `--tailscale-ip` 会自动检测。网桥始终绑定到本地主机。
| 参数 | 默认值 | 描述 |
|------|---------|------|
| `--cua-driver` | `/Applications/CuaDriver.app/Contents/MacOS/cua-driver` | cua-driver 的路径 |
| `--port` | `8080` | HTTP 监听端口 |
| `--tailscale-ip` | 自动检测 | Tailscale IPv4 地址,用于额外绑定 |
## 工作原理
```
客户端 → POST /mcp (JSON-RPC) → 转发到 cua-driver 标准输入/输出
客户端 → GET /mcp (SSE streamableHttp) → 将每个响应广播为事件
→ GET /health
```
直接透传。无握手修改,无缓存,无缓冲。只需从 cua-driver 的标准输出中读取一行,并将其写入 SSE 流。
`GET /mcp` 上的 SSE 支持是此项目存在的原因。Hermes Agent 的原生 MCP 客户端使用 streamableHttp 传输,需要 `GET /mcp` 返回 `text/event-stream`。supergateway 的 SSE 支持不可靠,而这个项目则可靠。
## 与 Hermes Agent 配合使用
```yaml
# ~/.hermes/config.yaml
mcp_servers:
cua-remote:
url: http://100.94.73.114:8080/mcp
```
然后执行 `/reload-mcp`。工具显示时前缀为 `mcp_cua_remote_`。
## 为什么使用 --no-overlay
cua-bridge 向 cua-driver 传递 `--no-overlay` 参数。没有它,cua-driver v0.5.x 会在 MCP 标准输入/输出模式下运行 60fps 的叠加层渲染循环,占用 40-50% 的 CPU ([trycua/cua#1808](https://github.com/trycua/cua/issues/1808))。在 MCP 模式下,不需要视觉光标叠加层 —— 它用于 `serve`/daemon 路径。一旦 [PR #1865](https://github.com/trycua/cua/pull/1865) 合并,这个参数就不再必要。
## Linux
cua-bridge 是跨平台的(Rust + axum + tokio)。cua-driver 有针对 Linux 的预发布二进制文件(截至 v0.5.5)。绑定到本地主机,使用 Tailscale 进行远程访问。
## 许可证
MIT