註冊並分享邀請連結,可獲得影片播放與邀請獎勵。

cv usk
@cv_usk
AI / Software Research Notes AI Agent, LLMOps, MLOps, Software Architecture 投稿は個人の意見です。
加入 May 2026
284 正在關注    449 粉絲
# OpenAI Agent SDKの便利で実践的な使い方 🌍 自前の MCP サーバーをエージェントに接続しましょう。HTTP・SSE・stdio の3つのトランスポートと、接続管理・承認制御の実践パターンを紹介します。 ローカル MCP サーバーは自社インフラ上で動作するため、低レイテンシ・高セキュリティ・カスタムツールの自由度が得られます。 📌 タイトル:MCP -- Streamable HTTP / SSE / stdio 🔗 URL: 🧩 概要 ローカル MCP サーバーは、自分でホストする MCP サーバーをエージェントのツールとして接続する仕組みです。`MCPServerStreamableHttp`(HTTP ベース、認証・リトライ・タイムアウト対応)、`MCPServerSse`(Server-Sent Events)、`MCPServerStdio`(ローカル CLI プロセス)の3つのトランスポートから選択できます。`MCPServerManager` で複数サーバーの一括接続管理、`require_approval` でツール別の承認制御、`tool_meta_resolver` でテナント情報の注入が可能です。 🛠 使い方 `agents` から `Agent`, `Runner` を、`agents.mcp` から `MCPServerStreamableHttp`, `MCPServerStdio` をインポートします。HTTP 接続の場合は `Agent` の `mcp_servers` に `MCPServerStreamableHttp` を渡し、接続情報は `params` 辞書にまとめて `params={"url": "http://internal-mcp.corp:8080/mcp", "headers": {"Authorization": "Bearer "}, "timeout": 30}` と指定します。stdio 接続の場合は `MCPServerStdio` を使い、`params={"command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]}` でローカル CLI プロセスを起動します。 🏗 実践的な使い方 **MCPServerStreamableHttp で社内 MCP に認証付き接続** 低レイテンシが求められる社内サービスへの接続パターンです。認証ヘッダ、リトライ、タイムアウトを設定します。 `MCPServerStreamableHttp` の `params` に `"url": "http://internal-mcp.corp:8080/mcp"`、`"headers"` で `Authorization` ヘッダに `os.getenv('MCP_TOKEN')` から取得したトークンを設定し、`"timeout": 30` を指定します。リトライ回数は `params` の外側のキーワード引数 `max_retry_attempts=3` で設定します。これを `Agent` の `mcp_servers` に渡すことで、認証付きの社内 MCP 接続が完成します。 **MCPServerStdio でローカル CLI ツールを接続** ファイルシステムサーバーや自作 CLI ツールを stdio トランスポートで接続します。 `MCPServerStdio` で `params={"command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]}` を指定してファイルシステムサーバーを接続します。自作ツールの場合は `params={"command": "python", "args": ["-m", "my_custom_mcp_server"], "env": {"DB_URL": os.getenv("DB_URL")}}` で環境変数を渡します。両方を `Agent` の `mcp_servers` リストに渡せば、複数の stdio ツールを同時利用できます。 **MCPServerManager で複数サーバーの一括管理** 複数の MCP サーバーを効率的に管理し、障害時の再接続も制御します。 `agents.mcp` から `MCPServerManager` をインポートし、`servers` に複数の MCP サーバーインスタンスを渡します。`await manager.connect_all()` で一括接続し、` でアクティブなサーバーを確認できます。`await manager.reconnect(failed_only=True)` で障害が発生したサーバーのみ再接続します。 **require_approval のツール別マップ + tool_meta_resolver** ツールごとに承認ポリシーを変え、さらにツール実行時にテナント情報を注入するパターンです。 ツールごとの承認ポリシーを辞書で定義します。`"search_docs"` と `"read_file"` は `"never"`、`"write_file"`・`"delete_file"`・`"execute_query"` は `"always"` とマッピングします。`tool_meta_resolver` に渡す関数は `MCPToolMetaContext` を受け取り、` からテナント情報を読んで `{"tenant_id": str(tenant_id), "source": "agents-sdk"}` のようなメタデータ辞書を返します(ツール引数そのものを書き換えるのではなく、呼び出しごとの `_meta` として送られます)。`MCPServerStreamableHttp` の `require_approval` にこの辞書を、`tool_meta_resolver` にこの関数を渡すことで、ツール別承認制御とテナント情報の自動付与を実現します。 💡 ユースケース 🏢 MCPServerStreamableHttp で社内 MCP サーバーに認証・タイムアウト付きで低レイテンシ接続 📁 MCPServerStdio でローカルのファイルシステムサーバーや自作 CLI ツールをエージェントに接続 🔄 MCPServerManager で複数サーバーを一括管理し、failed_only=True で障害サーバーのみ再接続 🔐 ツール別 require_approval マップ + tool_meta_resolver でテナント ID を自動注入しマルチテナント対応 ⚠️ 注意点 - MCPServerStdio はローカルプロセスを起動するため、コンテナ環境では対象コマンドがインストールされている必要があります。 - MCPServerManager の reconnect は接続エラーのリカバリであり、ツール実行中のエラーハンドリングは別途必要です。 - tool_meta_resolver で注入する情報にシークレットを含めないでください。ログに出力される可能性があります。 ✨ 3つのトランスポートと MCPServerManager を使いこなせば、社内サービスからローカルツールまで自在に接続できます。まずは stdio で手元のツールを繋いで、HTTP で本番接続に移行していきましょう! #OpenAIAgentSDK# #AIAgent#
顯示更多