コンテンツにスキップ

Streamable HTTP 接続 (Streamable HTTP Connection)

streamable_http 接続タイプを使用すると、Griptape Nodes は 双方向ストリーミング(クライアント ↔ サーバー)およびリアルタイム通信をサポートした HTTP 経由で MCP サーバーと通信できます。

Streamable HTTP を使用する場面 (When to Use Streamable HTTP)

  • 双方向通信: クライアントとサーバーの双方がデータを送信する必要がある場合
  • インタラクティブなアプリケーション: リアルタイムチャット、共同編集、ライブコラボレーション
  • HTTP インフラストラクチャ: 既存の HTTP ベースのシステムやロードバランサーを活用する場合
  • カスタムストリーミング: SSE が提供する以上の細かな制御が必要な場合
  • セッション管理: 持続的なセッション状態を維持する必要があるアプリケーション

利用可能な Streamable HTTP MCP サーバーの例

  • Exa - 高度な Web 検索およびリサーチ機能

Streamable HTTP MCP サーバーの設定例

チャットアプリケーションサーバー

{
  "name": "chat_app",
  "transport": "streamable_http",
  "url": "https://api.chat-service.com/mcp/stream",
  "headers": {
    "Authorization": "Bearer chat-token"
  },
  "timeout": 60,
  "sse_read_timeout": 120,
  "terminate_on_close": false,
  "description": "リアルタイムメッセージングおよび通信"
}

主なユースケース

  • チャットアプリケーション - リアルタイムメッセージングと対話
  • 共同編集 - 共有ドキュメントの編集(Google Docs のようなユースケース)
  • ライブコラボレーション - チームワークスペースや共有ホワイトボード
  • インタラクティブダッシュボード - リアルタイムのデータ可視化と操作
  • カスタマーサポート - ライブチャットおよびサポートシステム
  • オンラインゲーム - ターン制およびリアルタイムマルチプレイヤーゲーム

設定項目 (Configuration)

必須フィールド (Required Fields)

フィールド 型 説明 例
url string MCP サーバーの HTTP エンドポイント "https://api.example.com/mcp"

任意フィールド (Optional Fields)

フィールド 型 説明 デフォルト値
headers object 認証用などの HTTP ヘッダー {}
timeout number リクエストタイムアウト(秒単位) 30
sse_read_timeout number SSE 読み取りタイムアウト(秒単位) 60
terminate_on_close boolean 接続切断時にセッションを終了するかどうか true

設定例 (Example Configurations)

基本的な Streamable HTTP

{
  "name": "streamable_api",
  "transport": "streamable_http",
  "url": "https://api.example.com/mcp/stream",
  "description": "双方向ストリーミング対応の HTTP API (client ↔ server)"
}

認証付き Streamable HTTP

{
  "name": "auth_streamable",
  "transport": "streamable_http",
  "url": "https://api.example.com/mcp/stream",
  "headers": {
    "Authorization": "Bearer your-token-here",
    "Content-Type": "application/json",
    "Accept": "application/json"
  },
  "timeout": 60,
  "sse_read_timeout": 120,
  "terminate_on_close": true
}

カスタムヘッダー構成

{
  "name": "custom_streamable",
  "transport": "streamable_http",
  "url": "https://mcp.example.com/stream",
  "headers": {
    "X-API-Key": "your-api-key",
    "X-Client-Version": "1.0.0",
    "User-Agent": "GriptapeNodes/1.0"
  },
  "timeout": 90,
  "sse_read_timeout": 300,
  "terminate_on_close": false
}

セットアップ手順 (Setup Steps)

1. MCP サーバーのデプロイ

MCP サーバーが Streamable HTTP をサポートしていることを確認します:

# Streamable HTTP エンドポイントの例 (FastAPI など)
@app.post("/mcp/stream")
async def mcp_stream(request: Request):
    return StreamingResponse(
        process_mcp_stream(request),
        media_type="application/json",
        headers={"Cache-Control": "no-cache", "Connection": "keep-alive"},
    )

2. Griptape Nodes での設定

  1. Griptape Nodes の設定を開きます
  2. MCP Server 設定画面に移動します
  3. streamable_http トランスポートを選択して新しいサーバーを追加します
  4. サーバーの URL を入力します
  5. 認証ヘッダーやタイムアウトを設定します
  6. 接続をテストします

3. ワークフローでの使用

  1. フローに MCPTask ノードを追加します
  2. 設定した Streamable HTTP サーバーを選択します
  3. プロンプトを入力します
  4. ワークフローを実行します

利点 (Advantages)

  • 双方向ストリーミング: 完全な全二重通信 (client ↔ server)
  • HTTP 互換性: 標準的な Web インフラストラクチャやプロキシで動作
  • リアルタイム更新: 双方向でのライブデータストリーミング
  • セッション管理: 組み込みのセッション処理をサポート
  • 高い制御性: ストリーミングの挙動を細かく制御可能
  • インタラクティブ用途に最適: リアルタイムコラボレーションに最適

制限事項 (Limitations)

  • HTTP オーバーヘッド: 直接のプロセス通信(stdio)よりもオーバーヘッドが大きい
  • ネットワーク依存: 安定したネットワーク接続が必要
  • 実装の複雑さ: 単純な HTTP リクエストよりも実装が複雑
  • リソース消費: 単純なリクエストよりもリソース使用量が高い

Streamable HTTP と SSE の比較

機能 Streamable HTTP SSE (Server-Sent Events)
通信方向 双方向 (client ↔ server) 単方向 (server → client)
プロトコル カスタム HTTP ストリーミング 標準規格 (text/event-stream)
主な用途 インタラクティブアプリ、リアルタイムチャット 通知、ライブフィード、監視
実装 カスタムのクライアント/サーバーロジック ブラウザ組み込みのサポート
再接続 手動実装 自動再接続
具体例 チャットアプリ、共同ドキュメント編集 株価ティッカー、ニュース速報

認証 (Authentication)

Bearer トークン

{
  "headers": {
    "Authorization": "Bearer your-jwt-token"
  }
}

API キー

{
  "headers": {
    "X-API-Key": "your-api-key",
    "X-Client-ID": "griptape-nodes"
  }
}

カスタム認証

{
  "headers": {
    "X-Custom-Auth": "your-custom-token",
    "X-User-ID": "user123",
    "X-Session-ID": "session456"
  }
}

セッション管理 (Session Management)

切断時のセッション終了 (Terminate on Close)

{
  "terminate_on_close": true
}
  • 接続が閉じたときに自動的にセッションを破棄します
  • ステートレスな操作に適しています
  • デフォルトの動作です

持続的セッション (Persistent Sessions)

{
  "terminate_on_close": false
}
  • 接続が切断されてもセッション状態を維持します
  • ステートフルな操作に適しています
  • サーバー側でのセッション管理が必要です

トラブルシューティング (Troubleshooting)

接続エラー

  • サーバー URL にアクセス可能か確認してください
  • ネットワーク接続を確認してください
  • curl や Postman で直接テストしてください
  • サーバーログを監視してください

タイムアウトの問題

  • タイムアウト値を長く設定してください
  • サーバーの応答時間を確認してください
  • ネットワークレイテンシを監視してください
  • サーバー側のパフォーマンスを最適化してください

認証の失敗

  • 認証情報が正しいか確認してください
  • トークンの有効期限を確認してください
  • ヘッダー形式が正しいか確認してください

ベストプラクティス (Best Practices)

  1. HTTPS を使用する: 常に安全な暗号化接続を使用する
  2. 再接続処理を考慮する: ネットワーク切断時の再接続ロジックを実装する
  3. セッションを監視する: セッション状態の追跡とクリーンアップを行う
  4. タイムアウトを最適化する: 処理内容に応じた適切なタイムアウト値を設定する
  5. 認証情報を安全に保管する: API キーなどの機密データを安全に管理する

次のステップ