[アドカレ2025]AWS Lambda MCP Server 使ってみた ~沼った話を添えて~

はじめに

どうも。アドカレ初参加の はっしー です。
ここ数週間でびっくりするほど寒くなってきましたね~~

AI利用がマストになってきた昨今、「MCP」って言葉もよく耳にするようになりました。
今回は、AWSが提供する AWS Lambda MCP Server を使ってみたお話です。
作業中非常に沼った部分もあるのでその話は後ほど…

MCPってなに?

まずそもそもMCPってなにって方も多いと思います。
正直、私もよくわかってません(笑)
そんなときは助けてChatGPTせんせ~!!

MCPとは
MCP(Model Context Protocol)は、AIモデルと外部システムを安全かつ拡張性高くつなぐためのオープンなプロトコルです。
従来は「AIに外部システムへアクセスさせる」ためには、独自の実装や専用APIが必要でしたが、MCP は 統一された標準インターフェース を提供することで、どのモデルからでも同じようにツールを呼び出せる世界を目指しています。

ざっくりいうと…

  • AIが使える「ツール」を標準化するためのプロトコル
  • クライアント側(ChatGPT など)とサーバー側(任意のツール実装)の橋渡し役
  • ツール呼び出し、データ取得、メッセージ交換を共通のフォーマットで行える
  • ローカルでもクラウドでも、どこにあっても動作させられる柔軟性

開発者視点で見ると、
「自分の作ったツールを AI から安全に呼び出せる仕組み」
「AI とシステム連携をめちゃくちゃ楽にする規格」
といった感じです。

最近は多くのAI開発者が、DB接続・API連携・DevOps周りの自動化ツールを MCP サーバーとして作り始めており、
“AIが自動でバックエンドの仕組みを使ってくれる未来”が一気に現実的になってきています。

そうそうこれが言いたかったんですよ~

AWS Lambda MCP Serverとは

では、今回扱う AWS Lambda MCP Server とは何なのでしょうか。
ざっくり言うと、AIからLambda実行できるようにするためのツールです。

詳細はーーー助けてChatGPTせんせ~!!

AWS Lambda MCP Serverとは

MCPサーバーをAWS Lambda上で動かせるようにした公式実装が、
AWS Lambda MCP Server です。

名前の通り、

  • MCP サーバーとして動作するAWS公式の Lambda 関数
  • ChatGPT などの MCP 対応クライアントが Lambda をそのままツールとして使える
  • AWS 上のサービスを AI から安全に呼び出すための「ゲートウェイ」

という位置づけのものです。

ということです。
生成AIからLambdaを実行できるので、Lambdaさえ作ってしまえば活用の幅が一気に広がりますね

使ってみた

そこで、まずは簡単なことから実装してみましょう!
やることはシンプル。
生成AIにお願いして、指定したEC2を止めてもらう。 それだけ

では、さっそくいきましょう!!

事前準備

  • MCPクライアントになれる生成AI (今回はKiroを利用)
  • Lambdaで利用しているコード (Python3.11.9をインストール)
  • AWS CLI

各種インストール

まずは、MCPサーバーの実行環境を整えるために準備しましょう。
AWS Lambda MCP Serverの公式記事を参考に以下をインストールします。

  • uv (CLI 実行やパッケージ管理の基盤として利用)
  • Python (サーバーが Python で実装されているため)

プロファイルを追加

.aws/credentials を編集し、接続AWSアカウントの情報を追加する

[プロファイル名(任意の名前)]
aws_access_key_id = 利用AWSユーザーのアクセスキー
aws_secret_access_key = 利用AWSユーザーのアクセスキー

→ 追加後はファイルを保存。

ちなみに、今回は最低限の権限を目指して以下2つをアタッチしました。

  • AWSLambda_ReadOnlyAccess
  • AWSLambdaRole ("lambda:InvokeFunction":Lambdaの実行権限)

はじめは、AWSLambdaRoleだけで行けるかなと思っていましたが、
LambdaをListする権限はないとだめと弾かれたので泣く泣くReadOnlyを付けました。

Lambda関数の準備

生成AIから動かすLambda関数を作ります。
ここは本題じゃないのであの方の登場です。
もちろん、助けてChatGPTせんせ~!!

作ってもらったLambda関数の大まかな流れは以下です。

1. 受け取ったJSONからインスタンス名を取り出す
2. 受け取ったインスタンス名でEC2を検索する
3. 該当EC2のインスタンスIDを抽出する
4. StopInstances APIを実行してインスタンスを停止する
5. 結果をレスポンスとして返す

関数名は「hasshi-mcp-StopEC2」です。

クライアント側でのMCPサーバー設定

MCPクライアント(今回はKiro)にMCPサーバーとして登録が必要です。
ファイルパスの例:.kiro/settings/mcp.json

今回はWindowsでの設定になります。MacOSの場合は公式記事を確認。

公式記事の設定例に解説入れてみました。

{
  "mcpServers": {                           // MCPクライアントが利用するMCPサーバーの登録一覧
    "awslabs.lambda-tool-mcp-server": {     // MCPサーバーの名前(任意の名前でOK)

      "command": "uvx",                     // MCPサーバーを起動するためのコマンド
                                            // ※クライアントが内部で自動実行する

      "args": ["awslabs.lambda-tool-mcp-server@latest"],
                                            // command に渡す引数
                                            // MCPサーバー本体の指定(バージョン指定も可)

      "env": {                               // 起動時に MCPサーバーへ渡す環境変数
        "AWS_PROFILE": "your-aws-profile",   // 利用する AWS CLI プロファイル名
        "AWS_REGION": "your-region",         // Lambda を呼び出す AWS リージョン

        "FUNCTION_PREFIX": "your-function-prefix",
                                            // このプレフィックスで始まる Lambda 関数を
                                            // MCPツールとして自動検出するための設定

        "FUNCTION_LIST": "func1,func2",      // 明示的に指定する Lambda 関数のリスト
                                            // カンマ区切りで複数指定(prefix と併用も可能)

        "FUNCTION_TAG_KEY": "tag-key",       // タグを使って対象 Lambda を絞りたい場合のキー
        "FUNCTION_TAG_VALUE": "tag-value",   // 上記キーに対する値が一致する関数のみ対象にする

        "FUNCTION_INPUT_SCHEMA_ARN_TAG_KEY": "schema-tag-key"
                                            // Lambda に付与されたスキーマARNを参照するタグキー
                                            // これによりツールの入力パラメータ仕様を自動読み込み可能
      }
    }
  }
}

今回私は、こんな感じで設定しました。

{
  "mcpServers": {
    "lambda-EC2-Stop": {
      "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": "Lambda_MCP",
        "AWS_REGION": "ap-northeast-1",
        "FUNCTION_PREFIX": "hasshi-mcp-"
      },
      "autoApprove": [
        "hasshi-mcp-StopEC2"
      ]
    }
  }
}

autoApprove を設定すると、MCPサーバー利用時に対象Lambda関数は自動承認してくれます。
設定後はファイルを保存してください。

保存後、MCPサーバーの認証確認が動きます。

こうなれば認証はOK

稼働確認

いざ実行です!
今回停止するEC2は「Lambda-MCP-test」です。

無事、StopEC2が利用できてますね。
自然言語からParameterを自動作成してくれてる!!なんと素晴らしい~

Cloudtrailでhasshi-mcp-StopEC2で停止していることを確認しました。

StartInstanceが実行されて、EC2が起動している間に、hasshi-mcp-StopEC2ユーザーにて
StopInstanceが実行されてますね。

沼った話

最後に、AWS Lambda MCP Server 設定中に沼った話を少し。

今回使用した Lambdaとは別に、空パラメータで起動するテスト用 Lambdaを作成し
空({})パラメータで動くことをテストした後に、生成AIからお願いしたのですが、
エラーで動かなかったんです。

おそらくですが、何かしらparameter情報は送らないといけないのかなと思いました。
これで3時間ぐらい使いました…

その時の状況を再現

パラメータがからじゃない場合は成功

さいごに

AWS Lambda MCP Serverを使ってみて、理解してしまえば設定はシンプル。
どんどん便利なLambda増やして、どんどん作業を楽にしたくなりました。

AIエージェントの一部として使うのが本来かなと思いますので、
AIエージェントにLambdaを組み込みたい方は参考にしていただければと思います。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA