LocalStack MCP服务器
MCP服务器,将LocalStack管理的AWS服务作为AI代理工具公开,使LLM和AI代理能够在开发和测试期间与本地AWS基础设施进行交互。
安装
服务器发布到npm和 MCP注册表。不需要本地构建。
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 |
本地堆栈基本URL |
AWS_REGION |
us-east-1 |
AWS区域 |
AWS_ACCESS_KEY_ID |
test |
LocalStack的假凭据 |
AWS_SECRET_ACCESS_KEY |
test |
LocalStack的假凭据 |
运行测试
需要运行LocalStack(docker compose up -d).
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"
}
}
}
}
可用工具
第3页
| 工具 |
说明 |
s3_list_buckets |
列出所有S3存储桶 |
s3_create_bucket |
创建一个bucket |
s3_delete_bucket |
删除bucket |
s3_put_object |
上传对象(文本/JSON内容) |
s3_get_object |
将对象下载为文本 |
s3_delete_object |
删除对象 |
s3_list_objects |
列出具有可选前缀过滤器的对象 |
平方英尺
| 工具 |
说明 |
sqs_list_queues |
列出所有队列 |
sqs_create_queue |
创建标准或FIFO队列 |
sqs_delete_queue |
删除队列 |
sqs_send_message |
发送消息 |
sqs_receive_messages |
最多可接收10条消息(支持长轮询) |
sqs_delete_message |
按回执句柄删除邮件 |
sqs_purge_queue |
清除队列中的所有邮件 |
社交网络服务
| 工具 |
说明 |
sns_list_topics |
列出所有主题 |
sns_create_topic |
创建标准或FIFO主题 |
sns_delete_topic |
删除主题 |
sns_subscribe |
将端点订阅到主题 |
sns_unsubscribe |
取消订阅某个主题 |
sns_list_subscriptions_by_topic |
列出某个主题的所有订阅 |
sns_publish |
向主题发布消息 |
事件桥
| 工具 |
说明 |
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_list_streams |
列出所有流 |
kinesis_create_stream |
创建流 |
kinesis_delete_stream |
删除流 |
kinesis_describe_stream |
描述流(状态、分片) |
kinesis_put_record |
放一条记录 |
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_list_functions |
列出所有功能 |
lambda_get_function |
获取功能详细信息 |
lambda_create_function |
从base64编码的ZIP创建函数 |
lambda_delete_function |
删除函数 |
lambda_invoke |
调用函数并返回其响应+日志 |
机密管理器
| 工具 |
说明 |
secretsmanager_list_secrets |
列出所有秘密 |
secretsmanager_create_secret |
创建新秘密 |
secretsmanager_get_secret |
获取秘密的价值 |
secretsmanager_update_secret |
更新机密的值 |
secretsmanager_describe_secret |
描述秘密元数据 |
secretsmanager_delete_secret |
删除机密(可选择强制删除) |
secretsmanager_restore_secret |
还原以前删除的机密 |
SSM参数存储
| 工具 |
说明 |
ssm_get_parameter |
按名称获取参数 |
ssm_put_parameter |
创建或更新参数 |
ssm_delete_parameter |
删除参数 |
ssm_delete_parameters |
批量删除最多10个参数 |
ssm_get_parameters_by_path |
获取路径前缀下的所有参数 |
ssm_describe_parameters |
列出并描述参数 |
卫星环境服务
| 工具 |
说明 |
ses_list_identities |
列出所有已验证的身份 |
ses_verify_email_identity |
验证电子邮件地址 |
ses_get_identity_verification_attributes |
获取身份验证状态 |
ses_delete_identity |
删除身份 |
ses_send_email |
发送电子邮件(纯文本和/或HTML) |
用例
- 开发环境引导 --从规范中一次性创建S3存储桶、SQS队列、DynamoDB表和SSM参数
- 测试数据种子 --在运行集成测试之前填充DynamoDB或S3
- 事件驱动调试 --发布到EventBridge/SNS/Kenisis,在不离开IDE的情况下检查下游效果
- 机密/配置管理 --在本地调试会话期间读取和更新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