AWS Lambda Tool MCP サーバー
コード変更なしで Lambda 関数を選択して MCP ツールとして実行するための、AWS Lambda 向け Model Context Protocol (MCP) サーバーです。
機能
この MCP サーバーは、MCP クライアントと AWS Lambda 関数の間のブリッジとして機能し、生成 AI モデルが Lambda 関数にツールとしてアクセスして実行できるようにします。これはたとえば、パブリックなネットワークアクセスを提供することなく、社内アプリケーションやデータベースなどのプライベートリソースにアクセスする際に便利です。このアプローチにより、モデルは他の AWS サービス、プライベートネットワーク、およびパブリックインターネットを利用できます。
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
セキュリティの観点では、このアプローチはモデルに Lambda 関数の呼び出しは許可するものの、他の AWS サービスへの直接アクセスは許可しないことで、職務分掌を実現しています。クライアントに必要なのは Lambda 関数を呼び出すための AWS 認証情報だけです。Lambda 関数は(関数のロールを使用して)他の AWS サービスと連携し、パブリックまたはプライベートネットワークにアクセスできます。
前提条件
- Astral または GitHub README から
uvをインストールします uv python install 3.10を使用して Python をインストールします
インストール
| Kiro | Cursor | VS Code |
|---|---|---|
MCP クライアントの設定で MCP サーバーを構成します(例: Kiro の場合は ~/.kiro/settings/mcp.json を編集します):
{
"mcpServers": {
"awslabs.lambda-tool-mcp-server": {
"command": "uvx",
"args": ["awslabs.lambda-tool-mcp-server@latest"],
"env": {
"AWS_PROFILE": "your-aws-profile",
"AWS_REGION": "us-east-1",
"FUNCTION_PREFIX": "your-function-prefix",
"FUNCTION_LIST": "your-first-function, your-second-function",
"FUNCTION_TAG_KEY": "your-tag-key",
"FUNCTION_TAG_VALUE": "your-tag-value",
"FUNCTION_INPUT_SCHEMA_ARN_TAG_KEY": "your-function-tag-for-input-schema"
}
}
}
}
Windows へのインストール
Windows ユーザーの場合、MCP サーバーの設定形式が若干異なります:
{
"mcpServers": {
"awslabs.lambda-tool-mcp-server": {
"disabled": false,
"timeout": 60,
"type": "stdio",
"command": "uv",
"args": [
"tool",
"run",
"--from",
"awslabs.lambda-tool-mcp-server@latest",
"awslabs.lambda-tool-mcp-server.exe"
],
"env": {
"AWS_PROFILE": "your-aws-profile",
"AWS_REGION": "us-east-1",
"FUNCTION_PREFIX": "your-function-prefix",
"FUNCTION_LIST": "your-first-function, your-second-function",
"FUNCTION_TAG_KEY": "your-tag-key",
"FUNCTION_TAG_VALUE": "your-tag-value",
"FUNCTION_INPUT_SCHEMA_ARN_TAG_KEY": "your-function-tag-for-input-schema"
}
}
}
}
または、docker build -t awslabs/bedrock-kb-retrieval-mcp-server . が成功した後に docker を使用します:
# fictitious `.env` file with AWS temporary credentials
AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
AWS_SESSION_TOKEN=AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
{
"mcpServers": {
"awslabs.lambda-tool-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"--interactive",
"--env",
"AWS_REGION=us-east-1",
"--env",
"FUNCTION_PREFIX=your-function-prefix",
"--env",
"FUNCTION_LIST=your-first-function,your-second-function",
"--env",
"FUNCTION_TAG_KEY=your-tag-key",
"--env",
"FUNCTION_TAG_VALUE=your-tag-value",
"--env",
"FUNCTION_INPUT_SCHEMA_ARN_TAG_KEY=your-function-tag-for-input-schema",
"--env-file",
"/full/path/to/file/above/.env",
"awslabs/lambda-tool-mcp-server:latest"
],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
注: 認証情報はホスト側から継続的に更新し続ける必要があります
AWS_PROFILE と AWS_REGION は任意で、デフォルト値はそれぞれ default と us-east-1 です。
FUNCTION_PREFIX、FUNCTION_LIST のいずれか、または両方を指定できます。両方が空の場合、すべての関数が名前チェックを通過します。
名前チェックの後、FUNCTION_TAG_KEY と FUNCTION_TAG_VALUE の両方が設定されている場合、関数はさらにタグ(key=value)でフィルタリングされます。
FUNCTION_TAG_KEY と FUNCTION_TAG_VALUE の一方のみが設定されている場合、関数は選択されず、警告が表示されます。
重要: 関数名は MCP ツール名として使用されます。AWS Lambda の関数の説明は MCP ツールの説明として使用されます。関数の説明では、その関数をいつ使用するか(何を提供するか)と、どのように使用するか(どのパラメータを指定するか)を明確にする必要があります。たとえば、社内の顧客関係管理(CRM)システムへのアクセスを提供する関数では、次のような説明が使用できます:
Retrieve customer status on the CRM system based on { 'customerId' } or { 'customerEmail' }
Lambda 関数のパラメータは、正式な JSON Schema を提供する EventBridge Schema Registry を通じて提供することもできます。後述のスキーマサポートを参照してください。
AWS SAM でデプロイできるサンプル関数が examples フォルダに用意されています。
スキーマサポート
Lambda MCP サーバーは、AWS EventBridge Schema Registry を通じた入力スキーマをサポートしています。これにより、Lambda 関数の入力に対する正式な JSON Schema ドキュメントが提供されます。
設定
スキーマ検証を使用するには:
- EventBridge Schema Registry でスキーマを作成します
- Lambda 関数にスキーマ ARN のタグを付けます:
Key: FUNCTION_INPUT_SCHEMA_ARN_TAG_KEY (configurable)
Value: arn:aws:schemas:region:account:schema/registry-name/schema-name - タグキーを指定して MCP サーバーを設定します:
{
"env": {
"FUNCTION_INPUT_SCHEMA_ARN_TAG_KEY": "your-schema-arn-tag-key"
}
}
Lambda 関数にスキーマタグが付いている場合、MCP サーバーは以下を行います:
- EventBridge Schema Registry からスキーマを取得します
- スキーマをツールのドキュメントに追加します
これにより、関数の説明でパラメータを記述する場合と比較して、より優れたドキュメントが提供されます。
ベストプラクティス
FUNCTION_LISTを使用して、MCP ツールとして利用可能な関数を指定します。FUNCTION_PREFIXを使用して、MCP ツールとして利用可能な関数のプレフィックスを指定します。FUNCTION_TAG_KEYとFUNCTION_TAG_VALUEを使用して、MCP ツールとして利用可能な関数のタグキーと値を指定します。- AWS Lambda の
Descriptionプロパティ: 関数の説明は MCP ツールの説明として使用されるため、モデルが関数をいつどのように使用すべきかを理解できるよう、非常に詳細に記述してください - EventBridge Schema Registry を使用して正式な入力検証を提供します:
- 関数の入力に対する JSON Schema 定義を作成します
- 関数にスキーマ ARN のタグを付けます
- MCP サーバーで
FUNCTION_INPUT_SCHEMA_ARN_TAG_KEYを設定します
セキュリティに関する考慮事項
この MCP サーバーを使用する際は、以下を考慮してください:
- 指定されたリストに含まれる Lambda 関数、またはプレフィックスで始まる名前を持つ Lambda 関数のみが MCP ツールとしてインポートされます。
- MCP サーバーには Lambda 関数を呼び出すための権限が必要です。
- 各 Lambda 関数は、必要に応じて他の AWS リソースにアクセスするための独自の権限を持ちます。