📚

AWS Lambda MCP Serverのサンプルを動かしてみた

に公開

この記事のゴール

LLMを用いた業務効率化を目指して、まずはAWS Lambda MCP Serverを動かしてみます。
かなり簡単にClaudeでLambda関数を実行することができたので、普段Lambdaを使ったサービス開発をされている方におすすめです。
https://github.com/awslabs/mcp/tree/main/src/lambda-mcp-server/examples

筆者について

普段は株式会社e-Craftという会社でembotというビジュアルプログラミングサービスの開発を行っています。
https://www.embot.jp/

開発環境

  • mac(Ventura 13.2)

事前準備

  • Install the AWS SAM CLI
  • Configure AWS credentials with appropriate permissions
  • Python 3.13 installed locally (for local testing)

AWS SAMを使ってサンプルコードをデプロイ

まずこちらのReadmeに従ってAWS SAMでサンプルアプリをlambda上に公開

以下の権限を持ったIAMユーザーを作成し、profileを作成

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "lambda:InvokeFunction"
      ],
      "Resource": [
        "<LambdaのARN>"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "lambda:ListFunctions",
        "lambda:ListTags"
      ],
      "Resource": "*"
    }
  ]
}

profile名は好きにつけて大丈夫です。
後ほどこのProfile名をClaudeの設定を行う際に使用します。
(私はすでに作成ずみの個人のadmin権限のProfile(default)で実行しましたが、実際に運用するとなるとセキュリティ観点でNGなので上記対応を記載しています)

Claudeの設定ファイルを更新

claude_desktop_config.json以下の内容を記載します。

 "awslabs.lambda-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.lambda-mcp-server@latest"],
      "env": {
        "AWS_PROFILE": "<profileの名前>",
        "AWS_REGION": "ap-northeast-1",
        "FUNCTION_PREFIX": "sam-app-Customer"
      }
    }

私はここでuvxのパスが通らないエラーにハマりました。
以下の記事を参考にフルパスで指定してあげることで解消しました。
https://zenn.dev/sun_asterisk/articles/58647adfba4609

env内のそれぞれの設定項目について

  • AWS_PROFILE(optional)
    • MCP Server経由でLambda関数を実行する権限のついたAWS profile名
    • 記入しない場合はデフォルト値=defaultが設定される
  • AWS_REGION(optional)
    • MCP Server経由で実行するLambda関数が存在するリージョン
    • 記入しない場合はデフォルト値=us-east-1が設定される
  • FUNCTION_LIST
    • デプロイされたLambda関数名のリスト
    • ここに記載されたLambda関数の実行が可能となる
  • FUNCTION_PREFIX
    • デプロイされたLambda関数のprefix
    • 例えばtest-CustomerIdFromEmail-hogehogetest-CustomerInfoFromId-fugafugaという関数を使用したい場合にtest-CustomerIdFromEmailと指定すれば両者利用可能となる。
  • FUNCTION_TAG_KEYFUNCTION_TAG_VALUE
    • FUNCTION_LISTFUNCTION_PREFIXが両方設定されていない場合はLambda関数に設定されたKEY-ValueでMCP Serverに設定する関数を特定する。

おわりにorまとめ

Lambda関数を呼び出せるので、普段開発をサーバーレスで行ってきた身としては夢が広がります。
次はClaudeからLambda関数を実行することができたので、サービス運用担当者がClaude経由でユーザーアカウント情報の更新等を実施できるような関数を作ってみようと思います。

参考記事等

https://zenn.dev/bltsdc/articles/8a676fd6a830ce
https://zenn.dev/sun_asterisk/articles/58647adfba4609

Discussion