AWS本地模拟服务工具

LocalStack MCP Server是一个将LocalStack管理的AWS服务暴露为AI代理工具的服务,使LLM和AI代理能够在开发和测试期间与本地AWS基础设施交互。

  • by giovanemartins
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 giovanemartins/localstack-mcp-server

使用说明

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).

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"
      }
    }
  }
}

可用工具

第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