mcpField
S
Sample Serverless MCP Servers

Sample Serverless MCP Servers

ローカル
github.com/aws-samplesクラウド・インフラ24554 週間前に更新

Sample Serverless MCP Servers について

Sample Serverless MCP Servers は、AWS のサーバーレス基盤で動作する AI エージェントと MCP サーバーのサンプル実装集です。AWS 上でリモート MCP サーバーを構築したい開発者向けの参考資料となります。Streamable HTTP におけるステートフルとステートレスの違いについての解説も含みます。

主な機能

  1. 01AWS Lambda 上のステートレスなリモート MCP サーバーの例
  2. 02Amazon ECS 上のステートフルとステートレスの例
  3. 03Strands Agents SDK を使った AI エージェントの例
  4. 04Python と Node.js のランタイム例
  5. 05Terraform、CDK、SAM によるデプロイ方式

活用シーン

  1. 01AWS Lambda にリモート MCP サーバーをデプロイする方法の参照
  2. 02Amazon ECS でセッションを保持する MCP サーバーを構築する
  3. 03Streamable HTTP におけるステートフルとステートレスの比較

MCP 対応

MCP サーバーの実装例を提供し、Streamable HTTP で接続するリモートサーバーとしての構成を示します。AI エージェントのサンプルでは MCP サーバーへの接続も含まれます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

サーバーレス MCP サーバーのサンプル

README の画像

このリポジトリには、MCP サーバーの実装サンプルが含まれています。

ディレクトリランタイムIaC説明
strands-agent-on-lambdaPython(Agent)
Node.js(MCP)
Terraform, CDKStrands Agents SDK を使用し、AWS Lambda 上で実行される AI エージェントと接続された MCP サーバーの実装サンプルです。ユーザー認証のための Cognito との統合も含まれています。
strands-agent-on-lambda-pythonPythonSAMStrands Agents SDK を使用し、AWS Lambda 上で実行される AI エージェントの実装サンプルです。
stateless-mcp-on-lambda-nodejsNode.jsTerraformAWS Lambda と Amazon API Gateway 上でネイティブに実行される、リモートのステートレス MCP サーバーの実装サンプルです。
stateless-mcp-on-lambda-pythonPythonSAMAWS Lambda と Amazon API Gateway 上でネイティブに実行される、リモートのステートレス MCP サーバーの実装サンプルです。
stateless-mcp-on-ecs-nodejsNode.jsTerraformApplication Load Balancer を使用して Amazon ECS 上でネイティブに実行される、リモートのステートレス MCP サーバーの実装サンプルです。
stateful-mcp-on-ecs-nodejsNode.jsTerraformApplication Load Balancer を使用して Amazon ECS 上でネイティブに実行される、リモートのステートフル MCP サーバーの実装サンプルです。
stateful-mcp-on-ecs-pythonPythonSAMApplication Load Balancer を使用して Amazon ECS 上でネイティブに実行される、リモートのステートフル MCP サーバーの実装サンプルです。
lambda-ops-mcp-serverNode.jsTerraform非推奨のランタイムで実行されている関数を検出し、アップグレードするために使用できるローカル MCP サーバーのデモ用 PoC です。

ステートフル MCP サーバーとステートレス MCP サーバー

MCP サーバー/クライアントで Streamable HTTP Transport を使用する場合、ステートフルとステートレスの MCP サーバー実装の違いや、それぞれのトレードオフを理解することが重要です。各モデルは、スケーラビリティ、接続処理、セッション管理に影響します。

主なポイント

Streamable HTTP Transport の仕様では、2 つの重要な機能が説明されています。まず、クライアントは長時間有効な HTTP GET リクエストを開始して永続的な SSE(Server-Sent Events)接続を確立できるため、クライアントが POST リクエストを送信していない場合でも、サーバーからデータをプッシュできます。次に、接続が中断された場合、クライアントは別の GET リクエストで再接続して通信を再開できる必要があります。どちらの機能も、サーバーが永続的なセッションコンテキストを維持し、長時間有効な接続をサポートする必要があることを意味します。Streamable HTTP Transport のセッション管理について詳しくはこちらをご覧ください。

ステートフルモデルの課題

ステートフルな MCP サーバーでは、これはセッションの状態をメモリ上で維持し、SSE 接続を長時間にわたって維持することを意味します。しかし、2025 年 5 月上旬時点では、公式 MCP SDK のいずれも外部でのセッション永続化(Redis や DynamoDB など)をサポートしていません。この制限により、ステートフルサーバーを水平スケーリングすることが困難になります。たとえば、クライアントがあるサーバーインスタンスとのセッションを確立した後、後続のリクエストが別のインスタンスにルーティングされると、セッションコンテキストが失われ、接続に失敗する可能性があります。

とはいえ、ロードバランサー側でセッションアフィニティ(スティッキーセッションとも呼ばれます)を設定すれば、ステートフルな MCP サーバーをスケーリングすることは可能です。たとえば、Cookie ベースのスティッキーセッションを利用すれば、セッション中、クライアントが同じサーバーインスタンスにルーティングされるようにできます。ただし、現在、TypeScript MCP Client SDK は fetch API に依存しており、Cookie をネイティブにはサポートしていません。この制限を回避するには、stateful-mcp-on-ecs の例で示すように、Cookie の処理を手動で実装する必要があります。

README の画像

ステートレスなら解決できます

MCP の仕様では、ステートレスなサーバーモードも認められています。このモードでは、サーバーはリクエスト間でセッションコンテキストを保持せず、クライアントも切断された接続の再開を想定しません。ステートレスモードでは水平スケーリングをシームレスに行うことができ、伸縮性と負荷分散が重要な環境に適しています。このモデルは、このリポジトリに含まれる stateless-mcp-on-lambda、stateless-mcp-on-ecs、stateless-mcp-on-lambda-python のサンプルで確認できます。

README の画像

README の画像

詳しい手順とデプロイ方法については、それぞれのフォルダーを参照してください。

ライセンス

このライブラリは MIT-0 ライセンスの下でライセンスされています。LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。