ChatGPT 网页端通过 OpenAI Secure MCP Tunnel 操控 Windows 11 本地电脑完整教程
本文记录一套让 ChatGPT 网页端直接调用 Windows 11 本地 MCP 工具 的完整方案:使用 OpenAI 官方 Secure MCP Tunnel 作为传输层,在本机运行 tunnel-client,再通过 stdio 启动 Desktop Commander MCP。
最终链路如下:
ChatGPT 网页端
│
▼
OpenAI Secure MCP Tunnel
│
▼
Windows 本机 tunnel-client.exe
│
│ stdio
▼
Desktop Commander MCP
│
├── 文件读写 / 搜索 / 编辑
├── PowerShell / CMD
├── Python / Node.js / Git
├── WSL
└── 长进程与日志读取
这套方案最大的价值不是“完全不经过云”,而是本机只主动向 OpenAI 建立出站连接,不需要把本地 MCP Server 暴露到公网。因此不要求公网 IP、路由器端口映射、DDNS、VPS、ngrok 或 Cloudflare Tunnel。
注意:本文说的“操控本地电脑”主要指文件系统与命令行能力。Desktop Commander 不是传统远程桌面,也不会天然看到桌面画面、移动鼠标或点击任意 GUI 控件。
一、这套方案到底能做什么
连接成功后,ChatGPT 可以通过 Desktop Commander 调用本机工具,例如:
- 列出和读取项目目录;
- 新建、修改、移动、删除文件;
- 搜索整个代码仓库;
- 运行 PowerShell、CMD;
- 调用 Python、Node.js、Git;
- 调用 WSL 中的 Linux 命令;
- 编译项目、运行测试、读取报错;
- 启动长时间运行的程序并持续读取输出;
- 继续通过本机 SSH 客户端管理远端服务器。
它非常适合把 ChatGPT 变成真正参与本地开发工作的 Agent:
看代码 → 修改 → 运行 → 看错误 → 再修改 → 测试
但如果目标是“打开微信并点击某个按钮”这类纯 GUI 自动化,还需要额外叠加浏览器自动化或 Windows UI Automation 工具。
二、为什么选择 OpenAI Tunnel + Desktop Commander stdio
Desktop Commander 自己也提供 Remote 模式,例如:
npx -y @wonderwhy-er/desktop-commander@latest remote
这种模式本身也能远程连接,但本文选择让 Desktop Commander 只负责本地 MCP 能力,把远程传输交给 OpenAI 官方 Tunnel:
OpenAI Secure MCP Tunnel
+
Desktop Commander stdio MCP
本机 MCP Server 因而不需要直接监听公网端口。OpenAI Tunnel Client 由 Windows 主动向 OpenAI 建立 HTTPS 出站连接,再把 ChatGPT 发来的 MCP 请求转给本地 stdio Server。
这种结构的边界非常清晰:
OpenAI Tunnel:负责远程传输与连接
Desktop Commander:负责本地文件、Shell、进程等能力
三、开始前必须确认 ChatGPT 是否支持 Full MCP
截至 2026-08-09,OpenAI 官方文档列出的 ChatGPT Developer mode / 完整 MCP 支持范围是 Business、Enterprise、Edu 的 ChatGPT 网页版。
因此如果你的设置中完全找不到 Developer mode、Apps 的 Create 入口或 Plugins 的开发入口,不要先怀疑 Windows 配置。
官方参考:
界面和套餐范围后续可能调整,所以真正部署前应再以 OpenAI 当前文档为准。
四、准备 Windows 11 环境
1. 检查 Node.js 与 npx
打开普通 PowerShell:
node --version
npx --version
where.exe node
where.exe npx.cmd
本文实际使用过 Node.js 22.x。只要 Desktop Commander 当前支持你的 Node.js 版本即可。
如果你使用 nvm-windows,where.exe npx.cmd 很重要,因为 Tunnel 启动子进程时拿到的 PATH 可能与交互式 PowerShell 不完全一致。
例如可能看到:
C:\nvm4w\npx.cmd
后面可以直接把这个绝对路径写进启动脚本。
2. 创建 Tunnel 和工作目录
建议把运行文件和 ChatGPT 工作区分开:
New-Item -ItemType Directory -Force "E:\OpenAI-Tunnel"
New-Item -ItemType Directory -Force "E:\ChatGPT-Workspace"
其中:
E:\OpenAI-Tunnel
用于保存 tunnel-client.exe、启动脚本和辅助配置;
E:\ChatGPT-Workspace
作为 ChatGPT 的默认本地工作目录。
不建议第一次就把 C:\、D:\、E:\ 整个盘符开放给 Agent。
五、在 OpenAI Platform 创建 Secure MCP Tunnel
进入 OpenAI Platform 的 Organization / Tunnels 页面,新建一个 Tunnel,例如:
win11-desktop-commander
创建后会得到类似:
tunnel_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
也就是后面要使用的 tunnel_id。
OpenAI Secure MCP Tunnel 当前支持把后端连接到 stdio MCP 或 HTTP MCP;本文选择 stdio,因为 Desktop Commander 本来就可以作为本机 stdio MCP Server 运行。
Tunnel 权限不要配错
OpenAI 当前把 Tunnel 权限分成:
Tunnels Read
Tunnels Use
Tunnels Manage
创建和修改 Tunnel 需要 Read + Manage;真正运行 tunnel-client、让 ChatGPT 使用 Tunnel,则需要 Read + Use。
建议专门创建一个 Runtime API Key 给长期运行的 Tunnel Client,而不要让常驻进程长期持有 Admin API Key。
另外,Tunnel 还必须关联到目标 ChatGPT Workspace。只在 Platform Organization 中创建成功,并不代表 ChatGPT Workspace 一定能看到它。
官方参考:
六、下载 tunnel-client
优先从 OpenAI Platform 的 Tunnel 页面获取当前支持的 Windows Tunnel Client,或使用 OpenAI 官方 openai/tunnel-client Release。
不要在长期教程中硬编码某一个旧 Release 的下载地址,因为客户端版本会更新。
把下载后的程序放到:
E:\OpenAI-Tunnel\tunnel-client.exe
然后检查:
cd "E:\OpenAI-Tunnel"
.\tunnel-client.exe --version
.\tunnel-client.exe help quickstart
七、创建 Desktop Commander 启动脚本
创建:
E:\OpenAI-Tunnel\start-desktop-commander.cmd
内容:
@echo off
cd /d E:\ChatGPT-Workspace
call npx.cmd -y @wonderwhy-er/desktop-commander@0.2.46 --no-onboarding
这里固定 0.2.46 是因为这个版本在本文方案中做过完整端到端验证。后续确认新版正常后,可以再切换到:
call npx.cmd -y @wonderwhy-er/desktop-commander@latest --no-onboarding
如果使用 nvm-windows,并且 where.exe npx.cmd 返回 C:\nvm4w\npx.cmd,建议直接写绝对路径:
@echo off
cd /d E:\ChatGPT-Workspace
call "C:\nvm4w\npx.cmd" -y @wonderwhy-er/desktop-commander@0.2.46 --no-onboarding
先单独测试脚本:
cmd.exe /d /c E:/OpenAI-Tunnel/start-desktop-commander.cmd
如果没有报错,并且程序保持运行,看起来像“卡住”,通常反而是正常的:stdio MCP Server 正在等待 MCP Client 发请求。按 Ctrl+C 退出测试即可。
八、设置 Runtime API Key
当前 PowerShell 会话中:
$env:CONTROL_PLANE_API_KEY = "sk-REPLACE_WITH_YOUR_RUNTIME_KEY"
真实 Key 不要截图、提交 Git、写入博客或发到聊天记录。
九、初始化 Tunnel Profile
进入:
cd "E:\OpenAI-Tunnel"
初始化 stdio Profile:
.\tunnel-client.exe init `
--sample sample_mcp_stdio_local `
--profile desktop-commander `
--tunnel-id tunnel_REPLACE_WITH_YOUR_TUNNEL_ID `
--mcp-command "cmd.exe /d /c E:/OpenAI-Tunnel/start-desktop-commander.cmd"
这里使用 E:/OpenAI-Tunnel/... 的正斜杠写法非常重要。
本文实际调试时,Windows 反斜杠路径曾被二次解析,导致:
'E:OpenAI-Tunnelstart-desktop-commander.cmd'
不是内部或外部命令
因此如果命令要经过 YAML、JSON、CMD 或其他多层解析,Windows 路径优先使用正斜杠通常更稳。
十、运行 doctor,但不要把 PASS 当成最终成功
.\tunnel-client.exe doctor `
--profile desktop-commander `
--explain
如果看到 RESULT ok,说明本地预检没有发现明显问题。
但必须注意:doctor 只是本地 preflight,并不能证明 Runtime API Key 一定能成功轮询目标 Tunnel,也不能代替真正的端到端调用。
OpenAI 官方 Troubleshooting 也明确区分了本地预检和真正运行阶段。
因此正确理解是:
doctor PASS = 本地配置看起来可用
不等于 = ChatGPT 已经能操作本机
十一、正式启动 Tunnel
.\tunnel-client.exe run `
--profile desktop-commander
这个 PowerShell 窗口需要保持运行。
运行链路是:
Windows tunnel-client
│
├── 主动连接 OpenAI
├── 接收目标 Tunnel 的 MCP 请求
├── 转给 Desktop Commander stdio
└── 把结果返回 ChatGPT
如果这里出现 401/403,优先检查 Runtime API Key、Tunnel ID、Organization、Tunnels Read 与 Tunnels Use 权限,以及目标 ChatGPT Workspace 是否已经正确关联。
十二、检查 Tunnel Client 健康状态
另开一个 PowerShell:
(Invoke-WebRequest `
"http://127.0.0.1:8080/healthz" `
-UseBasicParsing).StatusCode
(Invoke-WebRequest `
"http://127.0.0.1:8080/readyz" `
-UseBasicParsing).StatusCode
正常目标是:
200
200
还可以打开本地状态页面:
Start-Process "http://127.0.0.1:8080/ui"
这里要区分:
/healthz = 进程活着
/readyz = 已准备好真正处理 Tunnel 工作
排错时 /readyz 通常比单看 /healthz 更有价值。
十三、在 ChatGPT 中启用 Developer Mode
根据 Workspace 当前界面,入口可能显示在 Settings / Security and login / Developer mode,或者 Workspace Settings / Apps 中。
启用后,在 Apps / Plugins 的开发入口创建一个新的 MCP App,连接方式选择:
Tunnel
然后选择刚才创建的 Tunnel,或输入对应 tunnel_id。
如果 ChatGPT 中完全看不到 Tunnel,检查:
- Tunnel 是否关联了当前 ChatGPT Workspace;
- 当前用户是否具备相应 Workspace 权限;
- Runtime Key 是否有
Tunnels Read + Use; tunnel-client run是否正在运行;/readyz是否返回 200。
身份验证怎么选
本文的后端是本地 Desktop Commander stdio MCP,它本身没有额外 OAuth 登录流程,因此这一层通常使用:
Authentication: None
不要把 Runtime API Key 填到 MCP App 的用户认证栏。Runtime Key 是 Tunnel Client 访问 OpenAI 控制面的凭据,不是 Desktop Commander 的用户登录密码。
十四、扫描 Desktop Commander Tools
创建 App 时扫描 Tools,正常会看到类似:
get_config
set_config_value
list_directory
read_file
read_multiple_files
write_file
edit_block
start_search
get_more_search_results
start_process
interact_with_process
read_process_output
force_terminate
具体工具数量和名称会随着 Desktop Commander 版本变化,不要把某个固定数量当成成功标准。
十五、第一次端到端测试
不要一开始就让 ChatGPT 操作真实项目,先用:
E:\ChatGPT-Workspace
做最小闭环。
测试 1:列目录
使用 Desktop Commander 列出 E:\ChatGPT-Workspace 中的文件,只读取,不修改。
测试 2:创建并读取文件
在 E:\ChatGPT-Workspace 创建 tunnel-test.txt,内容为:
OpenAI Secure MCP Tunnel connected successfully.
不要操作其他目录。
然后再让 ChatGPT 读取这个文件,确认写入与读取都正常。
测试 3:PowerShell
执行:
powershell.exe -NoProfile -Command "Get-Date"
不要运行其他命令。
测试 4:长进程
执行:
powershell.exe -NoProfile -Command "Start-Sleep 3; Write-Output 'finished'"
等待结束,并告诉我输出和退出码。
如果目录读取、文件写入、文件重新读取、PowerShell 和长进程输出都通过,才算真正完成了 ChatGPT → OpenAI Tunnel → Windows 的端到端闭环。
十六、连通后第一件事:限制 allowedDirectories
调用 Desktop Commander 的 get_config,重点检查:
allowedDirectories
blockedCommands
defaultShell
telemetryEnabled
一个非常容易误解的配置是:
"allowedDirectories": []
它并不是“禁止访问任何目录”,而是允许 Desktop Commander 文件工具访问整个文件系统。
因此建议显式设置为:
[
"E:\\ChatGPT-Workspace"
]
然后再次调用 get_config 确认。
但是必须继续注意:allowedDirectories 不是完整安全沙箱。它主要限制 Desktop Commander 自己的文件类工具,而 PowerShell、CMD、Python、Node.js 或其他命令仍可能访问白名单以外的位置。
因此真正的安全边界应该是:
Windows 普通用户权限 + 工作目录隔离 + Git/备份 + MCP 配置护栏
十七、安全建议
不要让 Tunnel Runtime 默认使用管理员账户。建议使用普通 Windows 用户,并只把必要项目放进工作区。
以下内容不要放进 Agent 默认可访问目录:
- SSH 私钥;
- 浏览器 Profile;
- 密码库;
- 钱包私钥;
- 生产环境密钥;
- API Key 明文文件;
- 重要个人隐私资料。
对于下面这些操作,最好要求 Agent 在执行前先向你确认:
- 批量删除或覆盖文件;
- 修改注册表;
- 安装系统组件;
- 改防火墙;
git push;- 上传本地文件;
- 部署生产环境;
- 关闭安全软件。
如果不需要 Desktop Commander 遥测,可以把 telemetryEnabled 设置为 false。
另外不要把 Tunnel Client 的本地 Admin UI 从 127.0.0.1 随意改成 0.0.0.0 暴露到局域网。
十八、常见报错与排错顺序
1. Windows 路径被吃掉
如果出现:
'E:OpenAI-Tunnelstart-desktop-commander.cmd'
不是内部或外部命令
把 Tunnel Profile 中的路径改成:
E:/OpenAI-Tunnel/start-desktop-commander.cmd
2. 找不到 npx.cmd
where.exe npx.cmd
然后在 start-desktop-commander.cmd 中写入实际绝对路径。
3. doctor PASS,但 ChatGPT 仍不能用
继续检查:
/readyz
/ui 日志
Runtime API Key
Tunnels Read + Use
Workspace association
真正的 ChatGPT Tool 调用
不要把 doctor 当作端到端验收。
4. 401 / 403
重点确认:
- Runtime API Key 是否正确;
- Tunnel ID 是否正确;
- Runtime Key 是否有
Tunnels Read + Use; - Tunnel 是否属于正确的 Platform Organization;
- Tunnel 是否关联目标 ChatGPT Workspace。
5. /readyz = 503
通常继续检查 Desktop Commander 子进程是否退出、npx.cmd 是否存在、Node.js 是否正常、MCP 初始化是否失败,以及 Tunnel 配置是否写错。
6. UNDICI-EHPA / punycode Warning
运行 Desktop Commander Remote 模式时可能看到 Node.js 的实验性或弃用警告,例如 UNDICI-EHPA、punycode DeprecationWarning。它们本身不一定代表 MCP 启动失败。
本文方案并不依赖 desktop-commander remote,而是使用 Desktop Commander stdio + OpenAI Tunnel,因此优先看 stdio 子进程和 Tunnel Client 日志。
十九、日常启动流程
首次部署完成后,不需要每天重新创建 Tunnel。通常只需:
cd "E:\OpenAI-Tunnel"
$env:CONTROL_PLANE_API_KEY = "sk-YOUR_RUNTIME_KEY"
.\tunnel-client.exe run --profile desktop-commander
保持这个窗口运行,然后打开 ChatGPT 使用已经创建好的 MCP App 即可。
二十、最终验收清单
不要只以“命令没报错”为标准,完整成功至少应该满足:
[✓] Desktop Commander 单独可以启动
[✓] tunnel-client doctor 正常
[✓] /healthz = 200
[✓] /readyz = 200
[✓] ChatGPT 能扫描到 Desktop Commander Tools
[✓] ChatGPT 能读取测试目录
[✓] ChatGPT 能创建并重新读取测试文件
[✓] ChatGPT 能运行 PowerShell
[✓] ChatGPT 能读取长进程输出
做到这里,下面这条链路才算真正闭环:
ChatGPT
↓
OpenAI Secure MCP Tunnel
↓
tunnel-client
↓
Desktop Commander stdio MCP
↓
Windows 11
二十一、官方资料
- OpenAI Secure MCP Tunnels
- OpenAI tunnel-client
- ChatGPT Developer mode and MCP apps
- Connect your MCP server to ChatGPT
- Desktop Commander
总结
OpenAI Secure MCP Tunnel + Desktop Commander 的重点不是把电脑变成公网服务器,而是让 Windows 主动连接 OpenAI,再由 ChatGPT 通过这条私有 Tunnel 调用本地 MCP。这样既保留了文件、Shell、Python、Git、WSL 等强大的开发能力,又避免了直接暴露 MCP 入站端口。
真正需要谨慎的是权限:一旦 Agent 拿到 Shell,allowedDirectories 就不能被当成真正的安全沙箱。更可靠的做法是使用普通 Windows 账户、独立工作目录、Git/备份和明确的高风险操作确认规则,然后再逐步开放能力。
如果目标是让 ChatGPT 真正参与本地开发,这套架构已经足够完成“读代码 → 修改 → 执行 → 看报错 → 继续修复 → 测试”的完整 Agent 工作流。