Windows 手把手教程:使用 OpenAI 官方 Secure MCP Tunnel,让 ChatGPT 直接操作本地代码项目
Windows 手把手教程:使用 OpenAI 官方 Secure MCP Tunnel,让 ChatGPT 直接操作本地代码项目
本教程面向 Windows 用户,从零开始搭建:
ChatGPT → OpenAI Secure MCP Tunnel → tunnel-client → MCPX → 本地项目
最终目标是让 ChatGPT 可以在你的授权范围内:
- 查看本地项目目录
- 搜索代码
- 阅读源码
- 修改源码
- 查看 Diff
- 执行编译命令
- 执行测试
- 查看 Git 状态
- 根据编译错误继续修改代码
并且整个过程中:
不需要 FRP、不需要公网 VPS、不需要域名、不需要 Caddy,也不需要把 MCPX 的 9090 端口暴露到公网。
一、先理解我们到底要搭什么
先不要急着安装软件。
理解整个结构以后,后面的每一步都会非常清晰。
以前原帖使用的是:
ChatGPT
│
↓
公网 HTTPS MCP 地址
│
↓
Caddy
│
↓
FRP Server
│
↓
互联网
│
↓
FRP Client
│
↓
MCPX
│
↓
本地项目
这个方案最大的问题是:
你需要自己解决:
公网服务器
域名
HTTPS
FRP
端口
防火墙
反向代理
而 OpenAI 现在提供了官方的:
Secure MCP Tunnel
所以我们可以把结构改成:
OpenAI 云端
┌──────────────────┐
│ ChatGPT │
└────────┬─────────┘
│
↓
┌──────────────────┐
│ Secure MCP Tunnel│
└────────▲─────────┘
│
│ HTTPS
│ 你的电脑主动连接 OpenAI
│
─────────────────┼─────────────────
Windows PC
│
┌────────┴─────────┐
│ tunnel-client │
└────────┬─────────┘
│
│ localhost
↓
┌──────────────────┐
│ MCPX │
└────────┬─────────┘
│
↓
D:\Projects\MyProject
OpenAI 官方把 tunnel-client 定义为 Secure MCP Tunnel 的本地客户端:它主动连接 OpenAI 的 Tunnel Control Plane,然后把来自 ChatGPT 的 MCP 请求转发给本地或内网 MCP Server。MCP Server 本身无需暴露到公网。
二、最终需要安装哪些东西
整个教程需要两个本地程序:
1. MCPX
2. OpenAI tunnel-client
它们的职责完全不同。
MCPX
负责:
本地项目
文件
代码
终端
Git
编译
测试
Diff
权限
相当于:
ChatGPT 的“手”。
tunnel-client
负责:
OpenAI
↕
你的电脑
相当于:
ChatGPT 和你的电脑之间的“安全通信线路”。
所以:
tunnel-client ≠ MCPX
也不是:
官方 Tunnel 出来以后 MCPX 不需要了
而是:
以前:
FRP + Caddy
负责网络连接
现在:
tunnel-client
负责网络连接
MCPX 仍然负责真正的本地开发操作。
三、开始前检查你的 ChatGPT 账号
这一点非常重要。
截至 2026 年 8 月,OpenAI 官方说明:
完整 MCP,包括 write / modify 操作,目前主要面向 ChatGPT Business、Enterprise 和 Edu 推出。
Pro 用户可以使用开发者模式连接部分 MCP,但完整写入能力的可用范围仍不同。
另外目前这套完整 MCP / Developer Mode 工作流重点支持的是:
ChatGPT Web
因此建议第一次配置时:
使用浏览器版 ChatGPT,而不是先在 Desktop 里折腾。
等网页版完全打通以后,再考虑 Desktop 端使用。
OpenAI 官方同时明确说明:
ChatGPT 不能直接访问本机 localhost MCP Server;如果 MCP Server 在本地电脑、企业内网或私有网络,应使用 Secure MCP Tunnel。
四、准备一个测试项目
不要一开始就拿你的正式工程测试。
建议先创建:
D:\MCP-Test
例如里面放:
D:\MCP-Test
│
├─ hello.txt
├─ README.md
└─ test
在 PowerShell 执行:
mkdir D:\MCP-Test
cd D:\MCP-Test
创建一个测试文件:
"Hello MCP" | Out-File hello.txt
创建 README:
"# MCP Test Project" | Out-File README.md
现在:
D:\MCP-Test
├─ hello.txt
└─ README.md
等整个链路完全正常之后,再换成:
D:\你的真实C++项目
五、安装 MCPX
这里使用原帖对应的 MCPX:
opentokenz/mcpx
它是一个专门面向本地开发环境的 MCP Runtime,可以提供:
read
edit
execute
session
observe
plan
artifact
……
等工具。
官方项目支持:
Windows
Linux
macOS
Windows 还有单独的 Desktop/Tray 功能。
六、下载 MCPX
打开 MCPX GitHub Release 页面:
https://github.com/opentokenz/mcpx/releases
选择 Windows 对应的 Release。
如果你是普通 Intel / AMD Windows 电脑,一般选择:
Windows amd64
如果是 ARM Windows:
Windows arm64
下载以后解压。
为了后面操作方便,建议放:
C:\Tools\MCPX
最后类似:
C:\Tools\MCPX
│
└─ mcpx.exe
或者不同版本可能叫:
mcpx-server.exe
以你下载版本实际文件名为准。
目前 MCPX README 已把主程序命令统一展示为:
mcpx
所以本文以下按:
mcpx.exe
演示。
七、检查 MCPX 是否能运行
打开 PowerShell:
cd C:\Tools\MCPX
执行:
.\mcpx.exe -version
如果正常,会输出版本号。
再执行:
.\mcpx.exe -h
应该能看到帮助。
如果出现:
无法将 .\mcpx.exe 识别为 cmdlet
通常是:
文件名不对
先:
dir
查看实际 exe 名称。
八、第一次启动 MCPX
先直接运行:
.\mcpx.exe
MCPX 第一次运行后,会在用户目录创建:
%USERPROFILE%\.mcpx
也就是类似:
C:\Users\你的用户名\.mcpx
里面会有:
.mcpx
│
├─ config.yaml
├─ .mcp.json
├─ logs
├─ state
├─ tasks
├─ skills
└─ workspaces.example.yaml
MCPX 默认监听:
127.0.0.1:9090
MCP 地址:
http://127.0.0.1:9090/mcp
也就是说:
MCPX
↓
http://127.0.0.1:9090/mcp
这个地址目前只能被你的电脑访问。
九、停止 MCPX,先配置安全策略
第一次启动确认成功以后:
按:
Ctrl + C
把 MCPX 关闭。
不要急着往下走。
我们先改配置。
打开:
C:\Users\你的用户名\.mcpx\config.yaml
建议使用:
VS Code
Notepad++
编辑。
十、配置 Workspace
找到:
workspaces:
我们先只加入测试目录。
例如:
workspaces:
- name: mcp-test
path: D:\MCP-Test
description: "MCP测试项目"
注意:
不要写成:
path: C:\
也不要:
path: C:\Users
更不要:
path: D:\
我们希望 AI 能访问的是:
一个项目
而不是:
整台电脑
十一、修改命令执行策略
这里尤其重要。
MCPX 当前首次配置的命令策略并不是最严格模式。
官方 README 明确指出,首次生成配置目前:
security.commands.default = allow
虽然内置了一些危险命令的 confirm / deny 规则,但官方也建议共享环境收紧为 confirm 或 deny。
所以我们建议改成:
security:
commands:
default: confirm
allow:
- ^git status
- ^git diff
- ^git log
- ^cmake
- ^ctest
- ^rg
confirm:
- ^git commit
- ^git push
- ^npm install
- ^pip install
- ^docker
deny:
- ^rm -rf
- ^shutdown
- ^format
- ^mkfs
这样:
git status
git diff
cmake
ctest
↓
可以自动执行
而:
git push
npm install
docker
↓
需要确认
危险命令:
shutdown
format
rm -rf
mkfs
↓
直接拒绝
十二、限制敏感文件
在:
security:
下面还建议设置文件规则。
例如:
security:
files:
max_read_bytes: 1048576
max_patch_files: 20
max_patch_lines: 2000
deny:
- ^\.git/
- ^\.env$
- .*\.pem$
- .*\.key$
- .*credentials.*
主要防止 AI 读取:
.env
private key
Git 内部目录
credentials
真实项目中还可以加入:
config/password
token
secret
等路径。
十三、设置 MCPX 身份认证
MCPX 支持:
open
bearer
oauth
dual
本教程推荐:
bearer
而不是:
open
虽然 MCPX 只监听:
127.0.0.1
已经限制了网络攻击面,但既然我们最终要给 ChatGPT 使用,还是建议加一个本地 Bearer Token。
例如配置:
auth:
mode: bearer
token: "这里换成你自己的随机长Token"
例如:
MCPX_8x26_BAv79X7K8qXmzV4j2hRwp...
不要真的复制这个。
自己生成随机 Token。
PowerShell 可以生成一个简单随机值:
[guid]::NewGuid().ToString("N")
会得到类似:
6fc84ac114a1485a820cf03c889f7f08
想更长一点可以执行两次拼接。
例如:
$token = ([guid]::NewGuid().ToString("N") + [guid]::NewGuid().ToString("N"))
$token
得到 64 位随机字符串。
然后:
auth:
mode: bearer
token: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
MCPX 官方明确建议:
open只用于本机临时调试;正式使用应使用 bearer、OAuth 或 dual。
十四、一个比较适合初期使用的 MCPX 配置
最终你的:
%USERPROFILE%\.mcpx\config.yaml
核心部分可以类似:
server:
host: 127.0.0.1
port: 9090
auth:
mode: bearer
token: "请换成你自己的64位随机Token"
workspaces:
- name: mcp-test
path: D:\MCP-Test
description: "MCP安全测试项目"
security:
commands:
default: confirm
allow:
- ^git status
- ^git diff
- ^git log
- ^cmake
- ^ctest
- ^rg
confirm:
- ^git commit
- ^git push
- ^npm install
- ^pip install
- ^docker
deny:
- ^rm -rf
- ^shutdown
- ^format
- ^mkfs
files:
max_read_bytes: 1048576
max_patch_files: 20
max_patch_lines: 2000
deny:
- ^\.git/
- ^\.env$
- .*\.pem$
- .*\.key$
- .*credentials.*
limits:
max_result_bytes: 262144
保存。
十五、重新启动 MCPX
执行:
cd C:\Tools\MCPX
.\mcpx.exe
正常应该看到类似:
Listening on 127.0.0.1:9090
然后 MCP Endpoint:
http://127.0.0.1:9090/mcp
此时:
MCPX
│
↓
D:\MCP-Test
已经准备好了。
十六、验证 MCPX 是否真的正常
不要用浏览器直接打开:
http://127.0.0.1:9090/mcp
然后发现页面报错就认为 MCPX 坏了。
MCP 是 JSON-RPC 协议。
官方建议发送:
initialize
请求测试。
在另一个 PowerShell 窗口:
$headers = @{
Authorization = "Bearer 你的MCPX_TOKEN"
Accept = "application/json, text/event-stream"
}
$body = @{
jsonrpc = "2.0"
id = 1
method = "initialize"
params = @{
protocolVersion = "2025-11-25"
capabilities = @{}
clientInfo = @{
name = "powershell-test"
version = "1.0"
}
}
} | ConvertTo-Json -Depth 10
Invoke-WebRequest `
-Uri "http://127.0.0.1:9090/mcp" `
-Method POST `
-Headers $headers `
-ContentType "application/json" `
-Body $body
如果 MCPX 返回 JSON-RPC 响应:
说明:
Windows
↓
MCPX
这一段已经正常。
十七、现在开始配置 OpenAI Secure MCP Tunnel
到目前为止,我们只有:
MCPX
↓
D:\MCP-Test
现在要搭:
OpenAI
↓
Tunnel
↓
tunnel-client
↓
MCPX
十八、进入 OpenAI Platform 的 Tunnels 页面
打开:
https://platform.openai.com/settings/organization/tunnels
这是 OpenAI 官方目前给出的 Tunnel 管理入口。
注意:
这里是:
platform.openai.com
不是普通:
chatgpt.com
十九、如果你看不到 Tunnels
如果打开页面发现:
没有 Tunnels
或者:
没有 Create Tunnel
通常检查:
Organization
Workspace
Role
Permission
Plan
OpenAI 官方目前要求:
Runtime 用户:
Tunnels Read
Tunnels Use
Tunnel 管理者:
Tunnels Read
Tunnels Manage
如果你是团队成员而不是 Admin / Owner,可能需要管理员授权。
二十、创建 Tunnel
在:
Organization
→ Tunnels
点击:
Create Tunnel
名字可以填:
windows-mcpx
或者:
my-local-dev
创建成功以后会获得:
Tunnel ID
类似:
tunnel_0123456789abcdef0123456789abcdef
OpenAI 当前 Tunnel ID 格式是:
tunnel_
+
32个小写十六进制字符
例如:
tunnel_0123456789abcdef0123456789abcdef
这不是你的:
API Key
只是 Tunnel 的:
身份证号
官方配置校验也是这个格式。
把它复制到记事本。
例如:
CONTROL_PLANE_TUNNEL_ID
=
tunnel_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
二十一、创建 Runtime API Key
现在打开:
https://platform.openai.com/settings/organization/api-keys
这里创建一个:
Runtime API Key
建议名字:
windows-mcpx-runtime
权限选择:
Restricted
然后给它:
Tunnels: Read
Tunnels: Use
不要直接开:
All
能少给就少给。
OpenAI 官方推荐 tunnel-client 长期运行时使用:
CONTROL_PLANE_API_KEY
权限只给:
Tunnels Read + Use
不要拿 Admin Key 长期运行。
保存生成的 Key。
类似:
sk-xxxxxxxxxxxxxxxxxxxxxxxx
注意:
API Key 一般只展示一次。
二十二、三个 Key 千万不要混
这里特别容易搞混。
你现在至少有:
1. MCPX Bearer Token
2. Tunnel ID
3. OpenAI Runtime API Key
它们分别干什么?
MCPX Bearer Token
│
↓
tunnel-client → MCPX
Tunnel ID
│
↓
告诉双方使用哪条隧道
Runtime API Key
│
↓
tunnel-client → OpenAI
可以画成:
OpenAI
▲
│
│ Runtime API Key
│
tunnel-client
│
│ MCPX Bearer Token
▼
MCPX
而:
Tunnel ID
则贯穿:
ChatGPT
↕
Tunnel ID
↕
tunnel-client
二十三、下载 OpenAI 官方 tunnel-client
官方 GitHub:
https://github.com/openai/tunnel-client
Release:
https://github.com/openai/tunnel-client/releases/latest
另外 OpenAI 官方更推荐从:
Platform → Tunnels
页面下载当前受支持的版本。
Windows 请选择:
windows amd64
普通 Intel / AMD CPU 基本都是 amd64。
解压到:
C:\Tools\OpenAI-Tunnel
最后:
C:\Tools\OpenAI-Tunnel
│
└─ tunnel-client.exe
二十四、确认 tunnel-client 能运行
PowerShell:
cd C:\Tools\OpenAI-Tunnel
执行:
.\tunnel-client.exe --version
然后:
.\tunnel-client.exe help quickstart
OpenAI 官方目前明确建议:
第一次使用 tunnel-client
↓
help quickstart
这是最短官方入门入口。
二十五、先设置 OpenAI Runtime API Key
当前 PowerShell 窗口运行:
$env:CONTROL_PLANE_API_KEY="sk-你的RuntimeAPIKey"
例如:
$env:CONTROL_PLANE_API_KEY="sk-proj-xxxxxxxxxxxxxxxx"
验证:
$env:CONTROL_PLANE_API_KEY
注意:
不要截图上传包含这个 Key 的终端窗口。
不要发给别人。
不要写进 Git。
二十六、再设置 MCPX Bearer Token
因为我们的 MCPX 设置了:
auth:
mode: bearer
所以 tunnel-client 调用 MCPX 时需要携带:
Authorization: Bearer TOKEN
不要直接把 Token 写进命令行。
更推荐:
$env:MCPX_TOKEN="你的MCPX_TOKEN"
然后我们通过 tunnel-client 的:
MCP_EXTRA_HEADERS
加入 Header。
例如:
$env:MCP_EXTRA_HEADERS="Authorization: Bearer $env:MCPX_TOKEN"
OpenAI tunnel-client 官方支持:
--mcp.extra-headers
或者:
MCP_EXTRA_HEADERS
专门给本地 MCP Server 增加静态 Header。官方也推荐密钥通过环境变量或文件引用,而不是直接放进命令参数或 YAML。
二十七、最简单的方法:先直接运行,不急着 Profile
我们现在有:
Tunnel ID
Runtime API Key
MCPX URL
MCPX Token
可以直接测试。
设置 Tunnel ID:
$env:CONTROL_PLANE_TUNNEL_ID="tunnel_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
设置 MCP 地址:
$env:MCP_SERVER_URL="http://127.0.0.1:9090/mcp"
现在你的 PowerShell 环境里应该有:
CONTROL_PLANE_API_KEY
CONTROL_PLANE_TUNNEL_ID
MCP_SERVER_URL
MCP_EXTRA_HEADERS
执行:
Get-ChildItem Env:CONTROL_PLANE_API_KEY
Get-ChildItem Env:CONTROL_PLANE_TUNNEL_ID
Get-ChildItem Env:MCP_SERVER_URL
Get-ChildItem Env:MCP_EXTRA_HEADERS
确认都有。
二十八、先不要连接 ChatGPT,运行 Doctor
OpenAI 官方提供:
doctor
专门检查配置问题。
执行:
.\tunnel-client.exe doctor --explain
如果你的当前版本要求 Profile,可以下一节先创建 Profile。
Doctor 主要检查:
Runtime API Key
Tunnel ID
Tunnel 权限
OpenAI 网络
MCP Endpoint
MCP 初始化
配置
官方推荐路径就是:
init
↓
doctor
↓
run
二十九、推荐方式:创建 Profile
为了以后不用每次输一堆参数,我们创建:
Profile
名字:
local-mcpx
OpenAI 当前 HTTP MCP 的官方示例使用:
sample_mcp_remote_no_auth
但是我们的 MCPX 有 Bearer Header,所以我们可以先创建 HTTP Profile,然后通过环境变量补 Header。
执行:
.\tunnel-client.exe init `
--sample sample_mcp_remote_no_auth `
--profile local-mcpx `
--tunnel-id tunnel_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx `
--mcp-server-url http://127.0.0.1:9090/mcp
注意 PowerShell 的:
`
是反引号。
代表:
下一行继续
如果嫌麻烦,也可以一行:
.\tunnel-client.exe init --sample sample_mcp_remote_no_auth --profile local-mcpx --tunnel-id tunnel_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --mcp-server-url http://127.0.0.1:9090/mcp
OpenAI 官方目前明确给出了 HTTP MCP 的:
--sample sample_mcp_remote_no_auth
--mcp-server-url
这一配置路径。
三十、再次运行 Doctor
现在:
.\tunnel-client.exe doctor `
--profile local-mcpx `
--explain
理想情况应该全部正常。
如果出现:
401 Unauthorized
先判断到底是哪一层。
OpenAI 401
通常:
CONTROL_PLANE_API_KEY
有问题。
MCPX 401
通常:
MCP_EXTRA_HEADERS
没有带 Bearer。
重新设置:
$env:MCPX_TOKEN="你的Token"
$env:MCP_EXTRA_HEADERS="Authorization: Bearer $env:MCPX_TOKEN"
然后重新:
.\tunnel-client.exe doctor --profile local-mcpx --explain
三十一、正式启动 tunnel-client
确认 Doctor 没问题以后:
.\tunnel-client.exe run --profile local-mcpx
现在:
tunnel-client
应该开始持续运行。
这个 PowerShell 窗口:
不要关闭
因为当前模式是:
foreground daemon
也就是说:
窗口关闭
↓
tunnel-client 退出
↓
ChatGPT 断开本地 MCPX
OpenAI 官方明确指出,在 ChatGPT 做 Connector Discovery 以及之后每一次 MCP Tool Call 时,tunnel-client 都必须保持运行。
三十二、现在完整链路已经变成
ChatGPT
X
暂时还没有配置 ChatGPT。
但是底层已经:
OpenAI Tunnel
↑
│
│ HTTPS
│
tunnel-client
│
│ localhost
↓
MCPX
│
↓
D:\MCP-Test
三十三、检查 tunnel-client 健康状态
OpenAI tunnel-client 自带:
/healthz
/readyz
/metrics
/ui
默认情况下管理界面通常监听:
127.0.0.1:8080
所以浏览器打开:
http://127.0.0.1:8080/ui
具体端口以程序输出为准。
三十四、healthz 和 readyz 的区别
很多人会误解。
/healthz
表示:
这个程序活着没有?
例如:
tunnel-client.exe
进程还在。
/readyz
表示:
它真的已经准备好处理请求了吗?
包括:
Tunnel
MCP
Configuration
Dependencies
所以真正应该看:
/readyz
在浏览器访问:
http://127.0.0.1:8080/readyz
如果返回:
200 OK
才意味着:
基本准备就绪
OpenAI 官方建议出现问题时优先按照:
/readyz
↓
/ui#overview
↓
/ui#logs
排查。
三十五、现在进入 ChatGPT 配置
打开:
https://chatgpt.com
然后:
Settings
找到:
Apps
或者某些当前 UI 版本可能显示:
Connectors
因为这个功能仍处于持续迭代阶段,OpenAI 目前明确说明 UI、权限和能力可能变化。
三十六、如果看不到 Developer Mode
对于 Business / Enterprise / Edu:
可能需要管理员启用:
Workspace Settings
→ Permissions & Roles
→ Connected Data Developer mode
或者:
Settings
→ Apps
→ Advanced Settings
→ Developer Mode
具体入口会根据:
Business
Enterprise
Edu
略有不同。
OpenAI 当前说明:
Business:
Admin / Owner
负责启用。
Enterprise / Edu:
可以使用:
RBAC
给指定开发者开放。
三十七、创建自定义 MCP App / Connector
进入类似:
Workspace Settings
→ Apps
→ Create
或者:
Settings
→ Apps
→ Create
名称:
Local MCPX
描述:
本地开发环境 MCPX
连接类型选择:
Tunnel
而不是:
Remote URL
三十八、选择 Tunnel
选择:
windows-mcpx
或者粘贴:
tunnel_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
这里的 Tunnel ID 必须和本地:
tunnel-client
使用的是:
同一个 Tunnel ID
否则:
ChatGPT
↓
Tunnel A
Tunnel B
↓
tunnel-client
永远不会相遇。
OpenAI 官方明确指出:
ChatGPT Connector 和 tunnel-client 必须绑定同一个 tunnel_id。
三十九、等待 ChatGPT 发现 MCP Tools
如果连接正常,ChatGPT 会请求:
initialize
tools/list
然后看到 MCPX 暴露的 Tools。
根据 MCPX 当前版本,公开工具可能包括类似:
session
read
edit
execute
observe
plan
artifact
discover
……
MCPX 的具体 Tool Schema 应以:
tools/list
为准。
官方 MCPX 文档也明确说明:
tools/list
才是公开工具名称、描述和 Schema 的权威来源。
四十、第一次千万不要测试“修改”
第一轮只测试:
读取
打开新的 ChatGPT 对话。
选择:
Local MCPX
然后输入:
请使用 MCPX 查看当前可用的 Workspace。
不要修改任何文件,不要执行任何写操作。
理想结果:
ChatGPT 调用:
workspace / session / read
然后告诉你:
mcp-test
D:\MCP-Test
如果能看到:
说明:
ChatGPT
↓
OpenAI Tunnel
↓
tunnel-client
↓
MCPX
↓
Workspace
整条链路已经跑通。
四十一、第二次测试:读取文件
输入:
使用 MCPX 读取 mcp-test Workspace 中的 hello.txt。
只读取,不修改。
应该看到:
Hello MCP
四十二、第三次测试:查看目录
输入:
请使用 MCPX 列出 mcp-test 的项目结构。
不要修改文件。
应该看到:
README.md
hello.txt
四十三、第四次测试:搜索
如果项目里有多个代码文件,可以测试:
请搜索整个 Workspace 中所有包含:
Hello
的文件。
只搜索,不修改。
四十四、第五次才测试修改
确认前四步全部正常以后:
输入:
使用 MCPX 修改:
hello.txt
把:
Hello MCP
修改为:
Hello ChatGPT MCP
只修改这一处。
修改前先展示 Diff。
这时候 MCPX 会按照自己的:
Diff First
工作流操作。
它不是单纯:
模型随便覆盖文件
而是:
读取
↓
记录 revision
↓
生成 Changeset
↓
展示 Unified Diff
↓
确认
↓
应用
MCPX 官方当前推荐所有文件修改走 Changeset / Diff 流程。
四十五、修改完成后在 Windows 验证
PowerShell:
Get-Content D:\MCP-Test\hello.txt
应该看到:
Hello ChatGPT MCP
那么:
ChatGPT
↓
远程调用
↓
本地文件修改
已经成功。
四十六、测试命令执行
我们先测试低风险命令。
如果测试目录是 Git Repo:
cd D:\MCP-Test
git init
git add .
git commit -m "initial"
然后在 ChatGPT 输入:
请使用 MCPX 执行:
git status
只查看状态,不修改任何文件。
如果正常:
ChatGPT 应该得到:
git status
结果。
四十七、测试真实 C++ 项目
到这里测试环境已经基本没有问题了。
现在假设真实项目:
D:\Projects\VisionSystem
首先不要直接让 ChatGPT 接触。
先把 Workspace 加到:
%USERPROFILE%\.mcpx\config.yaml
例如:
workspaces:
- name: mcp-test
path: D:\MCP-Test
description: "MCP测试"
- name: vision-system
path: D:\Projects\VisionSystem
description: "视觉系统C++项目"
然后重启 MCPX。
四十八、真实项目的第一轮不要让它改
先问:
请使用 MCPX 打开 vision-system Workspace。
先不要修改任何代码。
请:
1. 查看项目目录结构
2. 找到 CMakeLists.txt
3. 判断项目主要模块
4. 找到 src 和 include
5. 总结项目结构
任何写操作都不要执行。
四十九、然后测试代码搜索
例如你之前这种问题:
请使用 MCPX 搜索:
UnloadVisionProcess::Init
找到:
1. 方法定义
2. 方法声明
3. 所有调用位置
4. 相关成员变量
5. 初始化过程中调用的方法
只分析,不修改。
这时候它就会变成真正有意义的:
Coding Agent
而不只是:
聊天机器人
五十、推荐使用 ripgrep
大型 C++ 项目里建议安装:
ripgrep
命令:
rg
因为:
rg
搜索大型代码仓库远快于很多普通递归搜索方式。
可以通过:
winget install BurntSushi.ripgrep.MSVC
安装。
安装后:
rg --version
验证。
这样 MCPX / Agent 在做源码搜索时能利用更高效的搜索工具。
五十一、测试代码修改
不要一开始说:
帮我把这个 Bug 修掉
推荐使用更严格 Prompt:
使用 MCPX 分析:
UnloadVisionProcess::Init()
当前初始化失败的问题。
流程:
1. 先搜索方法定义和调用链
2. 阅读必要源码
3. 明确说明你判断的根因
4. 不修改无关代码
5. 修改之前给我展示 Diff
6. 修改完成后执行项目编译
7. 如果编译失败,读取错误
8. 只针对本次问题继续修复
9. 最后告诉我具体修改了哪些文件
10. 不执行 git push
这种 Prompt 会比:
帮我修
安全很多。
五十二、允许它编译
假设你的项目使用:
CMake
而编译命令:
cmake --build build --config Release
确保 MCPX 配置允许:
allow:
- ^cmake
然后告诉 ChatGPT:
修改完成以后执行:
cmake --build build --config Release
如果失败:
读取编译错误
→ 判断错误
→ 修改
→ 重新编译
最多自动尝试 3 轮。
不要 git push。
现在工作流就会成为:
ChatGPT
│
├─ search
├─ read
├─ read
├─ edit
├─ diff
├─ execute cmake
│
├─ 编译失败
│
├─ read error
├─ edit
├─ execute cmake
│
└─ 编译成功
这已经非常接近:
Coding Agent
的完整闭环。
五十三、Codex 没额度的时候怎么接力
这也是原帖最重要的使用场景之一。
例如你原本在 Codex 中:
Codex
↓
分析项目
↓
修改代码
↓
编译
↓
继续修改
突然:
Usage limit reached
如果项目是:
D:\Projects\VisionSystem
并且 MCPX 已经注册:
vision-system
就可以打开 ChatGPT:
使用 MCPX 打开 vision-system Workspace。
先读取:
1. 当前 git diff
2. 当前 git status
3. 最近修改文件
4. 当前项目状态
Codex 刚刚正在处理 XXX 问题。
请先根据现有改动判断当前进度,
不要立即覆盖之前修改。
然后:
Codex
│
│ 暂停
↓
Workspace
↑
│
MCPX
↑
│
ChatGPT
模型变了。
Workspace 没变。
五十四、为什么 MCPX 的 Remote Session 很适合这种接力
MCPX 不只是单纯的:
文件 MCP
它还有:
Remote Session
用于保存:
Workspace
Changeset
Task
Plan
Approval
Snapshot
Artifacts
开发状态会保存在 SQLite。
所以理论上:
ChatGPT
Claude
其他 MCP Client
可以围绕同一个:
Remote Session
继续工作。
这正是原帖“Codex → ChatGPT 接力”想法真正有价值的地方。
五十五、建议给 ChatGPT 一套固定开发约束
每次使用 MCPX,可以直接告诉它:
使用 MCPX 操作本地项目时遵守以下规则:
1. 修改之前先读取相关文件
2. 修改之前确认当前 revision
3. 修改前展示 Diff
4. 不修改无关文件
5. 不读取 .env、密钥或凭证
6. 不执行 git push
7. 不删除文件
8. 不修改系统配置
9. 编译失败时先分析错误再修改
10. 完成后执行 git diff
11. 最后列出所有修改文件
12. 不要没有验证就声称问题已经解决
这样比完全依赖模型自己判断要稳。
五十六、安全架构应该是什么样
推荐:
Windows
D:\Projects\VisionSystem
↑
│
MCPX
│
│ 只监听
│ 127.0.0.1
│
tunnel-client
│
│ HTTPS outbound
↓
OpenAI
Windows 防火墙不需要:
开放9090
路由器也不需要:
端口映射
更不要:
9090 → 公网
OpenAI 官方 Secure MCP Tunnel 本身只需要 tunnel-client 主动访问 OpenAI Control Plane,Tunnel 不要求你增加公网入站端口。
五十七、最不应该做的几件事
不要
MCPX host = 0.0.0.0
除非你清楚自己为什么这么做。
正常:
server:
host: 127.0.0.1
就够了。
不要
Workspace = C:\
不要
Workspace = C:\Users\你的用户名
不要
让它直接读取:
.ssh
.aws
.env
AppData
浏览器 Profile
Git credentials
密码库
不要
默认允许:
git push
不要
默认允许:
format
shutdown
rm
del /s
不要
把:
CONTROL_PLANE_API_KEY
MCPX_TOKEN
直接写进 Git Repo。
五十八、常见错误 1:ChatGPT 看不到 Tunnel
按照这个顺序查:
① Tunnel 是否存在?
Platform:
Organization
→ Tunnels
② Tunnel ID 是否一样?
ChatGPT:
Tunnel A
本机:
Tunnel A
③ 权限够不够?
需要:
Tunnels Read
Tunnels Use
④ tunnel-client 是否运行?
⑤ /readyz 是否 200?
⑥ Workspace Scope 是否正确?
OpenAI 官方指出,Tunnel 已经存在并不意味着一定自动出现在 ChatGPT 中,常见原因包括:
Workspace Scope
Tunnel 权限
Runtime 未 Ready
刚创建尚未完成传播
五十九、常见错误 2:Tunnel 正常,但 MCPX 401
看到:
401 Unauthorized
先看 MCPX Terminal。
如果是 MCPX 返回:
通常就是:
Authorization Header
没传进去。
确认:
$env:MCPX_TOKEN
然后:
$env:MCP_EXTRA_HEADERS
应该类似:
Authorization: Bearer xxxxxx
重新启动:
.\tunnel-client.exe run --profile local-mcpx
六十、常见错误 3:MCPX 端口没起来
检查:
netstat -ano | findstr 9090
正常应该看到:
127.0.0.1:9090
如果没有:
说明:
MCPX 没运行
六十一、常见错误 4:9090 被占用
执行:
netstat -ano | findstr :9090
找到 PID。
然后:
tasklist | findstr PID
如果被其他程序占用:
可以:
关闭那个程序
或者修改 MCPX:
server:
port: 9091
然后 Tunnel 也改:
http://127.0.0.1:9091/mcp
六十二、常见错误 5:tunnel-client 能跑,但 readyz 失败
打开:
http://127.0.0.1:8080/ui
重点查看:
Overview
Logs
通常能迅速判断:
Control Plane 错误
MCP 错误
Authentication 错误
Network 错误
Config 错误
不要第一时间:
删掉重装
先看日志。
六十三、常见错误 6:只能读,不能写
如果:
读取正常
搜索正常
修改不行
先不要怀疑:
MCPX
可能是 ChatGPT 当前 Workspace 的:
MCP 权限
Developer Mode
Plan
Rollout
App Permission
限制。
OpenAI 当前明确表示完整 MCP write / modify 仍属于逐步推出中的功能。
六十四、常见错误 7:ChatGPT 一直要求确认
这未必是问题。
实际上:
Write
Execute
Delete
External side effect
等操作,本来就可能触发确认。
另外 MCPX 自己还有:
allow
confirm
deny
三层权限。
所以可能出现:
ChatGPT 确认
+
MCPX 确认
这是安全设计的一部分。
六十五、常见错误 8:重新开 PowerShell 后 Key 没了
因为:
$env:XXX="..."
只对当前 PowerShell Session 有效。
窗口关闭以后:
消失
测试阶段,这是好事。
因为密钥不会永久写入系统。
正式使用时可以考虑:
Windows Credential Manager
Secret Manager
安全启动脚本
不要为了图方便把 Key:
直接写进项目 Git
六十六、建议做一个启动脚本
测试完全正常以后,可以做:
start-mcp.ps1
但:
API Key 最好不要明文写进去。
例如脚本只负责:
Start-Process "C:\Tools\MCPX\mcpx.exe"
Start-Sleep -Seconds 2
Set-Location "C:\Tools\OpenAI-Tunnel"
.\tunnel-client.exe run --profile local-mcpx
API Key:
另行通过环境变量或 Secret Store 注入
六十七、正式使用前推荐做一次完整检查
按这个清单走。
MCPX
[ ] MCPX 正常启动
[ ] 监听 127.0.0.1
[ ] 没监听 0.0.0.0
[ ] Workspace 只包含项目目录
[ ] auth = bearer
[ ] command default = confirm
[ ] .env 被禁止读取
[ ] git push 要确认
Tunnel
[ ] Tunnel 已创建
[ ] Tunnel ID 正确
[ ] Runtime Key 使用 Restricted
[ ] 只有 Tunnels Read + Use
[ ] 没拿 Admin Key 跑 daemon
tunnel-client
[ ] doctor 正常
[ ] run 正常
[ ] /healthz 正常
[ ] /readyz = 200
[ ] /ui 正常
ChatGPT
[ ] Developer Mode 可用
[ ] Connector 已创建
[ ] Connection = Tunnel
[ ] Tunnel ID 正确
[ ] 能发现 MCPX Tools
功能
[ ] Workspace List
[ ] Read
[ ] Search
[ ] Diff
[ ] Edit
[ ] Execute
[ ] Git Status
[ ] Build
全部完成以后再接真实项目。
六十八、最终我们得到什么?
整个系统现在变成:
ChatGPT
│
│
▼
OpenAI Secure MCP Tunnel
▲
│
│ HTTPS Outbound
│
tunnel-client
│
│
localhost
│
▼
MCPX
│
┌────────────┼────────────┐
│ │ │
Read Edit Execute
│ │ │
└────────────┼────────────┘
│
▼
Local Workspace
│
┌────────────┼─────────────┐
│ │ │
Source Git Build
│ │ │
└────────────┼─────────────┘
│
▼
Tests
原帖中的:
VPS
FRP Server
FRP Client
Caddy
公网域名
HTTPS证书
端口暴露
这一整层都可以删除。
六十九、原帖和新版教程的对应关系
原帖:
ChatGPT
↓
公网 URL
↓
Caddy
↓
FRP
↓
MCPX
新版:
ChatGPT
↓
OpenAI Tunnel
↓
tunnel-client
↓
MCPX
所以:
原帖核心思想
↓
保留
MCPX
↓
保留
Remote Session
↓
保留
代码搜索优化
↓
保留
Tool 权限控制
↓
保留
FRP
↓
删除
Caddy
↓
删除
公网 MCP 域名
↓
删除
七十、最推荐的实际使用习惯
最终不要把它当:
“ChatGPT 可以随便控制我的电脑”
而应该把它当成:
“ChatGPT 获得了一个严格受限的开发沙箱”
比如:
D:\Projects\VisionSystem
允许:
read
search
edit
git diff
git status
cmake
test
确认:
git commit
docker
package install
禁止:
git push
删除项目外文件
系统修改
访问密钥
这是最理想的使用方式。
七十一、最后给你一套真实项目 Prompt 模板
以后真正使用时,可以直接这样告诉 ChatGPT:
请使用 MCPX 操作 vision-system Workspace。
任务:
分析 UnloadVisionProcess::Init() 初始化失败的问题并尝试修复。
工作要求:
1. 先打开或恢复 Remote Session。
2. 搜索 UnloadVisionProcess::Init 的声明、定义和所有调用位置。
3. 阅读相关成员变量及上下游初始化流程。
4. 在修改之前先说明你判断的根因。
5. 不修改与问题无关的文件。
6. 所有修改先展示 Unified Diff。
7. 不允许读取 .env、密钥或凭证文件。
8. 不允许执行 git push。
9. 修改完成后执行项目编译。
10. 如果编译失败,分析编译错误后继续修复。
11. 自动修复最多进行 3 轮。
12. 编译成功以后执行相关测试。
13. 最后执行 git diff 和 git status。
14. 最终告诉我:
- 问题根因
- 修改文件
- 具体修改
- 编译结果
- 测试结果
- 尚未解决的风险
如果遇到需要删除文件、安装软件、修改系统配置或执行高风险命令,请先向我确认。
这时 ChatGPT + MCPX 的使用体验才真正进入:
分析
↓
搜索
↓
读取
↓
修改
↓
Diff
↓
编译
↓
报错分析
↓
再次修改
↓
测试
↓
交付结果
的 Coding Agent 工作流。
七十二、一页速查版
如果以后忘了整个流程,只看这一段。
第一次配置
① 下载 MCPX
② 设置 Workspace
③ MCPX:
host = 127.0.0.1
port = 9090
auth = bearer
④ 启动 MCPX
⑤ OpenAI Platform
→ Organization
→ Tunnels
→ Create Tunnel
⑥ 创建 Runtime API Key
→ Restricted
→ Tunnels Read + Use
⑦ 下载 tunnel-client
⑧ PowerShell:
$env:CONTROL_PLANE_API_KEY="..."
$env:MCPX_TOKEN="..."
$env:MCP_EXTRA_HEADERS="Authorization: Bearer $env:MCPX_TOKEN"
⑨ 创建 Profile:
tunnel-client init
--sample sample_mcp_remote_no_auth
--profile local-mcpx
--tunnel-id tunnel_xxx
--mcp-server-url http://127.0.0.1:9090/mcp
⑩ 检查:
tunnel-client doctor --profile local-mcpx --explain
⑪ 启动:
tunnel-client run --profile local-mcpx
⑫ 检查:
/readyz
/ui
⑬ ChatGPT
→ Settings
→ Apps / Connectors
→ Developer Mode
→ Create
→ Connection = Tunnel
→ 选择 tunnel_xxx
⑭ 测试:
Workspace
↓
Read
↓
Search
↓
Edit
↓
Execute
⑮ 接入真实项目
最终结论
现在再实现原帖里的:
“Codex 暂时不能继续时,让普通 ChatGPT 接手本地开发环境。”
已经没有必要继续搭:
FRP
+
公网 VPS
+
Caddy
+
域名
更合理的 2026 年方案是:
ChatGPT
↓
OpenAI Secure MCP Tunnel
↓
tunnel-client
↓
MCPX
↓
本地 Workspace
tunnel-client 负责:
安全地把 OpenAI 和内网连接起来
MCPX 负责:
把本地开发环境变成 MCP Tools
ChatGPT 负责:
理解问题
规划
调用工具
分析结果
继续执行
三层职责非常清晰。
而且最关键的是:
你的 MCPX 仍然只需要监听
127.0.0.1,不需要因为 ChatGPT 而把 9090 端口暴露到公网。
这也是相较原帖 FRP 方案最值得升级的地方。
更多推荐



所有评论(0)