コンテンツにスキップ

モデルコンテキストプロトコル (MCP)

PushGo Gateway は、MCP HTTP サーバーとして機能できるため、MCP 対応 AI アシスタントは、承認されたチャネル スコープ内で Message の送信、Event の管理、Thing の更新を行うことができます。ユーザーがモデルにチャネルのパスワードを与えるのではなく、ブラウザでチャネルをバインドできるように、OAuth2 認証が推奨されます。

  • タスクの完了後に AI アシスタントが PushGo 通知を送信できるようにします。
  • AI アシスタントに Event として長時間実行される作業を同期させます。
  • AI アシスタントにサービス、デバイス、またはタスクの Thing を更新させます。
  • サードパーティの MCP クライアントに限定されたチャネル アクセスを提供します。

MCP はユーザー確認に代わるものではありません。影響の大きいワークフローでは、クライアントまたはオーケストレーション層での確認を維持する必要があります。

https://your-gateway-domain/mcp

パブリック Gateway が MCP/OAuth を有効にする場合は、そのリージョンの /mcp エンドポイントを使用します。セルフホスト型展開では、外部からアクセス可能な PUSHGO_PUBLIC_BASE_URL を設定する必要があります。

プライベート Gateway で MCP を有効にする

Section titled “プライベート Gateway で MCP を有効にする”
Terminal window
PUSHGO_MCP_ENABLED=true
PUSHGO_PUBLIC_BASE_URL=https://gateway.example.com

共通設定:

環境変数デフォルト説明
PUSHGO_MCP_DCR_ENABLEDtrue動的クライアント登録を有効にします。
PUSHGO_MCP_PREDEFINED_CLIENTSなしclient_id:client_secret 形式の事前定義された OAuth クライアント。
PUSHGO_MCP_ACCESS_TOKEN_TTL_SECS900アクセストークンの有効期間。
PUSHGO_MCP_REFRESH_TOKEN_ABSOLUTE_TTL_SECS2592000リフレッシュトークンの絶対有効期間。
PUSHGO_MCP_REFRESH_TOKEN_IDLE_TTL_SECS604800リフレッシュトークンのアイドル期間。
PUSHGO_MCP_BIND_SESSION_TTL_SECS600Channel バインド ページ セッションの有効期間。

クライアントが DCR をサポートしていない場合は、PUSHGO_MCP_PREDEFINED_CLIENTS を使用します。

モードChannel パスワードこんな方に最適リスク
OAuth2 認可ツール呼び出しでは渡されませんAI アシスタント、サードパーティ クライアント、プロダクションスコープとチャネル許可によって制限されます。
レガシーモードすべてのツール呼び出しで渡されます個人用スクリプト、信頼できる環境発信者はチャネルのパスワードを直接保持します。

運用環境では OAuth2 認証を優先します。

ユーザーバインディングフロー

Section titled “ユーザーバインディングフロー”
  1. MCP クライアントは /mcp に接続します。
  2. クライアントは、OAuth または DCR を通じて OAuth2 クライアント ID を取得します。
  3. アシスタントは pushgo.channel.bind.start を呼び出します。
  4. ユーザーは、返された bind_url を開きます。
  5. ユーザーはチャネル ID とパスワードを入力し、認可範囲を確認します。
  6. アシスタントは pushgo.channel.bind.status をポーリングします。
  7. 承認後、アシスタントはバインドされたチャネル スコープ内でツールを呼び出すことができます。

バインド セッションの有効期間は、PUSHGO_MCP_BIND_SESSION_TTL_SECS によって制御されます。

ツール目的
pushgo.message.sendワンオフの Message を送信します。 titlebodyurlimagesseverityttlmetadatathing_id、および関連フィールドをサポートします。
ツール目的
pushgo.event.createライフサイクル Eventを作成し、event_id を返します。
pushgo.event.update既存のEventを更新します。
pushgo.event.close既存のEventを閉じます。
ツール目的
pushgo.thing.create永続エンティティを作成し、thing_id を返します。
pushgo.thing.updateエンティティの属性を更新します。
pushgo.thing.archiveエンティティをアーカイブします。
pushgo.thing.deleteエンティティを削除または廃止します。
ツールまたはリソース目的
pushgo.channel.bind.startバインドまたは取り消しセッションを作成し、bind_url を返します。
pushgo.channel.bind.statusバインドセッションのステータスを確認します。
pushgo.channel.list現在許可されているチャンネルをリストします。
pushgo.channel.unbindチャネルの認可を取り消します。
pushgo://channels認可されたチャネルリソースリスト。
pushgo://channels/{channel_id}1チャンネルの基本情報。

クライアント構成に関する注意事項

Section titled “クライアント構成に関する注意事項”
  • MCP エンドポイントは https://your-gateway-domain/mcp です。
  • リバース プロキシは、Host および X-Forwarded-Proto を正しく渡す必要があります。
  • セルフホスト展開では、PUSHGO_PUBLIC_BASE_URL を外部からアクセス可能な HTTPS ルート URL に設定する必要があります。
  • OAuth 発行者のメタデータまたはバインド リンクに内部アドレスが含まれている場合は、最初に PUSHGO_PUBLIC_BASE_URL を確認します。
  • クライアントが DCR をサポートしていない場合は、事前定義されたクライアントを使用します。
  • MCP 許可は永続化されます。データベースまたはストレージ ディレクトリを使い捨てキャッシュとして扱わないでください。
  • アクセス トークンの有効期間は短くなります。リフレッシュ トークンの有効期間は長くなります。クライアントのリスクに基づいて TTL を調整します。
  • 事前定義されたクライアント シークレットを定期的にローテーションします。
  • リスクの高い自動化には、すべてを 1 つのチャネルに許可するのではなく、別のチャネルを使用します。
  • 操作デバッグには、Gateway 構造化ログと統計を使用します。
症状確認項目
クライアントが OAuth メタデータを検出できないPUSHGO_PUBLIC_BASE_URL は外部 HTTPS URL である必要があります。リバースプロキシが well-known ルートを転送しているか確認します。
バインドリンクが開かないパブリック DNS、HTTPS 証明書、リバース プロキシ パス、および PUSHGO_MCP_BIND_SESSION_TTL_SECS
DCR が失敗するクライアント DCR サポートおよび PUSHGO_MCP_DCR_ENABLED
ツール呼び出しで password が要求されるレガシー モードであるか、OAuth 認証が不完全である可能性があります。
承認されていますが、チャンネルが表示されませんバインド セッションの完了、スコープ、およびチャネル許可が取り消されたかどうか。