引言
最近AI使用频繁;因此开通了日区GPT Plus;本来之前还研究怎么优化每次Codex的5小时限额;上周 Tibo就宣布把5小时限额去掉
这就导致周额度相形见绌了;前天把额度用完后就在研究其它的方法;传奇程序员不能就这样下线啊;
正巧看到L站的一篇文章:通过 Coding Tools MCP 最大化利用 GPT 订阅额度,解决额度焦虑
本文介绍我实践出的简易临时使用GPT Web开发本地项目的方法; 路径与上文有些不同
解决方案
解决方案和L站文章介绍的方法类似;都是使用GPT Web端的插件功能
一句话总结:
使用开发人员模式,自建一个可以访问本地文件的MCP服务,通过GPT官方隧道(tunnel) 让AI可以直接读写本地指定的文件达到本地开发的目的
根据环境选择最终方案
如果不想从头判断自己应该走哪套方案,可以直接在下面按实际环境选择。这里的逻辑是: 是否有域名决定能否使用 Cloudflare Tunnel;是否有服务器决定是否增加 OIDC / Pocket ID 认证层。选择完成后会自动组合出对应架构、最终步骤和命令;后面的原始教程内容仍然保留,可以继续查看详细说明。
新版方案-纯文件访问
在官方tunnel的基础之上我又研究出了用cloudflare tunnel穿透的方法(PS:我本来也做了公开MCP服务的方法;但没CF的网络加持总是time out)
此处只说明和下面流程不同的地方:
- 使用支持Oauth认证的
MCP proxy
这里使用的工具是:mcp-auth-proxy
GPT官方隧道(tunnel) 不仅实现了http访问;还加了自己的API鉴权;
modelcontextprotocol/server-filesystem不支持直接Http访问;因此需要加一个OAuth 2.1/OIDC gateway
**mcp-auth-proxy**不仅是mcp代理,还集成了MCP所需的认证功能;比如GPTMCP支持的DCR(动态客户端注册);没有这个功能的话就需要同时用tunnel转发MCP Server以及Oauth认证服务
我测试OK的命令是:
D:\Tools\mcp-auth-proxy.exe ` -d "D:\Tools\data" ` --listen 192.168.1.XX:24024 ` --external-url https://{your-domain} ` --no-auto-tls ` --tls-accept-tos ` --oidc-configuration-url "https://your-provider.com/.well-known/openid-configuration" ` --oidc-client-id "your-oidc-client-id" ` --oidc-client-secret "your-oidc-client-secret" ` -- npx.cmd -y @modelcontextprotocol/server-filesystem "D:\Tools"无服务器时使用 Password 认证
如果没有可长期运行 Pocket ID 的服务器,则不需要配置 OIDC;mcp-auth-proxy 自带 Password 登录认证。
这里要注意:ChatGPT 对接的仍然是 OAuth 2.1 / DCR,Password 只是用户在授权页面上的登录方式,不是让 ChatGPT 直接使用密码访问 MCP。
D:\Tools\mcp-auth-proxy.exe `-d "D:\Tools\data" `--listen 192.168.1.XX:24024 `--external-url https://{your-domain} `--no-auto-tls `--password "请替换为强密码" `-- npx.cmd -y @modelcontextprotocol/server-filesystem "D:\Tools"如果担心明文密码出现在命令行或历史记录中,也可以改用 --password-hash 配置 bcrypt hash。
ChatGPT Web 中仍然选择 OAuth 身份认证,地址填写 https://{your-domain}/mcp;高级 OAuth 设置保持自动发现即可,不需要填写 Pocket ID/OIDC 的 Client ID 和 Client Secret。
扫描工具或首次连接时,浏览器会跳转到 mcp-auth-proxy 的授权页面;输入上面 --password 设置的密码完成认证后,再回到 ChatGPT 完成连接。
因此这条路线不要选择“无认证”,也不要把 Password 直接填到 ChatGPT 中。
这里的“无服务器”只是指没有单独部署 Pocket ID / OIDC 服务;mcp-auth-proxy 和 cloudflared 仍然运行在本地 PC,所以本地 PC 关机后这个 MCP 也会离线。
- 在CF的Tunnels中配置一个本机路由(到
your-domain)的应用

确保直接公网访问会报401
- ChatGpt的插件直接使用
OAuth身份认证
地址填your-domain/mcp
点击高级OAuth设置的时候会自动识别出认证授权路由

创建成功后点击连接:
- 有服务器 / OIDC:会跳转到
Pocket ID,完成登录后点击页面Auth即可连接成功。 - 无服务器 / Password:会跳转到
mcp-auth-proxy的密码认证页面,输入启动命令中--password设置的密码后即可连接成功。
支持完整开发能力的单MCP服务方案
上面的MCP服务modelcontextprotocol/server-filesystem只能让AI支持访问一个PC的文件夹(可以多目录),一个mcp-auth-proxy.exe对应一个MCP服务
除了文件访问,开发时还需要的一大功能是命令执行;我又找到另一个集成专为开发服务的MCP服务:
它的介绍是给Claude使用,实际也很配ChatGPT Web
因此,本地执行命令就变成了:
D:\Tools\mcp-auth-proxy.exe ` -d "D:\Tools\data" ` --listen 192.168.1.XX:24024 ` --external-url https://{your-domain} ` --no-auto-tls ` --tls-accept-tos ` --oidc-configuration-url "https://your-provider.com/.well-known/openid-configuration" ` --oidc-client-id "your-oidc-client-id" ` --oidc-client-secret "your-oidc-client-secret" ` -- npx.cmd -y @wonderwhy-er/desktop-commander@latestPS:同理,后面的GPT官方隧道(tunnel),也可以换这个@wonderwhy-er/desktop-commander@latest
这个启动命令不能设置允许访问的文件;但可以直接在AI中设置;
在ChatGPT网页端配置完成后,直接对AI说 修改配置即可

MCP测试连通性时,推荐POSTMAN
下面是之前使用官方tunnel的保留方案:
旧版原生 OpenAI API Tunnels方案
经测试,免费用户也可以这样做
不过免费用户不能使用高级模型;意义不大
操作步骤
开启开发人员模式
打开https://chatgpt.com/,点击左下角头像:设置→账户安全与登录→打开开发人员模式

创建GPT隧道(tunnel)
打开OpenAI API平台:设置中的Tunnels - OpenAI API

创建一个tunnel,复制好它的ID tunnel_6axxxx备用;
点击Download tunnel-client去Github上下载最新的客户端备用
创建隧道专用APIKey
还是OpenAI API平台:设置中的API keys - OpenAI API
创建一个专用的APIKEY权限勾选Tunnels的Read Use;Project选Defalt project

复制生成的sk-proj-IEAXXXX 这样的APIKey备用
本地连接隧道
下载好前面提到的tunnel-client.zip后解压开;在你期望MCP访问的目录;按住shift右键,点击在此处运行powershell
由于ChatGPT不能直连;因此还需要配置socket代理
文件路径不知道有什么问题;我发现只能用相对路径,
填入备用的API Key和tunnel id后执行以下命令
# OpenAI 控制面走代理$env:CONTROL_PLANE_HTTP_PROXY = "http://127.0.0.1:7890"
# 原有参数$env:CONTROL_PLANE_API_KEY = "sk-proj-你的API密钥"$env:CONTROL_PLANE_TUNNEL_ID = "tunnel_6xxxx"
#直接将当前目录设为mcp可访问C:\Applications\Tools\tunnel-client.exe run --mcp.command 'cmd.exe /c npx.cmd -y @modelcontextprotocol/server-filesystem "."'
#或者使用集成的带文件访问及命令执行的desktop-commander,二选一C:\Applications\Tools\tunnel-client.exe run --mcp.command 'cmd.exe /c npx.cmd -y @wonderwhy-er/desktop-commander@latest'
# http://127.0.0.1:8080/ui#logs
# C:\Users\王帅\AppData\Roaming\tunnel-client
# C:\Applications\Tools\tunnel-client.exe init `# --sample sample_mcp_stdio_local `# --profile gmail-tunnel `# --tunnel-id $([Environment]::GetEnvironmentVariable("CONTROL_PLANE_TUNNEL_ID","User")) `# --mcp.command 'cmd.exe /c npx.cmd -y @modelcontextprotocol/server-filesystem "."'
# $env:CONTROL_PLANE_HTTP_PROXY=[Environment]::GetEnvironmentVariable("CONTROL_PLANE_HTTP_PROXY","User"); $env:CONTROL_PLANE_API_KEY=[Environment]::GetEnvironmentVariable("CONTROL_PLANE_API_KEY","User"); $env:CONTROL_PLANE_TUNNEL_ID=[Environment]::GetEnvironmentVariable("CONTROL_PLANE_TUNNEL_ID","User"); tunnel-client run --profile gmail-tunnel假如有什么不懂或报错直接问ChatGPT
执行成功后打开网页:http://127.0.0.1:8080
正常右上角会显示Health:live和Ready:ready

新建MCP插件(Plugin)
回到GPT Web打开插件页面;点击右边的+新增插件
注意:要先执行前面的命令,本地启动MCP服务之后再创建Plugin
隧道选择刚刚创建的
身份验证我直接用的none(未授权)
勾选下方的我了解并希望继续

创建成功后点击连接;
后续就可以在插件中看到已安装的个人插件

也可以在设置的插件中查看
在ChatGPT Web端的插件中;如果能看到MCP支持的操作;则表明一切成功;如果看不到可以点击右上角设置→重新连接

测试
在ChatGPT web上新开一个聊天;选择个人插件让它调用MCP返回文件列表测试最终结果

恭喜你,学会了ChatGPT的插件开发!
注意事项
-
添加插件报错:
创建连接器时出错Terminal window Something went wrong. If this issue persists please contact us through our help center at help.openai.com

遇到这个错误,就是前面说的;MCP插件无法通过tunnel连接到服务器导致的;
解决方法就是先执行tunnel-client.exe run命令创建好MCP服务再添加插件
通过F12检查:https://chatgpt.com/backend-api/aip/connectors/mcp的response返回:
{ "detail": { "type": "mcp_error", "developer_message": "MCP SSE probe returned 404 from openai.org", "mcp_url": "https://tunnel-service.gateway.unified-0.internal.api.openai.org/v1/mcp/tunnel_6aXXXXX", "kind": "invalid_response", "upstream_status": 404, "response_content_type": "application/json" }}即可知道原因
- 每次断开
tunnel客户端后假如遇到访问问题
在设置→插件→选择个人插件→右上角菜单→重新连接

- 要是还遇到什么奇怪的问题,可以把GPT的MCP插件删了重新添加
- 测试MCP服务可用性方法:使用新版
POSTMAN
添加一个MCP服务;输入mcp服务地址(通常以/mcp结尾);

首次连接时会启动OAuth认证流程,点击按钮弹窗授权;

连接成功后能在Message的Tools中能看到支持的所有操作;点击Run即可 测试