MCP2ラムダ
AnthropicのModel Context Protocol (MCP)を使用して、コードを変更することなく、任意のAWS Lambda関数を Large Language Model (LLM)ツールとして実行します。
graph LR
A[Model] <--> B[MCP Client]
B <--> C["MCP2Lambda<br>(MCP Server)"]
C <--> D[Lambda Function]
D <--> E[Other AWS Services]
D <--> F[Internet]
D <--> G[VPC]
style A fill:#f9f,stroke:#333,stroke-width:2px
style B fill:#bbf,stroke:#333,stroke-width:2px
style C fill:#bfb,stroke:#333,stroke-width:4px
style D fill:#fbb,stroke:#333,stroke-width:2px
style E fill:#fbf,stroke:#333,stroke-width:2px
style F fill:#dff,stroke:#333,stroke-width:2px
style G fill:#ffd,stroke:#333,stroke-width:2pxこのMCPサーバーは、MCPクライアントとAWS Lambda関数間のブリッジとして機能し、生成AIモデルがLambda関数をツールとしてアクセスして実行できるようにします。これは、例えば、パブリックネットワークへのアクセスを提供することなく、社内アプリケーションやデータベースなどのプライベートリソースにアクセスする場合に役立ちます。このアプローチにより、モデルは他のAWSサービス、プライベートネットワーク、そしてパブリックインターネットを利用できるようになります。
セキュリティの観点から見ると、このアプローチは、モデルがLambda関数を呼び出すことは許可しながらも、他のAWSサービスに直接アクセスできないようにすることで、職務の分離を実現します。クライアントはLambda関数を呼び出すためにAWS認証情報のみを必要とします。Lambda関数は、関数ロールを使用して他のAWSサービスとやり取りし、パブリックネットワークまたはプライベートネットワークにアクセスできるようになります。
MCP サーバーは、次の 2 つのツールへのアクセスを提供します。
最初のツールは、アカウント内のプレフィックスまたは許可された名前のリストに一致するすべてのLambda関数を自動検出します。このツールは、関数の名前と説明をモデルと共有します。
2 番目のツールを使用すると、必要なパラメータを渡して名前で Lambda 関数を呼び出すことができます。
コードの変更は不要です。結果を改善するには、以下の設定を変更する必要があります。
戦略の選択
ゲートウェイは、Lambda 関数を処理するための 2 つの異なる戦略をサポートしています。
事前検出モード(デフォルト:有効):起動時に各Lambda関数を個別のツールとして登録します。これにより、各関数がそれぞれの名前付きツールとして表示される、より直感的なインターフェースが提供されます。
汎用モード: 2 つの汎用ツール (
list_lambda_functionsとinvoke_lambda_function) を使用して、Lambda 関数と対話します。
この動作は以下を通じて制御できます。
環境変数:
PRE_DISCOVERY=true|falseCLI フラグ:
--no-pre-discovery(事前検出モードを無効にする)
例:
# Disable pre-discovery mode
export PRE_DISCOVERY=false
python main.py
# Or using CLI flag to disable pre-discovery
python main.py --no-pre-discoveryMCPクライアントにLambda関数の使用方法を理解させるには、 **Lambda関数の説明において、**関数の機能と使用するパラメータを明確に示す必要があります。簡単なデモと詳細については、サンプル関数をご覧ください。
モデルが AWS Lambda 経由で利用可能なツールを使用できるようにするには、次のようなものをシステムプロンプトに追加します。
Use the AWS Lambda tools to improve your answers.Related MCP server: MCP Agents Server
概要
MCP2Lambdaは、LLMがAWS Lambda関数をツールとして操作できるようにし、テキスト生成以外の機能も拡張します。これにより、モデルは以下のことが可能になります。
VPC 内のデータソースを含むリアルタイムのプライベート データにアクセスします
サンドボックス環境として Lambda 関数を使用してカスタムコードを実行する
Lambda 関数のインターネット アクセス (および帯域幅) を使用して外部サービスや API と対話する
特殊な計算やデータ処理を実行する
サーバーは、AI モデルが外部ツールにアクセスする方法を標準化する MCP プロトコルを使用します。
デフォルトでは、名前がmcp2lambda-で始まる関数のみがモデルで使用できます。
前提条件
Python 3.12以上
認証情報が設定された AWS アカウント
AWS Lambda 関数 (リポジトリで提供されているサンプル関数)
Converse APIを備えたAmazon Bedrockを使用したアプリケーション
Claude DesktopのようなMCP互換クライアント
インストール
Smithery経由でインストール
Smithery経由で Claude Desktop 用の MCP2Lambda を自動的にインストールするには:
npx -y @smithery/cli install @danilop/MCP2Lambda --client claude手動インストール
リポジトリをクローンします。
git clone https://github.com/yourusername/mcp2lambda.git cd mcp2lambdaAWS 認証情報を設定します。例えば、 AWS CLIを使用します。
aws configure
サンプルラムダ関数
このリポジトリには、異なるユースケースを示す3つのサンプルLambda関数が含まれています。これらの関数は基本的な権限を持ち、CloudWatchログへの書き込みのみが可能です。
顧客ID(メールより)
メールアドレスに基づいて顧客IDを取得します。この関数は、メールアドレスをパラメータとして受け取り、関連付けられた顧客IDを返します。これは、シンプルな検索ツールの構築方法を示しています。この関数は、 user@example.comメールアドレスに返信するようにハードコードされています。例えば、モデルにuser@example.comメールアドレスの顧客IDを取得するように指示することができます。
顧客情報ID
顧客IDに基づいて詳細な顧客情報を取得します。この関数は、名前、メールアドレス、ステータスなどの顧客詳細情報を返し、Lambdaがどのようにコンテキスト固有のデータを提供できるかを示します。この関数は、前の関数によって返された顧客IDに応答するようにハードコードされています。例えば、モデルに「メールアドレスuser@example.comの顧客ステータスを取得する」ように指示できます。この場合、両方の関数を使用して結果を取得します。
Pythonコードを実行する
Lambdaサンドボックス環境内で任意のPythonコードを実行します。この強力な関数により、ClaudeはPythonコードを記述・実行し、モデルに組み込まれていない計算、データ処理、その他の操作を実行できます。例えば、モデルに「1から10、1から100、そして100万までの間の素数の個数を計算してください」と指示することができます。
サンプルLambda関数のデプロイ
リポジトリには、 sample_functionsディレクトリにサンプル Lambda 関数が含まれています。
AWS SAM CLI をインストールします: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html
サンプル関数をデプロイします。
cd sample_functions sam build sam deploy
サンプル関数は、プレフィックスmcp2lambda-を付けてデプロイされます。
Amazon Bedrock での使用
MCP2Lambda は Amazon Bedrock の Converse API とも併用できるため、Bedrock でサポートされているどのモデルでも MCP プロトコルを使用できます。
mcp_client_bedrockディレクトリには、MCP2Lambda を Amazon Bedrock モデルに接続するクライアント実装が含まれています。
詳細については、 https://github.com/mikegc-aws/amazon-bedrock-mcpを参照してください。
前提条件
Claude、Mistral、Llama などのモデルを使用するための Amazon Bedrock アクセスと権限。
適切な資格情報で構成されたBoto3
インストールとセットアップ
mcp_client_bedrock ディレクトリに移動します。
cd mcp_client_bedrock依存関係をインストールします:
uv pip install -e .クライアントを実行します。
python main.py
構成
クライアントはデフォルトで Anthropic の Claude 3.7 Sonnet を使用するように設定されていますが、 main.pyのmodel_id変更して他の Bedrock モデルを使用することもできます。
# Examples of supported models:
model_id = "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
#model_id = "us.amazon.nova-pro-v1:0"同じファイル内のシステム プロンプトをカスタマイズして、モデルの動作を変更することもできます。
使用法
1 つのターミナルで MCP2Lambda サーバーを起動します。
cd mcp2lambda uv run main.py別のターミナルで Bedrock クライアントを実行します。
cd mcp_client_bedrock python main.pyコマンドラインインターフェースを介してモデルを操作します。モデルは、事前にデプロイしたLambda関数にアクセスできます。
Claude Desktopでの使用
Claude Desktop 構成ファイルに次のコードを追加します。
{
"mcpServers": {
"mcp2lambda": {
"command": "uv",
"args": [
"--directory",
"<full path to the mcp2lambda directory>",
"run",
"main.py"
]
}
}
}モデルが AWS Lambda 経由でツールを使用できるようにするには、設定プロファイルで、次のような文を個人設定に追加します。
Use the AWS Lambda tools to improve your answers.MCPサーバーの起動
MCP サーバーをローカルで起動します。
cd mcp2lambda
uv run main.py