[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-honban-kankyou-mcp-transport-ninshou-scaling":3},{"article":4,"author":55},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":16,"meta_description":17,"focus_keyword":18,"og_image":19,"canonical_url":19,"robots_meta":20,"created_at":15,"updated_at":15,"tags":21,"category_name":35,"related_articles":36},"d0000000-0000-0000-0000-000000000508","a0000000-0000-0000-0000-000000000046","本番環境でのMCP：Transport、認証、スケーリングの課題を解決する","honban-kankyou-mcp-transport-ninshou-scaling","Model Context Protocolサーバーを本番環境で運用するための詳細ガイド — トランスポート選択、認証パターン、スケーリング戦略、監査ログ、エンタープライズ向けゲートウェイアーキテクチャ。","## プロトタイプから本番環境へ：何が変わるか\n\nラップトップで動作するMCPサーバーを構築するのは比較的簡単です。分散インフラストラクチャ全体で数千のAIエージェントセッションを同時に処理するサーバーを運用するのは、まったく異なるエンジニアリング上の課題です。本番環境のMCPデプロイメントは、プロトタイプでは無視できる5つの問題に対処する必要があります：**トランスポートのスケーラビリティ**、**認証と認可**、**スケールでのセッション管理**、**監査証跡**、**マルチサーバーオーケストレーション**。\n\nこの記事は、MCPサーバーを開発から本番環境に移行するエンジニアリングチーム向けの技術ガイドです。少なくとも1つのMCPサーバーを構築し、プロトコルの基本を理解していることを前提としています。まだの場合は、初めてのMCPサーバー構築に関する関連記事から始めてください。\n\n## トランスポートのスケーラビリティ：stdio vs SSE vs Streamable HTTP\n\nMCPは3つのトランスポートメカニズムを定義しています。本番環境に適したものを選択することが、最初のアーキテクチャ上の決定です。\n\n### stdioトランスポート\n\nstdioトランスポートは標準入出力ストリームを介して通信します。HostアプリケーションがMCPサーバーを子プロセスとして起動し、stdin\u002Fstdoutを介してJSON-RPCメッセージを交換します。\n\n**利点：**\n- ネットワーク設定不要\n- プロセスレベルの分離\n- ポート競合なし\n- 最低レイテンシ（ネットワークスタックなし）\n\n**制限：**\n- サーバーはHostと同じマシン上で実行する必要がある\n- Clientセッションごとに1つのサーバープロセス\n- ロードバランシング不可\n- 水平スケーリング不可\n\n**最適な用途：** ローカル開発ツール、IDE拡張機能、シングルユーザーデスクトップアプリケーション。\n\n### SSE（Server-Sent Events）トランスポート\n\nSSEトランスポートは、クライアントからサーバーへのメッセージにHTTPを使用し、サーバーからクライアントへのメッセージにServer-Sent Eventsを使用します。サーバーはHTTPサービスとして動作します。\n\n**利点：**\n- ネットワーク経由でアクセス可能（リモートサーバー）\n- 既存のHTTPインフラストラクチャと互換性\n- 複数のクライアントを同時にサポート\n- ファイアウォールやプロキシを通過\n\n**制限：**\n- 単方向ストリーミング（SSEはサーバーからクライアントのみ）\n- セッションアフィニティが必要（ステートフル接続）\n- 一部のロードバランサーが長寿命SSE接続で問題\n- プロトコルに組み込みの再接続セマンティクスなし\n\n**最適な用途：** 小〜中規模のデプロイメント、内部ツール、既存HTTPインフラストラクチャを持つチーム。\n\n### Streamable HTTPトランスポート\n\nStreamable HTTPは最新のトランスポートで、本番環境のデプロイメント向けに特別に設計されています。すべてのメッセージに標準HTTP POSTを使用し、長時間実行操作にはオプションのSSEストリーミングを使用します。\n\n**利点：**\n- 完全にステートレスなリクエスト\u002Fレスポンスモデル\n- 任意のHTTPロードバランサーで動作\n- `Mcp-Session-Id`ヘッダーによる組み込みセッション管理\n- ストリーミングと非ストリーミングの両方のレスポンスをサポート\n- CDNやプロキシと互換性\n\n**制限：**\n- サーバーサイドのセッションストレージが必要（Redis、データベース）\n- stdioよりメッセージごとのオーバーヘッドがわずかに高い\n- 新しいトランスポート — エコシステムツールが少ない\n\n**最適な用途：** 本番クラウドデプロイメント、マルチテナントプラットフォーム、エンタープライズ環境。\n\n### トランスポート比較マトリックス\n\n| 特性 | stdio | SSE | Streamable HTTP |\n|------|-------|-----|-----------------|\n| ネットワーク対応 | いいえ | はい | はい |\n| 水平スケーリング | いいえ | 限定的 | はい |\n| ロードバランシング | いいえ | セッションアフィニティ必要 | 標準HTTP LB |\n| セッション管理 | プロセスごと | サーバーメモリ | 外部ストア |\n| レイテンシ | 最低 | 低 | 低 |\n| ファイアウォール互換 | N\u002FA | はい | はい |\n\n## 認証と認可\n\n### OAuth 2.0統合\n\n本番MCPサーバーは、クライアントが自己を認証し、特定のツールやリソースへのアクセスを制限する方法が必要です。MCPプロトコルは、リモートサーバー向けにOAuth 2.0をサポートしています。\n\nフローは次のようになります：\n\n1. MCP clientがサーバーに接続し、`initialize`リクエストを送信\n2. サーバーが`401 Unauthorized`とOAuthメタデータURL付きの`WWW-Authenticate`ヘッダーで応答\n3. Clientが`\u002F.well-known\u002Foauth-authorization-server`からOAuth設定を取得\n4. Clientがブラウザベースの認可フローを使用してアクセストークンを取得\n5. その後のリクエストにはBearerトークンを`Authorization`ヘッダーに含める\n\n### ツールレベルの認可\n\n認証だけでは不十分です。本番システムには、ユーザーがどのツールを呼び出し、どのリソースにアクセスできるかを制御する細かい認可が必要です。\n\n推奨アプローチ：\n\n- **ロールベースアクセス制御（RBAC）**：ロールにツール権限を割り当て。例：`analyst`ロールは読み取り専用クエリツールにアクセスでき、`admin`ロールは書き込み操作にアクセス可能。\n- **スコープベース制御**：OAuthスコープを使用してツールアクセスを制限。例：`mcp:tools:query:read`スコープはSELECTクエリのみ許可。\n- **動的ツールフィルタリング**：認証されたユーザーの権限に基づいて、利用可能なツールリストをフィルタリング。\n\n## Redisによる水平スケーリング\n\nステートレスなStreamable HTTPトランスポートを使用すると、複数のMCPサーバーインスタンスをロードバランサーの背後で実行できます。セッション状態はRedisに保存され、すべてのインスタンスで共有されます。\n\n```\nClient → Load Balancer → MCP Server 1 ↔ Redis\n                       → MCP Server 2 ↔ Redis\n                       → MCP Server 3 ↔ Redis\n```\n\n各リクエストには`Mcp-Session-Id`ヘッダーが含まれ、任意のサーバーインスタンスがRedisからセッション状態を取得して処理を続行できます。\n\n### Kubernetes上のオートスケーリング\n\nMCPサーバーをKubernetesにデプロイすると、アクティブセッション数やCPU使用率に基づいてPodを自動的にスケーリングできます。Horizontal Pod Autoscaler（HPA）でカスタムメトリクスを使用します。\n\n## 監査ロギング\n\nエンタープライズデプロイメントでは、AIが外部ツールを呼び出すたびに詳細な監査証跡が必要です。各ツール呼び出しについて以下を記録します：\n\n- **タイムスタンプ**：呼び出しの時刻\n- **ユーザーID**：AIアクションを開始したユーザー\n- **ツール名**：呼び出されたMCPツール\n- **入力パラメータ**：ツールに送信されたデータ\n- **出力結果**：ツールが返したデータ\n- **実行時間**：ツール呼び出しにかかった時間\n- **エラー**：発生したエラー\n\n構造化ロギング（JSON形式）を使用し、ログを集中ログ管理システム（ELK Stack、Datadog、CloudWatch）に送信します。\n\n## ゲートウェイアーキテクチャ\n\n大規模デプロイメントでは、MCPゲートウェイパターンの実装を検討してください。ゲートウェイはMCP clientとバックエンドMCPサーバー間のリバースプロキシとして機能します。\n\nゲートウェイの責任：\n\n- **認証の一元化**：すべてのOAuth検証をゲートウェイで処理\n- **レート制限**：ユーザーごと、ツールごとのレート制限を適用\n- **ルーティング**：ツール名に基づいてリクエストを適切なバックエンドサーバーにルーティング\n- **監査ログの収集**：すべてのツール呼び出しをゲートウェイレベルで記録\n- **サーキットブレーカー**：バックエンドサーバー障害時のフォールバック処理\n\n## FAQ\n\n**Q：本番環境でstdioトランスポートを使用できますか？**\nA：はい、ただし限定的なシナリオでのみ。各ユーザーが独自のローカルMCPサーバープロセスを実行するデスクトップアプリケーションには適しています。共有サーバーインフラストラクチャにはStreamable HTTPを使用してください。\n\n**Q：MCPセッションの永続化は必要ですか？**\nA：はい、Streamable HTTPを使用する場合。セッション状態にはクライアントの機能、ネゴシエートされたプロトコルバージョン、登録された通知が含まれます。Redisは推奨されるセッションストアです。\n\n**Q：MCPサーバーのバージョン管理はどうすべきですか？**\nA：`initialize`レスポンスのサーバーバージョンフィールドを使用します。破壊的変更（ツールの削除、スキーマの変更）の場合、メジャーバージョンをバンプし、移行期間中は古いバージョンと新しいバージョンの両方をサポートします。\n\n**Q：MCPの最大メッセージサイズは？**\nA：プロトコルは最大サイズを定義していませんが、実際の制限はトランスポートに依存します。Streamable HTTPの場合、レスポンスを10 MB以下に保ちます。stdioの場合、システムパイプバッファ（通常64 KB）により大きなレスポンスにはチャンキングが必要な場合があります。","\u003Ch2 id=\"\">プロトタイプから本番環境へ：何が変わるか\u003C\u002Fh2>\n\u003Cp>ラップトップで動作するMCPサーバーを構築するのは比較的簡単です。分散インフラストラクチャ全体で数千のAIエージェントセッションを同時に処理するサーバーを運用するのは、まったく異なるエンジニアリング上の課題です。本番環境のMCPデプロイメントは、プロトタイプでは無視できる5つの問題に対処する必要があります：\u003Cstrong>トランスポートのスケーラビリティ\u003C\u002Fstrong>、\u003Cstrong>認証と認可\u003C\u002Fstrong>、\u003Cstrong>スケールでのセッション管理\u003C\u002Fstrong>、\u003Cstrong>監査証跡\u003C\u002Fstrong>、\u003Cstrong>マルチサーバーオーケストレーション\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Cp>この記事は、MCPサーバーを開発から本番環境に移行するエンジニアリングチーム向けの技術ガイドです。少なくとも1つのMCPサーバーを構築し、プロトコルの基本を理解していることを前提としています。まだの場合は、初めてのMCPサーバー構築に関する関連記事から始めてください。\u003C\u002Fp>\n\u003Ch2 id=\"stdio-vs-sse-vs-streamable-http\">トランスポートのスケーラビリティ：stdio vs SSE vs Streamable HTTP\u003C\u002Fh2>\n\u003Cp>MCPは3つのトランスポートメカニズムを定義しています。本番環境に適したものを選択することが、最初のアーキテクチャ上の決定です。\u003C\u002Fp>\n\u003Ch3>stdioトランスポート\u003C\u002Fh3>\n\u003Cp>stdioトランスポートは標準入出力ストリームを介して通信します。HostアプリケーションがMCPサーバーを子プロセスとして起動し、stdin\u002Fstdoutを介してJSON-RPCメッセージを交換します。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>利点：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>ネットワーク設定不要\u003C\u002Fli>\n\u003Cli>プロセスレベルの分離\u003C\u002Fli>\n\u003Cli>ポート競合なし\u003C\u002Fli>\n\u003Cli>最低レイテンシ（ネットワークスタックなし）\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>制限：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>サーバーはHostと同じマシン上で実行する必要がある\u003C\u002Fli>\n\u003Cli>Clientセッションごとに1つのサーバープロセス\u003C\u002Fli>\n\u003Cli>ロードバランシング不可\u003C\u002Fli>\n\u003Cli>水平スケーリング不可\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>最適な用途：\u003C\u002Fstrong> ローカル開発ツール、IDE拡張機能、シングルユーザーデスクトップアプリケーション。\u003C\u002Fp>\n\u003Ch3>SSE（Server-Sent Events）トランスポート\u003C\u002Fh3>\n\u003Cp>SSEトランスポートは、クライアントからサーバーへのメッセージにHTTPを使用し、サーバーからクライアントへのメッセージにServer-Sent Eventsを使用します。サーバーはHTTPサービスとして動作します。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>利点：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>ネットワーク経由でアクセス可能（リモートサーバー）\u003C\u002Fli>\n\u003Cli>既存のHTTPインフラストラクチャと互換性\u003C\u002Fli>\n\u003Cli>複数のクライアントを同時にサポート\u003C\u002Fli>\n\u003Cli>ファイアウォールやプロキシを通過\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>制限：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>単方向ストリーミング（SSEはサーバーからクライアントのみ）\u003C\u002Fli>\n\u003Cli>セッションアフィニティが必要（ステートフル接続）\u003C\u002Fli>\n\u003Cli>一部のロードバランサーが長寿命SSE接続で問題\u003C\u002Fli>\n\u003Cli>プロトコルに組み込みの再接続セマンティクスなし\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>最適な用途：\u003C\u002Fstrong> 小〜中規模のデプロイメント、内部ツール、既存HTTPインフラストラクチャを持つチーム。\u003C\u002Fp>\n\u003Ch3>Streamable HTTPトランスポート\u003C\u002Fh3>\n\u003Cp>Streamable HTTPは最新のトランスポートで、本番環境のデプロイメント向けに特別に設計されています。すべてのメッセージに標準HTTP POSTを使用し、長時間実行操作にはオプションのSSEストリーミングを使用します。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>利点：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>完全にステートレスなリクエスト\u002Fレスポンスモデル\u003C\u002Fli>\n\u003Cli>任意のHTTPロードバランサーで動作\u003C\u002Fli>\n\u003Cli>\u003Ccode>Mcp-Session-Id\u003C\u002Fcode>ヘッダーによる組み込みセッション管理\u003C\u002Fli>\n\u003Cli>ストリーミングと非ストリーミングの両方のレスポンスをサポート\u003C\u002Fli>\n\u003Cli>CDNやプロキシと互換性\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>制限：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>サーバーサイドのセッションストレージが必要（Redis、データベース）\u003C\u002Fli>\n\u003Cli>stdioよりメッセージごとのオーバーヘッドがわずかに高い\u003C\u002Fli>\n\u003Cli>新しいトランスポート — エコシステムツールが少ない\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>最適な用途：\u003C\u002Fstrong> 本番クラウドデプロイメント、マルチテナントプラットフォーム、エンタープライズ環境。\u003C\u002Fp>\n\u003Ch3>トランスポート比較マトリックス\u003C\u002Fh3>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>特性\u003C\u002Fth>\u003Cth>stdio\u003C\u002Fth>\u003Cth>SSE\u003C\u002Fth>\u003Cth>Streamable HTTP\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>ネットワーク対応\u003C\u002Ftd>\u003Ctd>いいえ\u003C\u002Ftd>\u003Ctd>はい\u003C\u002Ftd>\u003Ctd>はい\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>水平スケーリング\u003C\u002Ftd>\u003Ctd>いいえ\u003C\u002Ftd>\u003Ctd>限定的\u003C\u002Ftd>\u003Ctd>はい\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>ロードバランシング\u003C\u002Ftd>\u003Ctd>いいえ\u003C\u002Ftd>\u003Ctd>セッションアフィニティ必要\u003C\u002Ftd>\u003Ctd>標準HTTP LB\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>セッション管理\u003C\u002Ftd>\u003Ctd>プロセスごと\u003C\u002Ftd>\u003Ctd>サーバーメモリ\u003C\u002Ftd>\u003Ctd>外部ストア\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>レイテンシ\u003C\u002Ftd>\u003Ctd>最低\u003C\u002Ftd>\u003Ctd>低\u003C\u002Ftd>\u003Ctd>低\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>ファイアウォール互換\u003C\u002Ftd>\u003Ctd>N\u002FA\u003C\u002Ftd>\u003Ctd>はい\u003C\u002Ftd>\u003Ctd>はい\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch2 id=\"\">認証と認可\u003C\u002Fh2>\n\u003Ch3>OAuth 2.0統合\u003C\u002Fh3>\n\u003Cp>本番MCPサーバーは、クライアントが自己を認証し、特定のツールやリソースへのアクセスを制限する方法が必要です。MCPプロトコルは、リモートサーバー向けにOAuth 2.0をサポートしています。\u003C\u002Fp>\n\u003Cp>フローは次のようになります：\u003C\u002Fp>\n\u003Col>\n\u003Cli>MCP clientがサーバーに接続し、\u003Ccode>initialize\u003C\u002Fcode>リクエストを送信\u003C\u002Fli>\n\u003Cli>サーバーが\u003Ccode>401 Unauthorized\u003C\u002Fcode>とOAuthメタデータURL付きの\u003Ccode>WWW-Authenticate\u003C\u002Fcode>ヘッダーで応答\u003C\u002Fli>\n\u003Cli>Clientが\u003Ccode>\u002F.well-known\u002Foauth-authorization-server\u003C\u002Fcode>からOAuth設定を取得\u003C\u002Fli>\n\u003Cli>Clientがブラウザベースの認可フローを使用してアクセストークンを取得\u003C\u002Fli>\n\u003Cli>その後のリクエストにはBearerトークンを\u003Ccode>Authorization\u003C\u002Fcode>ヘッダーに含める\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>ツールレベルの認可\u003C\u002Fh3>\n\u003Cp>認証だけでは不十分です。本番システムには、ユーザーがどのツールを呼び出し、どのリソースにアクセスできるかを制御する細かい認可が必要です。\u003C\u002Fp>\n\u003Cp>推奨アプローチ：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>ロールベースアクセス制御（RBAC）\u003C\u002Fstrong>：ロールにツール権限を割り当て。例：\u003Ccode>analyst\u003C\u002Fcode>ロールは読み取り専用クエリツールにアクセスでき、\u003Ccode>admin\u003C\u002Fcode>ロールは書き込み操作にアクセス可能。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>スコープベース制御\u003C\u002Fstrong>：OAuthスコープを使用してツールアクセスを制限。例：\u003Ccode>mcp:tools:query:read\u003C\u002Fcode>スコープはSELECTクエリのみ許可。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>動的ツールフィルタリング\u003C\u002Fstrong>：認証されたユーザーの権限に基づいて、利用可能なツールリストをフィルタリング。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"redis\">Redisによる水平スケーリング\u003C\u002Fh2>\n\u003Cp>ステートレスなStreamable HTTPトランスポートを使用すると、複数のMCPサーバーインスタンスをロードバランサーの背後で実行できます。セッション状態はRedisに保存され、すべてのインスタンスで共有されます。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Client → Load Balancer → MCP Server 1 ↔ Redis\n                       → MCP Server 2 ↔ Redis\n                       → MCP Server 3 ↔ Redis\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>各リクエストには\u003Ccode>Mcp-Session-Id\u003C\u002Fcode>ヘッダーが含まれ、任意のサーバーインスタンスがRedisからセッション状態を取得して処理を続行できます。\u003C\u002Fp>\n\u003Ch3>Kubernetes上のオートスケーリング\u003C\u002Fh3>\n\u003Cp>MCPサーバーをKubernetesにデプロイすると、アクティブセッション数やCPU使用率に基づいてPodを自動的にスケーリングできます。Horizontal Pod Autoscaler（HPA）でカスタムメトリクスを使用します。\u003C\u002Fp>\n\u003Ch2 id=\"\">監査ロギング\u003C\u002Fh2>\n\u003Cp>エンタープライズデプロイメントでは、AIが外部ツールを呼び出すたびに詳細な監査証跡が必要です。各ツール呼び出しについて以下を記録します：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>タイムスタンプ\u003C\u002Fstrong>：呼び出しの時刻\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ユーザーID\u003C\u002Fstrong>：AIアクションを開始したユーザー\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ツール名\u003C\u002Fstrong>：呼び出されたMCPツール\u003C\u002Fli>\n\u003Cli>\u003Cstrong>入力パラメータ\u003C\u002Fstrong>：ツールに送信されたデータ\u003C\u002Fli>\n\u003Cli>\u003Cstrong>出力結果\u003C\u002Fstrong>：ツールが返したデータ\u003C\u002Fli>\n\u003Cli>\u003Cstrong>実行時間\u003C\u002Fstrong>：ツール呼び出しにかかった時間\u003C\u002Fli>\n\u003Cli>\u003Cstrong>エラー\u003C\u002Fstrong>：発生したエラー\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>構造化ロギング（JSON形式）を使用し、ログを集中ログ管理システム（ELK Stack、Datadog、CloudWatch）に送信します。\u003C\u002Fp>\n\u003Ch2 id=\"\">ゲートウェイアーキテクチャ\u003C\u002Fh2>\n\u003Cp>大規模デプロイメントでは、MCPゲートウェイパターンの実装を検討してください。ゲートウェイはMCP clientとバックエンドMCPサーバー間のリバースプロキシとして機能します。\u003C\u002Fp>\n\u003Cp>ゲートウェイの責任：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>認証の一元化\u003C\u002Fstrong>：すべてのOAuth検証をゲートウェイで処理\u003C\u002Fli>\n\u003Cli>\u003Cstrong>レート制限\u003C\u002Fstrong>：ユーザーごと、ツールごとのレート制限を適用\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ルーティング\u003C\u002Fstrong>：ツール名に基づいてリクエストを適切なバックエンドサーバーにルーティング\u003C\u002Fli>\n\u003Cli>\u003Cstrong>監査ログの収集\u003C\u002Fstrong>：すべてのツール呼び出しをゲートウェイレベルで記録\u003C\u002Fli>\n\u003Cli>\u003Cstrong>サーキットブレーカー\u003C\u002Fstrong>：バックエンドサーバー障害時のフォールバック処理\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"faq\">FAQ\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Q：本番環境でstdioトランスポートを使用できますか？\u003C\u002Fstrong>\nA：はい、ただし限定的なシナリオでのみ。各ユーザーが独自のローカルMCPサーバープロセスを実行するデスクトップアプリケーションには適しています。共有サーバーインフラストラクチャにはStreamable HTTPを使用してください。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Q：MCPセッションの永続化は必要ですか？\u003C\u002Fstrong>\nA：はい、Streamable HTTPを使用する場合。セッション状態にはクライアントの機能、ネゴシエートされたプロトコルバージョン、登録された通知が含まれます。Redisは推奨されるセッションストアです。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Q：MCPサーバーのバージョン管理はどうすべきですか？\u003C\u002Fstrong>\nA：\u003Ccode>initialize\u003C\u002Fcode>レスポンスのサーバーバージョンフィールドを使用します。破壊的変更（ツールの削除、スキーマの変更）の場合、メジャーバージョンをバンプし、移行期間中は古いバージョンと新しいバージョンの両方をサポートします。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Q：MCPの最大メッセージサイズは？\u003C\u002Fstrong>\nA：プロトコルは最大サイズを定義していませんが、実際の制限はトランスポートに依存します。Streamable HTTPの場合、レスポンスを10 MB以下に保ちます。stdioの場合、システムパイプバッファ（通常64 KB）により大きなレスポンスにはチャンキングが必要な場合があります。\u003C\u002Fp>\n","ja","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:38.742063Z","本番環境でのMCP：Transport、認証、スケーリングの課題","MCPサーバーを本番環境で運用するための技術ガイド。トランスポート選択、OAuth認証、Redisセッションによる水平スケーリング、監査ログ、ゲートウェイパターンを解説。","mcp 本番環境 スケーリング",null,"index, follow",[22,27,31],{"id":23,"name":24,"slug":25,"created_at":26},"c0000000-0000-0000-0000-000000000008","AI","ai","2026-03-28T10:44:21.513630Z",{"id":28,"name":29,"slug":30,"created_at":26},"c0000000-0000-0000-0000-000000000012","DevOps","devops",{"id":32,"name":33,"slug":34,"created_at":26},"c0000000-0000-0000-0000-000000000013","Security","security","エンジニアリング",[37,43,49],{"id":38,"title":39,"slug":40,"excerpt":41,"locale":12,"category_name":35,"published_at":42},"d0000000-0000-0000-0000-000000000671","2026年、なぜBaliは東南アジアのインパクトテックハブになりつつあるのか","naze-bali-2026-tonan-ajia-inpakuto-tekku-habu","Baliは東南アジアのスタートアップエコシステムで第16位にランクイン。Web3ビルダー、AIサステナビリティスタートアップ、エコトラベルテック企業が集積し、この島は地域のインパクトテック首都としてのニッチを確立しつつあります。","2026-03-28T10:44:49.081179Z",{"id":44,"title":45,"slug":46,"excerpt":47,"locale":12,"category_name":35,"published_at":48},"d0000000-0000-0000-0000-000000000670","ASEANデータ保護パッチワーク：開発者のためのコンプライアンスチェックリスト","asean-deta-hogo-pacchiwaku-kaihatsusha-kompuraiansu-chekkurisuto","7つのASEAN諸国が包括的なデータ保護法を有し、それぞれ異なる同意モデル、ローカライゼーション要件、罰則構造を持っています。マルチカントリーアプリケーションを構築する開発者のための実用的なコンプライアンスチェックリストです。","2026-03-28T10:44:49.074910Z",{"id":50,"title":51,"slug":52,"excerpt":53,"locale":12,"category_name":35,"published_at":54},"d0000000-0000-0000-0000-000000000669","Indonesiaの290億ドルデジタルトランスフォーメーション：ソフトウェア企業のチャンス","indonesia-290oku-doru-dejitaru-toransufomeshon-sofutowea-kigyo-chansu","IndonesiaのITサービス市場は2026年に290.3億ドルに達すると予測されており、2025年の243.7億ドルから増加します。クラウドインフラ、AI、電子商取引、データセンターが東南アジアで最も速い成長を牽引しています。","2026-03-28T10:44:49.055660Z",{"id":13,"name":56,"slug":57,"bio":58,"photo_url":19,"linkedin":19,"role":59,"created_at":60,"updated_at":60},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]