Skip to main content

稳定远程 URL

当远程 MCP client 每天都需要使用同一个 HTTPS URL,而 Coding Tools MCP 仍然运行在你的本地机器上时,使用这个教程。 稳定域名解决的是一个问题:client 配置可以保持不变。它不会自动变成多人公用 relay,也不会自动发现每个开发者的电脑。

“一个 URL”有两种含义

常见设计有两类:
  • 个人稳定 URL:一个开发者本地运行 Coding Tools MCP,通过 ngrok、Cloudflare Tunnel、devtunnel 或其他反向 tunnel,把 https://mcp.example.com/mcp 这样的稳定 hostname 映射到本机。
  • 面向多用户的托管 relay:一个单独服务负责用户认证、设备注册、本地 agent 出站连接,并把每个请求路由到正确的 workspace。
Coding Tools MCP 提供本地 MCP runtime 和辅助 tunnel 脚本。它不包含托管 relay、dashboard、设备注册表或按用户路由的服务。

推荐 hostname 结构

把 MCP 流量放到子域名,不要直接放 apex domain:
本教程使用下面这个个人稳定 URL:

选择鉴权模式

如果 MCP client 支持 OAuth 2.1 Authorization Code + PKCE discovery,优先使用 OAuth:
只有当 client 可以发送自定义 Authorization header 时,才使用 bearer auth:
不要把 bearer token 放进 query string。Coding Tools MCP 在 /mcp 上检查的是 Authorization: Bearer <token> header。

ngrok reserved domain

先在 ngrok 里保留一个域名,然后让 Coding Tools MCP 绑定本机端口,再让 ngrok 指向这个端口。 终端 1:
终端 2:
远程 MCP client 使用:
仓库里的辅助脚本也可以用于快速运行 ngrok:
只有当你的 ngrok 配置已经固定 reserved domain 时,才把这个脚本当作稳定 URL 用法。否则脚本会启动普通 ngrok tunnel,URL 可能在重启后变化。

Cloudflare named tunnel

创建 named tunnel,并把 DNS hostname 路由到它。然后让这个 hostname 转发到本机 Coding Tools MCP 端口。 一次性设置:
创建或更新 Cloudflare tunnel 配置,让 hostname 指向本地 server:
终端 1:
终端 2:
远程 MCP client 使用:

demo 用 quick tunnel

临时测试时,可以用仓库脚本安装 package、启动本地 server 并暴露 tunnel:
这适合 demo,但公开 URL 可能在重启后变化。如果 client 配置必须保持稳定,使用 ngrok reserved domain 或 Cloudflare named tunnel。

验证 URL

BASE_URL 替换为不带 /mcp 的 tunnel origin:
HTTP JSON-RPC ping:
如果使用 bearer auth,额外加上:

安全注意事项

  • 让 Coding Tools MCP 保持绑定 127.0.0.1,只暴露 tunnel URL。
  • 远程会话先用 --tool-profile read-only,除非你明确需要写入工具。
  • 所有非 loopback 部署都使用 OAuth 或 bearer auth。
  • fullexec_command 等价于在配置的 workspace 边界内暴露远程代码执行能力。
  • 测试结束后停止 tunnel;如果 token 或 OAuth secret 被分享过,及时轮换。