跳转到内容

Connectors

自定义 MCP 服务器隧道

当你添加一个自定义 MCP 连接器时,Grok 的服务器需要通过公共互联网访问你的 MCP 服务器。运行在 localhost 或私有网络地址(如 127.0.0.110.x.x.x172.16.x.x192.168.x.x)上的服务器无法直接访问,Grok 会拒绝这些 URL。

隧道服务通过创建一个 Grok 可以连接的公共 URL,来暴露你的本地服务器,从而解决这个问题。

隧道工作原理

隧道创建一个安全的、临时的公共 URL,将流量转发到你机器上的某个端口。当 Grok 调用你的 MCP 服务器时,请求通过隧道提供商的基础设施传输,并到达你的本地进程,就像本地请求一样。

text
Grok ──► https://your-tunnel.example.com ──► tunnel provider ──► localhost:3001

你的 MCP 服务器代码无需更改;只需提供给 Grok 的 URL 不同即可。

设置隧道

有多种隧道服务可与 MCP 服务器配合使用。以下是两个流行的选项。

ngrok

ngrok 提供稳定的 URL 和用于检查流量的仪表板。ngrok 是第三方服务,与 xAI 或 Grok 无关联。

  1. 安装 ngrok 并进行身份验证:
bash
# macOS
brew install ngrok

# Windows
winget install ngrok -s msstore

# Authenticate (free account required)
ngrok config add-authtoken YOUR_AUTH_TOKEN
  1. 启动指向你的 MCP 服务器端口的隧道:
bash
ngrok http 3001
  1. 从输出中复制 Forwarding URL(例如 https://a1b2c3d4.ngrok-free.app),并在 Grok 的自定义连接器对话框中将其用作服务器 URL。

Cloudflare Tunnel

Cloudflare Tunnel 是一个免费替代方案,快速隧道无需注册账户。

bash
# macOS
brew install cloudflared

# Windows
winget install --id Cloudflare.cloudflared

# Start a quick tunnel
cloudflared tunnel --url http://localhost:3001

复制生成的 *.trycloudflare.com URL,并在 Grok 中将其用作服务器 URL。

CAUTION

Cloudflare 快速隧道不支持服务器发送事件 (SSE)。如果你的 MCP 服务器使用 SSE 传输,请改用 ngrok。使用较新的可流式 HTTP 传输的服务器可以与 Cloudflare 正常工作。

需要注意的事项

  • 隧道是临时的。 大多数免费层级的隧道 URL 每次重新启动隧道时都会改变。如果重新启动,你需要在 Grok 中删除旧的连接器,并使用更新的 URL 添加新的连接器。
  • 保持 MCP 服务器运行。 Grok 在对话过程中按需调用你的服务器。如果隧道或本地服务器停止,工具调用将失败。
  • 身份验证仍然适用。 如果你的 MCP 服务器需要 OAuth 或 API 密钥,在提供隧道 URL 后,你仍需在 Grok 中完成该流程。隧道仅处理网络可达性。

本文档为 docs.x.ai 全站中文翻译,由 AI 自动翻译生成。代码示例请以原文为准。