localstack について
localstackは、開発やテストでAIエージェントがローカルのAWSインフラを操作できるよう、LocalStackのAWSサービスをツールとして公開します。ストレージ、メッセージング、データベース、コンピューティングなどに対応します。
主な機能
- 01S3バケットとオブジェクトの管理
- 02SQSキューとメッセージの操作
- 03SNSトピックとサブスクリプションの管理
- 04EventBridgeルールとイベントの設定
- 05Kinesis、DynamoDB、Lambdaの操作
- 06Secrets Manager、SSM、SESの管理
活用シーン
- 01仕様に沿ったローカル開発環境の初期化
- 02統合テスト用のDynamoDBやS3データの投入
- 03イベントを発行して後続処理を確認
- 04ローカルデバッグでのLambda実行とログ確認
MCP 対応
このMCPサーバーは、LocalStackが管理するAWSサービスをMCPクライアント向けのツールとして公開します。環境変数でLocalStackのエンドポイント、リージョン、認証情報を設定します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @giovane.martins/localstackLOCALSTACK_ENDPOINTLocalStack endpoint URLAWS_REGIONAWS regionAWS_ACCESS_KEY_IDシークレットAWS access key IDAWS_SECRET_ACCESS_KEYシークレットAWS secret access keyローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
LocalStack MCP サーバー
LocalStack で管理される AWS サービスを AI エージェント向けのツールとして公開する MCP サーバーです。LLM や AI エージェントが、開発やテスト中にローカルの AWS インフラストラクチャを操作できるようにします。
インストール
このサーバーは npm と MCP Registry に公開されています。ローカルでのビルドは不要です。
npm install -g @giovane.martins/localstack
または、npx で直接実行できます(インストール不要です)。
npx @giovane.martins/localstack
必要条件
- Node.js 20+
- Docker(LocalStack 用)
ローカル開発
# 1. Start LocalStack
docker compose up -d
# 2. Install dependencies
pnpm install
# 3. Build
pnpm run build
# 4. Run
pnpm start
設定
設定はすべて環境変数で行います。
| 変数 | デフォルト | 説明 |
|---|---|---|
LOCALSTACK_ENDPOINT | http://localhost:4566 | LocalStack のベース URL |
AWS_REGION | us-east-1 | AWS リージョン |
AWS_ACCESS_KEY_ID | test | LocalStack 用の偽の認証情報 |
AWS_SECRET_ACCESS_KEY | test | LocalStack 用の偽の認証情報 |
テストの実行
LocalStack が実行中である必要があります(docker compose up -d)。
pnpm test
MCP クライアントの設定
公開済み npm パッケージを使用する場合(推奨)
MCP クライアントの設定に追加します(例:~/.config/claude/claude_desktop_config.json)。
{
"mcpServers": {
"localstack": {
"command": "npx",
"args": ["-y", "@giovane.martins/localstack"],
"env": {
"LOCALSTACK_ENDPOINT": "http://localhost:4566",
"AWS_REGION": "us-east-1",
"AWS_ACCESS_KEY_ID": "test",
"AWS_SECRET_ACCESS_KEY": "test"
}
}
}
}
ローカルビルドを使用する場合
{
"mcpServers": {
"localstack": {
"command": "node",
"args": ["/path/to/mcp-servers/localstack/dist/index.js"],
"env": {
"LOCALSTACK_ENDPOINT": "http://localhost:4566",
"AWS_REGION": "us-east-1",
"AWS_ACCESS_KEY_ID": "test",
"AWS_SECRET_ACCESS_KEY": "test"
}
}
}
}
開発に tsx を使用する場合(ビルド手順なし)
{
"mcpServers": {
"localstack": {
"command": "npx",
"args": ["tsx", "/path/to/mcp-servers/localstack/src/index.ts"],
"env": {
"LOCALSTACK_ENDPOINT": "http://localhost:4566",
"AWS_REGION": "us-east-1",
"AWS_ACCESS_KEY_ID": "test",
"AWS_SECRET_ACCESS_KEY": "test"
}
}
}
}
利用可能なツール
S3
| ツール | 説明 |
|---|---|
s3_list_buckets | すべての S3 バケットを一覧表示 |
s3_create_bucket | バケットを作成 |
s3_delete_bucket | バケットを削除 |
s3_put_object | オブジェクトをアップロード(テキスト/JSON コンテンツ) |
s3_get_object | オブジェクトをテキストとしてダウンロード |
s3_delete_object | オブジェクトを削除 |
s3_list_objects | オプションのプレフィックスフィルターを指定してオブジェクトを一覧表示 |
SQS
| ツール | 説明 |
|---|---|
sqs_list_queues | すべてのキューを一覧表示 |
sqs_create_queue | 標準キューまたは FIFO キューを作成 |
sqs_delete_queue | キューを削除 |
sqs_send_message | メッセージを送信 |
sqs_receive_messages | 最大 10 件のメッセージを受信(ロングポーリングに対応) |
sqs_delete_message | レシートハンドルでメッセージを削除 |
sqs_purge_queue | キューからすべてのメッセージを消去 |
SNS
| ツール | 説明 |
|---|---|
sns_list_topics | すべてのトピックを一覧表示 |
sns_create_topic | 標準トピックまたは FIFO トピックを作成 |
sns_delete_topic | トピックを削除 |
sns_subscribe | エンドポイントをトピックにサブスクライブ |
sns_unsubscribe | トピックのサブスクリプションを解除 |
sns_list_subscriptions_by_topic | トピックのすべてのサブスクリプションを一覧表示 |
sns_publish | トピックにメッセージを発行 |
EventBridge
| ツール | 説明 |
|---|---|
eventbridge_list_buses | すべてのイベントバスを一覧表示 |
eventbridge_create_bus | カスタムイベントバスを作成 |
eventbridge_delete_bus | カスタムイベントバスを削除 |
eventbridge_list_rules | バスのルールを一覧表示 |
eventbridge_put_rule | ルールを作成または更新(イベントパターンまたはスケジュール) |
eventbridge_delete_rule | ルールを削除 |
eventbridge_describe_rule | ルールの詳細を表示 |
eventbridge_enable_rule | ルールを有効化 |
eventbridge_disable_rule | ルールを無効化 |
eventbridge_put_targets | ルールのターゲットを追加または更新 |
eventbridge_list_targets | ルールのターゲットを一覧表示 |
eventbridge_remove_targets | ルールからターゲットを削除 |
eventbridge_put_events | カスタムイベントをバスに送信(最大 10 件) |
Kinesis
| ツール | 説明 |
|---|---|
kinesis_list_streams | すべてのストリームを一覧表示します |
kinesis_create_stream | ストリームを作成します |
kinesis_delete_stream | ストリームを削除します |
kinesis_describe_stream | ストリームの詳細を表示します(ステータス、シャード) |
kinesis_put_record | レコードを1件登録します |
kinesis_put_records | 複数のレコードを登録します(最大500件) |
kinesis_get_records | シャードからレコードを取得します |
DynamoDB
| ツール | 説明 |
|---|---|
dynamodb_list_tables | すべてのテーブルを一覧表示します |
dynamodb_create_table | テーブルを作成します(パーティションキー+任意のソートキー) |
dynamodb_delete_table | テーブルを削除します |
dynamodb_describe_table | テーブルの詳細を表示します |
dynamodb_put_item | アイテムを登録します(作成または置換) |
dynamodb_get_item | キーを指定してアイテムを取得します |
dynamodb_delete_item | キーを指定してアイテムを削除します |
dynamodb_scan | すべてのアイテムをスキャンします(任意のフィルター式を指定可能) |
dynamodb_query | キー条件でクエリを実行します |
Lambda
| ツール | 説明 |
|---|---|
lambda_list_functions | すべての関数を一覧表示します |
lambda_get_function | 関数の詳細を取得します |
lambda_create_function | Base64エンコードされたZIPから関数を作成します |
lambda_delete_function | 関数を削除します |
lambda_invoke | 関数を呼び出し、応答とログを返します |
Secrets Manager
| ツール | 説明 |
|---|---|
secretsmanager_list_secrets | すべてのシークレットを一覧表示します |
secretsmanager_create_secret | 新しいシークレットを作成します |
secretsmanager_get_secret | シークレットの値を取得します |
secretsmanager_update_secret | シークレットの値を更新します |
secretsmanager_describe_secret | シークレットのメタデータを表示します |
secretsmanager_delete_secret | シークレットを削除します(強制削除は任意) |
secretsmanager_restore_secret | 削除済みのシークレットを復元します |
SSM Parameter Store
| ツール | 説明 |
|---|---|
ssm_get_parameter | 名前を指定してパラメーターを取得します |
ssm_put_parameter | パラメーターを作成または更新します |
ssm_delete_parameter | パラメーターを削除します |
ssm_delete_parameters | 最大10個のパラメーターをまとめて削除します |
ssm_get_parameters_by_path | パスのプレフィックス以下にあるすべてのパラメーターを取得します |
ssm_describe_parameters | パラメーターを一覧表示して詳細を確認します |
SES
| ツール | 説明 |
|---|---|
ses_list_identities | 検証済みのすべての ID を一覧表示します |
ses_verify_email_identity | メールアドレスを検証します |
ses_get_identity_verification_attributes | ID の検証ステータスを取得します |
ses_delete_identity | ID を削除します |
ses_send_email | メールを送信します(プレーンテキストおよび/またはHTML) |
使用例
- 開発環境のセットアップ — 仕様から S3 バケット、SQS キュー、DynamoDB テーブル、SSM パラメーターを一括作成します
- テストデータの投入 — 統合テストの実行前に DynamoDB または S3 にデータを投入します
- イベント駆動型のデバッグ — IDE を離れずに EventBridge/SNS/Kinesis にイベントを発行し、後続の影響を確認します
- シークレット/設定の管理 — ローカルのデバッグセッション中に Secrets Manager/SSM の値を読み取り、更新します
- Lambda のスモークテスト — Lambda 関数を呼び出して応答とログを取得し、すばやく反復します
- キューの取得/確認 — コンシューマーを起動せずに SQS メッセージを受信して確認します
プロジェクト構成
localstack/
├── docker-compose.yml # LocalStack container
├── package.json
├── tsconfig.json
├── vitest.config.ts
├── src/
│ ├── index.ts # MCP server entry point
│ ├── config.ts # Environment config
│ ├── tools/ # One file per AWS service
│ │ ├── s3.ts
│ │ ├── sqs.ts
│ │ ├── sns.ts
│ │ ├── eventbridge.ts
│ │ ├── kinesis.ts
│ │ ├── dynamodb.ts
│ │ ├── lambda.ts
│ │ ├── secretsmanager.ts
│ │ ├── ssm.ts
│ │ └── ses.ts
│ └── utils/
│ ├── client.ts # Shared AWS client factory (LocalStack endpoint)
│ └── errors.ts # Standardised MCP error formatting
└── tests/ # Integration tests (real LocalStack)
├── s3.test.ts
├── sqs.test.ts
├── sns.test.ts
├── eventbridge.test.ts
├── kinesis.test.ts
├── dynamodb.test.ts
├── lambda.test.ts
├── secretsmanager.test.ts
├── ssm.test.ts
└── ses.test.ts
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。