🌉 MCP服务器网桥(V16)
高性能 铁锈桥 这暴露了基于stdio的 模型上下文协议(MCP) 网络上的服务器使用 HTTP+SSE (服务器发送的事件)。
专为制造 Chrome DevTools MCP服务器 远程AI代理和IDE可以访问,绕过客户端的本地Docker要求。
______________________________________________________________________
🚀 版本16核心功能
- 保证孤儿清理:在会议上拆除桥梁执行
docker exec pkill -f chrome-devtools-mcp以确保终止任何分离的节点MCP进程。 - 不再有“节点军”:防止怠速累积
chrome-devtools-mcp即使客户端在工具执行过程中崩溃,也会进行处理。 - 快速恢复:清理是轻量级的(无需重新启动容器),因此重新连接是即时的,容器内存是稳定的。
以前推出(V11)
- 确定性会话清理:修复了SSE生命周期边缘情况,即客户端断开连接可能导致孤立
chrome-devtools-mcp节点进程正在运行。会话现在保证在SSE流结束时丢弃,从而确保子进程被终止。 - 不再有“节点军”:防止客户端重复重新连接时累积空闲的MCP进程。
以前推出(V10)
- SSE多路复用:产卵独特、孤立
docker exec每个客户端的会话数。 - 自动清理:当会话结束时,桥接部队会清除任何孤儿
chrome-devtools-mcp容器内的流程使用docker exec pkill -f chrome-devtools-mcp,防止了经典的“节点军”问题。 - 超稳健的会话处理:通过以下方式支持会话ID
X-Session-ID标题、查询参数(?session_id=...),或标准MCPendpoint活动。 - 跨平台就绪:完全支持Windows(主机)到Docker(Linux)的通信。
- 许可CORS:允许所有的起源、方法和标头--从
localhost、LAN IP和没有CORS飞行前故障的远程机器。 - Chrome主机头修复:自动解析
host.docker.internal(以及任何主机名)在启动时连接到其IP。Chrome的DevTools协议HTTP服务器拒绝非IPHostHTTP 500的头文件——此修复程序可确保工具执行始终正常。 - Smart 410消失了:过期会话POST返回
410 Gone+X-MCP-Reconnect: true而不是令人困惑404,因此客户知道要重新建立SSE流。
______________________________________________________________________
🛠 先决条件
1.配置Chrome浏览器(在Windows/主机上)
Chrome的远程调试器非常严格。你 必须 使用以下标志启动它,以便Docker能够访问它:
start chrome.exe --remote-debugging-port=9322 --remote-allow-origins=* --remote-debugging-address=0.0.0.0\[!重要\] 在运行此命令之前,请关闭所有现有的Chrome窗口,否则新的标志将被忽略。
2.网络
- Docker到主机:大桥使用
host.docker.internal,在启动时自动解析为IP。 - 客户到桥:两者都有
localhost:3000(本地机器)和:3000(远程机器)工作。
______________________________________________________________________
📦 部署
通过Docker Compose(推荐)
docker compose down
docker image rm mcp-server-bridge # Clear cache
docker compose up -d --build mcp-bridge⚠️ 重要提示:内存限制
由于底层内存随着时间的推移而积累 chrome-devtools-mcp 节点进程,强烈建议在您的 docker-compose.yml.
示例片段:
mcp-server:
image: chrome-devtools-mcp
deploy:
resources:
limits:
memory: 2048M # Caps memory to 2GB to prevent background Node leak from crashing hostRust桥本身非常轻便,可以安全地加盖 256M.
环境变量
| 变量 | 默认值 | 用途 |
|---|---|---|
MCP_ARGS | "" | 争论传递到内部进程。例子: --browser-url=http://host.docker.internal:9322 |
MCP_CONTAINER | chrome-mcp-server | 目标容器 docker exec. |
PORT | 3000 | 桥接监听端口 |
______________________________________________________________________
🤖 客户端配置
根据您的客户端应用程序,在您的应用程序中使用以下JSON块之一 mcp_config.json:
本地(与网桥相同的机器)
{
"mcpServers": {
"chrome-devtools": {
"type": "sse",
"url": "http://localhost:3000/mcp"
}
}
}远程(局域网上的不同机器)
{
"mcpServers": {
"chrome-devtools": {
"type": "sse",
"url": "http://:3000/mcp"
}
}
}严格客户端(例如游标/反重力IDE)
如果你得到一个 "serverURL missing" 错误,使用 serverURL 按键:
{
"mcpServers": {
"chrome-devtools": {
"type": "sse",
"serverURL": "http://:3000/mcp"
}
}
}______________________________________________________________________
🔍 验证与调试
第一步:健康检查
curl http://localhost:3000/health
# Response: {"status":"ok"}步骤2:流测试
curl -v -N -H "Accept: text/event-stream" http://localhost:3000/mcp成功: 你应该看看 event: endpoint 绝对URL包含 session_id.
步骤3:检查启动日志
docker compose logs -f mcp-bridge步骤3.5:检查Chrome是否直接运行devtool容器
docker exec chrome-mcp-server node -e "const dns=require('dns');dns.lookup('host.docker.internal',(_,ip)=>{require('http').get('http://'+ip+':9322/json/version',r=>{let d='';r.on('data',c=>d+=c);r.on('end',()=>console.log(d))}).on('error',e=>console.log('ERROR:',e.message))})"docker compose logs -f chrome-mcp-server确认V11正在运行:
@@@ MCP BRIDGE VERSION 11 - SESSION CLEANUP FIX @@@
Resolved hostname to IP original=http://host.docker.internal:9322 resolved=http://192.168.65.254:9322
mcp-server-bridge listening addr=0.0.0.0:3000 mcp_args=["--browser-url=http://192.168.65.254:9322"]\[!注意\] 你总会看到一个 POST rejected: missing session_id 警告每个客户端连接。这是 正常 --它是客户端在打开SSE之前探测现有会话。这不是一个错误。步骤4:工具执行失败?
如果发现工具但调用失败:
- 验证Chrome是否正在运行
--remote-debugging-port=9322 --remote-debugging-address=0.0.0.0
- 检查一下
mcp_args在启动日志中显示已解析的IP,而不是主机名
- 在MCP容器内运行调试DNS测试:
docker exec chrome-mcp-server node -e "require('http').get('http://:9322/json/version', r => { let d=''; r.on('data', c=>d+=c); r.on('end', ()=>console.log(d)) })"______________________________________________________________________
🏗 从源代码构建
# Inside mcp-server-bridge directory
cargo build --release
tar -cvzf target/release/mcp-server-bridge_bin_v10.tar -C target/release mcp-server-bridge