canal の作成から、grok.com のカスタムコネクタ登録、接続の許可、動作確認まで。 実際の画面のスクリーンショットで、1 ステップずつ丁寧に解説します。
お手元(社内)のマシンで動いている MCP サーバーを、受信ポートを開けずに Grok から使えるようにします。 流れは「WireCanal で canal を作る → Agent を起動する → Grok にコネクタを登録する → 接続を許可する」の 4 つです。
http://localhost:9310/mcp)ダッシュボードの「新しい canal を作成」を押し、種類で MCP を選んで「次へ」。

使う AI を選ぶだけで、その AI 用の接続設定が自動で用意されます。ここでは Grok にチェックを入れます。

公開アドレス(ホスト名)は「おまかせサブドメイン」で OK。好きな名前の予約や独自ドメインも選べます。

転送先には、手元で動いている MCP サーバーのアドレス(例 localhost:9310)を入れます。


作成直後の「MCP 接続」タブに、Grok 接続用の クライアント ID と クライアントシークレット が表示されます(シークレットの表示はこの一度だけ)。 以下の通常フローでは使いません——Grok が WireCanal へ自動でクライアント登録するためです。OAuth 設定を手動で入れる予定がある場合だけ控えてください。

「セットアップ」タブから設定ファイル wirecanal.json をダウンロードし、 tools.allow に外の AI に見せてよいツール名だけを書きます(既定は全拒否)。書き方と全オプションは wirecanal.json 設定リファレンス をご覧ください。

{
"access_key": "ck_...",
"forward_target": "localhost:9310",
"mode": "mcp",
"tools": { "default": "deny", "allow": ["get_time", "echo"] }
}同じマシンで Agent を起動します。受信ポートの開放は不要です。エージェント本体の導入がまだの場合や、常駐(自動起動)のさせ方は、OS 別の セットアップガイド をご覧ください。
wirecanal.exe -config wirecanal.json起動ログに「canal <ID>: https://<ホスト名> へのアクセスをローカルの転送先 <転送先> に届けます」と出れば接続確立です。
grok.com の左メニュー「スキルとコネクタ」→「新しいコネクタ」を開き、「カスタム(独自のカスタムコネクターを追加)」を選びます。

名前(任意)と MCP サーバー URL(canal の公開 URL + /mcp・例 https://<ホスト名>/mcp)を入れて「追加」を押します。 Grok が WireCanal へ自動でクライアント登録するので(クライアント ID・シークレットの貼り付けは不要)、そのまま WireCanal の「接続の許可」画面がポップアップで開きます。

もし Grok が OAuth 認証情報の入力画面を出してきた場合は、手順 6 のクライアント ID / シークレットを貼り、トークン認証方法に client_secret_post を選んでください。それ以外(認証エンドポイント・トークンエンドポイント・スコープ)は自動検出値のままで OK です。
ポップアップの「接続の許可」画面で内容を確認して「許可する」を押すだけ。許可できるのは canal のオーナーだけです。
Grok と WireCanal は同じブラウザ(同じプロファイル)でログインしておいてください。分かれていると、許可画面の代わりにログイン画面が開きます。

「スキルとコネクタ」のインストール済みに、作ったコネクタが Connected と表示されれば接続完了です。

チャットでコネクタ名を挙げてツールを呼ぶだけです。 例えば「get_time で今の日本時間を教えて」と頼むと、手元の MCP サーバーが返した実データが Grok の答えに使われます。

tools.allow に入れていないツールは、AI が呼ぼうとしても手元の Agent がその場で断り、呼び出しは社内の MCP サーバーに届きません。この動作は Grok との実際の接続でも確認済みです(two-key)。