🎃

AWS MCP Server Sample Lambda Functionsを試してみる

に公開

はじめに

こんにちは。

今回は、Anthropicが開発したオープンプロトコル「Model Context Protocol(MCP)」を、AWS Lambda上で動作させる方法を試してみました。 

MCPは、AIアシスタントが外部のツールやデータソースと連携するための標準化された方法を提供するプロトコルです。これにより、AIモデルがさまざまなシステムとシームレスに統合できるようになります。 

AWSでは、MCPサーバーをLambda関数として実行するためのサンプル実装「AWS MCP Server Sample Lambda Functions」を提供しています。このサンプルを活用することで、MCPサーバーをサーバーレス環境で簡単にデプロイし、スケーラブルかつコスト効率の高い運用が可能になります。

この記事では、AWSが提供するMCPサーバーのサンプルをローカル環境で動かし、Cline拡張機能を通じて実際に利用するまでの手順を紹介します。初めてMCPサーバーに触れる方でも実践できるように、前提条件やインストール手順も丁寧に解説していきます。

前提条件

今回行った検証に関しての前提条件です。

  • macOS環境
  • Homebrewがインストールされていること
  • AWS CLIがセットアップ済みで、適切なプロファイルが設定されていること
  • AWSアカウントを保持していること
  • Visual Studio Code(VS Code)をインストール済みで、基本的な使い方に慣れていること
  • Node.js と npm がインストールされていること(Cline拡張機能用)
  • uv コマンドが使用可能なこと(brew install uv でインストール可能)
  • AWS SAM CLIがインストールされていること(brew install aws-sam-cli)

準備

VS Codeの環境を整備する

Cline拡張機能をインストールします。

インストールできたら、Cline拡張機能と連携するために、Clineの公式サイトでアカウントを作成し、API Providerの設定を行います。

uvをインストールする

AWS MCP Server Sample Lambda Functionsで、uvxを利用するので、uvをインストールします。
検証環境が、macだったので、brewでインストールしました。

brew install uv

MCP Serverを動かしてみる

次のGihubレポジトリをクローンします。

https://github.com/awslabs/mcp

git clone https://github.com/awslabs/mcp.git

mcp/src/lambda-mcp-server/examples/sample_functions フォルダにあるサンプルを動かします。

sam CLIを使ってデプロイする

AWS sam CLIを使ってawslabs-mcp-sample-functionsという名前のCloudFormationスタックをデプロイしていきます

cd mcp/src/lambda-mcp-server/examples/sample_functions
sam deploy awslabs-mcp-sample-functions --guided

全ての質問に対してEnterキーでデフォルト値を選択しました

Configuring SAM deploy
======================

        Looking for config file [samconfig.toml] :  Not found

        Setting default arguments for 'sam deploy'
        =========================================
        Stack Name [awslabs-mcp-sample-functions]: 
        AWS Region [ap-northeast-1]: 
        #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
        Confirm changes before deploy [y/N]: 
        #SAM needs permission to be able to create roles to connect to the resources in your template
        Allow SAM CLI IAM role creation [Y/n]: 
        #Preserves the state of previously provisioned resources when an operation fails
        Disable rollback [y/N]: 
        Save arguments to configuration file [Y/n]: 

これでsample_functionsにある2つのLambda functionsがデプロイされました。

  • customer-id-from-email
  • customer-info-from-id

ClineにMCP Serverを登録する

デプロイされたCloudFormationスタックからFunction名を確認します。

CloudFormationで作成された各Lambda関数の物理IDをの値をClineの設定ファイルに設定します。

{
  "mcpServers": {
    "awslabs.lambda-mcp-server-CustomerIdFromEmail": {
      "command": "uvx",
      "args": ["awslabs.lambda-mcp-server@latest"],
      "env": {
        "AWS_PROFILE": "default",
        "AWS_REGION": "ap-northeast-1",
        "FUNCTION_PREFIX": "awslabs-mcp-sample-functions-CustomerIdFromEmail-SiKz5o6l3ciy"
      }
    },
    "awslabs.lambda-mcp-server-CustomerInfoFromId": {
      "command": "uvx",
      "args": ["awslabs.lambda-mcp-server@latest"],
      "env": {
        "AWS_PROFILE": "default",
        "AWS_REGION": "ap-northeast-1",
        "FUNCTION_PREFIX": "awslabs-mcp-sample-functions-CustomerInfoFromId-UWbA6kg1afQJ"
      }
    }
  }
}

このJSONファイルの内容をVS CodeのCline拡張に設定します。

MCPサーバーを使ってみる

「顧客IDが12345の顧客の情報は?」と質問してみます。

「Approve」ボタンを押します。

「メールアドレスがhoge@example.comの顧客の情報は?」と質問してみます。

MCPサーバーを使ってみて感想

今回、AWSが提供するMCP Server Sample Lambda Functionsを実際に動かしてみて、MCPというプロトコルの柔軟性と将来性を感じました。

特に良かった点は以下の通りです:

  • サーバーレスで手軽に試せる:AWS Lambdaにデプロイするだけで、外部公開可能なMCPサーバーをすぐに立ち上げられるのは非常に便利でした。
  • Clineとの連携もスムーズ:Cline拡張機能から簡単にLambdaエンドポイントを利用でき、LLMとの統合を素早く検証できました。
  • 構造がシンプル:MCPのメッセージ構造は直感的で、JSONベースであるため、開発者であればすぐに理解できると感じました。

一方で、以下の点には注意が必要です:

  • まだ発展途上の仕様:MCPは現時点で完全に固まった仕様ではないため、今後の変更に追従する必要があると感じました。
  • エコシステムの整備がこれから:ドキュメントやツール類の充実度は今後に期待といった印象で、現状では試行錯誤が必要です。

総じて、AIエージェントやプラグイン型アプリケーションを設計・実装する上で、MCPは非常に注目すべきプロトコルだと思いました。今後、商用サービスなどでも導入事例が増えてくるのではないかと感じています。

Discussion