【正解】C
【0からの解説】
MCP(Model Context Protocol)は、AI アプリケーションが外部ツールやデータソースと通信するためのオープンなプロトコルです。リモートの MCP サーバーとは「Streamable HTTP」というトランスポート(通信方式)で通信するのが標準です。本問は、ステートレスな MCP サーバーを Lambda 化し、厳格な認証認可つきで内外に公開する構成を問うています。
・Lambda 関数 URL は、API Gateway を介さずに Lambda 関数へ直接 HTTPS エンドポイントを割り当てられる機能で、AWS_IAM 認証タイプを設定すると SigV4 署名(IAM 認証)による厳格なアクセス制御ができます。
【C が正解の理由】
Lambda 関数 URL を使えば、追加のインフラ(API Gateway 等)を構築・運用することなく、MCP 標準の Streamable HTTP トランスポートで MCP サーバーを公開できます。認証は AWS IAM(SigV4 署名)で行い、lambda:InvokeFunctionUrl 権限を社内のユーザー・ロールや、クロスアカウントのサードパーティパートナーのロールに付与することで、厳格な認証認可を最小の運用負荷で実現できます。
【誤りの選択肢】
A:Lambda Invoke API を使った独自トランスポートは AWS 専用の呼び出し方式であり、MCP 標準の HTTP トランスポートではありません。すべての MCP クライアント側にカスタム実装が必要になり、開発・運用負荷が増大します。
B:API キーは「クライアントの識別」には使えますが、それ単体では厳格な認証認可とは言えません(キーが漏えいすると誰でもアクセス可能)。さらに「MCP プロトコルではなく標準 HTTP を使うようにアプリを構成する」は、MCP サーバーとして統合するという前提そのものを壊しています。
D:API Gateway + Cognito + OAuth の構成は技術的には可能ですが、API Gateway と Cognito ユーザープールという追加コンポーネントの構築・運用が必要になり、関数 URL + IAM 認証で完結する C と比べて運用負荷が大きくなります。
【参考】
Lambda 関数 URLLambda 関数 URL のアクセス制御と認証