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レポジトリをクローンします。
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