Token导航 LogoToken导航TokenDH.com
OpenCode MCP Gateway logo
安全风控stdio官方级别未说明来源级核验

OpenCode MCP Gateway

MCP Server

OpenCode MCP Gateway Cloudflare Desktop是一款通过Cloudflare隧道提供远程代码执行、PTY控制和会话管理的桌面服务,适用于本地OpenCode服务器与Claude/ChatGPT的OAuth兼容远程MCP交互。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
会话管理PythonClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

gjabdelnoor

提供方

gjabdelnoor

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv .venv

详细介绍

OpenCode MCP网关Cloudflare桌面

\[!警告\] 此项目公开了远程shell执行、PTY控制、会话导向和在其运行的机器上执行代理驱动的代码。 将其视为个人使用的远程代码执行服务。 如果此网关受到攻击,攻击者可能能够读取文件、执行命令、访问凭据、损坏数据或深入您的环境。 不要将其暴露给不受信任的用户。使用强大的秘密。保持源机器锁定。

此存储库是Cloudflare桌面部署变体 opencode-mcp-gateway.

其设计用于:

  • Ubuntu台式机或笔记本电脑
  • 本地OpenCode服务器
  • Cloudflare隧道前面的公共HTTPS MCP端点
  • Claude和ChatGPT OAuth兼容的远程MCP使用
  • 无VPS

存储库:

  • https://github.com/gjabdelnoor/opencode-mcp-gateway-cloudflare-desktop

建筑

Claude / ChatGPT
        |
        v
  https://mcp.example.com/mcp
        |
        v
   Cloudflare Edge
        |
        v
   cloudflared tunnel
        |
        v
  http://127.0.0.1:3001
        |
        v
  http://127.0.0.1:9999
        |
        v
      OpenCode

请先阅读

您需要安装OpenCode并使其工作,然后此网关才能执行任何有用的操作。

OpenCode文档:

  • 简介: https://opencode.ai/docs/
  • 供应商: https://opencode.ai/docs/providers/
  • 服务器模式: https://opencode.ai/docs/server/

此仓库中的详细文档:

  • docs/ubuntu-cloudflare-desktop-setup.md
  • docs/session-change-map.md

安装路径

这里记录了两种实用的安装路径。

路径A:已购买域名+Cloudflare DNS

这是推荐的路径。

当您想要一个稳定的主机名时,请使用此选项,例如:

  • https://mcp.example.com/mcp

为什么这样更好:

  • 稳定的OAuth发行者URL
  • 稳定的连接器配置
  • 更好的长期可靠性
  • 更容易运行多个网关,如 mcp1, mcp2, mcp3

路径B:免费Cloudflare trycloudflare 隧道

这是一条免费的、无个人域名的路径。

当您想在不购买或连接域名的情况下进行实验时,请使用此功能。

为什么情况更糟:

  • 主机名是临时的
  • 主机名可以在重新连接时更改
  • 当颁发者URL更改时,OAuth客户端可能会中断
  • 不适合耐用的Claude或ChatGPT连接器

快速开始

1.安装Ubuntu软件包

sudo apt update
sudo apt install -y curl git python3 python3-pip python3-venv

2.安装并配置OpenCode

curl -fsSL https://opencode.ai/install | bash

然后配置一个提供者并在本地启动OpenCode:

opencode serve --hostname 127.0.0.1 --port 9999

3.克隆此仓库并安装依赖项

git clone https://github.com/gjabdelnoor/opencode-mcp-gateway-cloudflare-desktop.git
cd opencode-mcp-gateway-cloudflare-desktop
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

4.创建 .env

cp .env.example .env

例子:

MCP_AUTH_TOKEN=replace-with-a-long-random-secret
MCP_CLIENT_ID=opencode-mcp-gateway
MCP_ALLOWED_CLIENT_IDS=opencode-mcp-gateway
PUBLIC_BASE_URL=https://mcp.example.com
DEFAULT_WORKSPACE_DIR="/home/YOUR_USER/AI Projects"
OPENCODE_HOST=127.0.0.1
OPENCODE_PORT=9999
GATEWAY_PORT=3001
ENABLE_RAW_BASH=true
DEFAULT_PLANNING_MODEL=opencode/minimax-m2.5-free
DEFAULT_BUILDING_MODEL=openai/gpt-5.4-mini

5.选择隧道路径

已购买的域路径

安装 cloudflared:

curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb
rm cloudflared.deb

验证并创建隧道:

cloudflared tunnel login
cloudflared tunnel create opencode-mcp-gateway
cloudflared tunnel route dns opencode-mcp-gateway mcp.example.com

创建 ~/.cloudflared/config.yml:

tunnel: YOUR_TUNNEL_ID
credentials-file: /home/YOUR_USER/.cloudflared/YOUR_TUNNEL_ID.json

ingress:
  - hostname: mcp.example.com
    service: http://127.0.0.1:3001
    originRequest:
      httpHostHeader: mcp.example.com
  - service: http_status:404

设置:

  • PUBLIC_BASE_URL=https://mcp.example.com

运行隧道:

cloudflared tunnel run opencode-mcp-gateway

自由 trycloudflare 路径

安装 cloudflared 同样的方式,然后运行:

cloudflared tunnel --url http://127.0.0.1:3001

这给了你一个暂时的 https://...trycloudflare.com URL。

将该URL用作:

  • PUBLIC_BASE_URL=https://YOUR-TEMP-HOST.trycloudflare.com

重要提示:

  • 这条路在这里仍然被认为是实验性的
  • 如果主机名更改,通常需要在Claude或ChatGPT中重新创建连接器

6.启动网关

source .venv/bin/activate
python main.py

验证部署

检查:

curl https://mcp.example.com/.well-known/oauth-authorization-server
curl https://mcp.example.com/.well-known/oauth-authorization-server/mcp
curl https://mcp.example.com/.well-known/oauth-protected-resource
curl -D - -o /dev/null https://mcp.example.com/mcp

你想要:

  • OAuth颁发者: https://mcp.example.com
  • 令牌终结点: https://mcp.example.com/oauth/token
  • 受保护资源: https://mcp.example.com/mcp
  • 未经授权的 /mcp 回报 401WWW-Authenticateresource_metadata

连接ChatGPT或Claude

MCP服务器URL:

https://mcp.example.com/mcp

OAuth发现URL:

  • 克劳德: https://mcp.example.com/.well-known/oauth-authorization-server
  • ChatGPT https://mcp.example.com/.well-known/oauth-authorization-server/mcp

需要时手动设置OAuth值:

  • OAuth客户端ID: opencode-mcp-gateway
  • OAuth客户端密码:您的 MCP_AUTH_TOKEN
  • 令牌身份验证方法: client_secret_post
  • 范围: mcp

多个并发代理

如果你想同时运行多个聊天机器人控制的代理,请运行多个网关进程。

推荐布局:

  • mcp1.example.com -> localhost:3001
  • mcp2.example.com -> localhost:3002
  • mcp3.example.com -> localhost:3003
  • mcp4.example.com -> localhost:3004
  • mcp5.example.com -> localhost:3005
  • mcp6.example.com -> localhost:3006

每个实例都应该有自己的:

  • PUBLIC_BASE_URL
  • GATEWAY_PORT
  • MCP_AUTH_TOKEN
  • MCP_CLIENT_ID

配置

变量描述
MCP_AUTH_TOKENOAuth令牌交换和MCP访问的承载密钥
MCP_CLIENT_ID网关接受的主OAuth客户端ID
MCP_ALLOWED_CLIENT_IDS可选逗号分隔的其他客户端ID列表
PUBLIC_BASE_URLOAuth元数据中通告的外部HTTPS基本URL
DEFAULT_WORKSPACE_DIR新会话和PTY的默认项目根
OPENCODE_HOSTOpenCode源主机
OPENCODE_PORTOpenCode源端口
GATEWAY_PORT网关侦听端口
ENABLE_RAW_BASH启用直接 bashbash_exec 工具
DEFAULT_PLANNING_MODEL规划模式会话的可选回退模型
DEFAULT_BUILDING_MODEL构建模式会话的可选回退模型
BLOCKED_SESSION_MODELS可选的逗号分隔模型,即使OpenCode通告了它们,也要拒绝

故障排除

ChatGPT表示服务器URL无效

使用完整的MCP URL:

https://mcp.example.com/mcp

Claude成功登录,但连接器仍然失败

检查:

  • PUBLIC_BASE_URL 是正确的
  • 受保护的资源元数据返回 https://mcp.example.com/mcp
  • GET /mcp 无身份验证返回 401WWW-Authenticate
  • OAuth客户端密钥完全匹配 MCP_AUTH_TOKEN

session_createsend_message 看起来停滞不前

检查:

curl http://127.0.0.1:9999/session/status

如果OpenCode正在重试不受支持的模型,请设置或调整:

DEFAULT_PLANNING_MODEL=opencode/minimax-m2.5-free
DEFAULT_BUILDING_MODEL=openai/gpt-5.4-mini

switch_model 拒绝一个你认为应该有效的模型

网关现在根据OpenCode的实时模型目录进行验证。

它将拒绝:

  • OpenCode当前未公开的任何内容
  • 我可能已经硬编码了它,以拒绝我的极大极小计划中的两个已知的坏模型。..哎呀:

- minimax-coding-plan/MiniMax-M2.5-highspeed - minimax-coding-plan/MiniMax-M2.7-highspeed

会话在错误的文件夹中启动

设置:

DEFAULT_WORKSPACE_DIR="/home/YOUR_USER/AI Projects"

如果您不传递显式目录,此仓库现在将新会话和PTY默认为该工作区。

几个机器人相互干扰

在单独的主机名和端口上使用单独的网关实例。

完整文档

  • docs/ubuntu-cloudflare-desktop-setup.md
  • docs/session-change-map.md

问题或安全问题

如果您有任何问题、意见、设置问题或严重的安全问题,请联系 @isnotgabe 关于Discord。

目录标签

目录标签

会话管理PythonClaude远程执行本地部署PTY控制Cloudflare隧道OAuth集成

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP