はじめに
本記事では、エージェント機能を持つ Amazon Q for command cli を使用して、AWS Lambda MCP Server 試す一連の流れを紹介します。
上記サイトでも紹介されているように、AWS Lambda MCP Server を使用することで、単体の MCP サーバーに複数の Lambda 関数を関連付けることができます。これにより、以下の観点でメリットを享受できると述べられています。
観点 | メリット |
---|---|
セキュリティ | MCP サーバーが直接呼び出す AWS サービスは Lambda のみで、AWS 認証情報に紐づく権限を最小限に設定できる。他の AWS サービスの操作権限を Lambda の実行ロールに持たせられる。 |
ツールの管理 | ツールが Lambda 関数単位で管理できる。複数ツールをそれぞれ別のチームで管理しているような場合でも、言語を統一するような必要はない。 |
以降、内容に沿ってリーソースの作成と実装をすることで、それらを Amazon Q for command cli 経由で呼び出すまでを実施できます。
前準備
uv
Python のプロジェクト(パッケージ)管理ツール uv
の使用を前提に進めます。 uv
に関しては以下の資料などをご参照ください。
Amazon Q for command cli
Amazon Q for command cli が未インストールの場合ははじめにインストールします。インストールには以下のブログ、公式ドキュメントをご参照ください。
Lambda 関数の作成
本記事では、MCP サーバーから呼び出されるツールのメインロジックを実行する Lambda 関数を 2 つ作成します。
1 つめの関数
「Lambda のコンソール」>「Create function」を押下します。
項目 | 値 |
---|---|
Function name | lambda-mcp-sushi-function |
Runtime | Python 3.13 |
「Create」を押下します。
import json import random def lambda_handler(event, context): sushi = ["Maguro", "Buri", "Ika"] sushi_name = random.choice(sushi) return { 'statusCode': 200, 'body': json.dumps(sushi_name) }
上記のプログラムを入力し「Deploy」を押下します。
「Configuration」>「General configuration」>「Edit」
項目 | 値 |
---|---|
Description | 寿司ネタをランダムに返します。 |
「Save」を押下します。
2 つめの関数
「Lambda のコンソール」>「Create function」を押下します。
項目 | 値 |
---|---|
Function name | lambda-mcp-neko-function |
Runtime | Python 3.13 |
「Create」を押下します。
import json import random def lambda_handler(event, context): neko = ["Mike", "Buchi", "Chatora"] neko_name = random.choice(neko) return { 'statusCode': 200, 'body': json.dumps(neko_name) }
上記のプログラムを入力し「Deploy」を押下します。
「Configuration」>「General configuration」>「Edit」
項目 | 値 |
---|---|
Description | 猫の種類をランダムに返します。 |
「Save」を押下します。
MCP サーバーの設定
作業ディレクトリとMCP サーバーの設定ファイルを作成します。
$ mkdir amazon-q-sushi-neko-mcp $ cd amazon-q-sushi-neko-mcp $ mkdir .amazonq $ touch .amazonq/mcp.json
上記のように .amazonq
ディレクトリ配下に mcp.json
を配置すると、作業ディレクトリ内でのみで有効な MCP サーバーの設定ができます。グローバルに MCP サーバーを設定したい場合は ~/.aws/amazonq/mcp.json
に設定を記述します。
mcp.json に以下の内容を記述します。
{ "mcpServers": { "awslabs.lambda-mcp-server": { "command": "uvx", "args": [ "awslabs.lambda-mcp-server@latest" ], "env": { "AWS_PROFILE": <REPLACE_ME>, "AWS_REGION": <REPLACE_ME>, "FUNCTION_LIST": "lambda-mcp-sushi-function, lambda-mcp-neko-function" } } } }
AWS_PROFILE
及び AWS_REGION
の値は使用する AWS 認証情報のプロファイル名、Lambda 関数を作成した AWS リージョンに応じて書き換えてください。
対話から呼び出す
q
Amazon Q for command cli を立ち上げ、ツールを認識しているか確認します。
> 何のツールが使える? 現在使用可能なツールは以下のとおりです: 1. execute_bash - Bashコマンドを実行するツール 2. fs_read - ファイルやディレクトリの内容を読み取るツール 3. fs_write - ファイルを作成・編集するツール 4. use_aws - AWS CLIを使用してAWSサービスを操作するツール 5. report_issue - チャットの問題を報告するためのツール 6. awslabslambda_mcp_server___lambda_mcp_sushi_function - 寿司ネタ の種類をランダムに返すツール 7. awslabslambda_mcp_server___lambda_mcp_neko_function - 猫の種類 をランダムに返すツール 特に面白いのは最後の2つで、寿司ネタや猫の種類をランダムに取得でき るMCP(Model Context Protocol)ツールです。何か特定のツールについ て詳しく知りたい場合は、お気軽にお尋ねください。
作成した Lambda 関数をツールとして認識していることが分かりました。最後に、対話の流れからそれぞれ Lambda 関数が実行されて値が返ってくるかを確かめます。
> 何の寿司を食べようかな。 寿司のネタをランダムに選んでみましょう。寿司ネタを取得するツールを使います。 🛠️ Using tool: lambda_mcp_sushi_function from mcp server awslabslambda_mcp_server ⋮ ● Running lambda_mcp_sushi_function with the param: ⋮ { ⋮ "arguments": { ⋮ "parameters": {} ⋮ }, ⋮ "name": "lambda_mcp_sushi_function" ⋮ } Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]: > y ⋮ ● Completed in 0.438s 今日のおすすめは「イカ」です!イカは歯ごたえがあり、さっぱりとした味わいが特徴的な寿 司ネタですね。新鮮なイカの寿司は透き通るような白さと甘みがあり、醤油を少しつけて食べ ると美味しいですよ。
続いて猫にも言及してみます。
> どんな猫を飼おうかな。 どんな猫を飼うか考えているんですね。猫の種類をランダムに選んでみましょう。 🛠️ Using tool: lambda_mcp_neko_function from mcp server awslabslambda_mcp_server ⋮ ● Running lambda_mcp_neko_function with the param: ⋮ { ⋮ "arguments": { ⋮ "parameters": {} ⋮ }, ⋮ "name": "lambda_mcp_neko_function" ⋮ } Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]: > y ⋮ ● Completed in 0.821s 今日のおすすめは「ブチ猫」です!ブチ猫は白地に黒や茶色などの斑点模様がある猫で、個性 的な見た目が特徴です。 ブチ模様の猫は正式な猫種というよりは毛色のパターンで、様々な猫種に見られます。特に三 毛猫やキャリコ猫によく見られる模様です。性格は個体によって異なりますが、活発で遊び好 きな子が多いと言われています。 ブチ猫は見た目が独特で、家に迎えると個性的な存在感を放ちますよ。もちろん、猫を飼う際 は見た目だけでなく、あなたのライフスタイルに合った性格の子を選ぶことが大切です。保護 猫施設で実際に触れ合ってみるのもいいかもしれませんね。
ツールの使用許可について
Q が対話の中で特定のツールを使用を検討した際には、ユーザーの入力が促されます。
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:
y: yes
, n: no
のいずれか選択した場合は、ツールの使用検討に対し1度きりの許可・拒否の指示を与えます。 t
を指定した場合は q コマンドで実行された該当のセッションの中であれば、以降の特定のツールの使用は許可されます。
まとめ
AWS Lambda MCP Server を Amazon Q for command cli のエージェント機能を経由して試してみました。MCP サーバーの設定がシンプルで、Lambda 関数をツールとして利用することが容易にできる点が魅力的でした!
今回は GET 処理にフォーカスしましたが、Lambda 関数に渡すパラメータをスキーマとして定義してデータを登録したり、リソース情報を更新するような POST, PATCH 的な操作も可能です。スキーマ定義を使用したツールの使用についても試してみたいと思います。