{
  "markdown": "# LocalStack MCP Server\n\n[![MCP Registry](https://img.shields.io/badge/MCP%20Registry-published-blue)](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.giovanemartins%2Flocalstack/versions/latest)\n[![npm](https://img.shields.io/npm/v/%40giovane.martins%2Flocalstack)](https://www.npmjs.com/package/@giovane.martins/localstack)\n\nMCP server that exposes LocalStack-managed AWS services as AI-agent tools, enabling LLMs and AI agents to interact with local AWS infrastructure during development and testing.\n\n## Installation\n\nThe server is published to npm and the [MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.giovanemartins%2Flocalstack/versions/latest). No local build needed.\n\n```bash\nnpm install -g @giovane.martins/localstack\n```\n\nOr run directly with npx (no install required):\n\n```bash\nnpx @giovane.martins/localstack\n```\n\n## Requirements\n\n- Node.js 20+\n- Docker (for LocalStack)\n\n## Local Development\n\n```bash\n# 1. Start LocalStack\ndocker compose up -d\n\n# 2. Install dependencies\npnpm install\n\n# 3. Build\npnpm run build\n\n# 4. Run\npnpm start\n```\n\n## Configuration\n\nAll configuration is via environment variables:\n\n| Variable | Default | Description |\n|---|---|---|\n| `LOCALSTACK_ENDPOINT` | `http://localhost:4566` | LocalStack base URL |\n| `AWS_REGION` | `us-east-1` | AWS region |\n| `AWS_ACCESS_KEY_ID` | `test` | Fake credentials for LocalStack |\n| `AWS_SECRET_ACCESS_KEY` | `test` | Fake credentials for LocalStack |\n\n## Running Tests\n\nRequires LocalStack running (`docker compose up -d`).\n\n```bash\npnpm test\n```\n\n## MCP Client Configuration\n\n### Using the published npm package (recommended)\n\nAdd to your MCP client config (e.g. `~/.config/claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"localstack\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@giovane.martins/localstack\"],\n      \"env\": {\n        \"LOCALSTACK_ENDPOINT\": \"http://localhost:4566\",\n        \"AWS_REGION\": \"us-east-1\",\n        \"AWS_ACCESS_KEY_ID\": \"test\",\n        \"AWS_SECRET_ACCESS_KEY\": \"test\"\n      }\n    }\n  }\n}\n```\n\n### Using a local build\n\n```json\n{\n  \"mcpServers\": {\n    \"localstack\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/mcp-servers/localstack/dist/index.js\"],\n      \"env\": {\n        \"LOCALSTACK_ENDPOINT\": \"http://localhost:4566\",\n        \"AWS_REGION\": \"us-east-1\",\n        \"AWS_ACCESS_KEY_ID\": \"test\",\n        \"AWS_SECRET_ACCESS_KEY\": \"test\"\n      }\n    }\n  }\n}\n```\n\n### Using `tsx` for development (no build step)\n\n```json\n{\n  \"mcpServers\": {\n    \"localstack\": {\n      \"command\": \"npx\",\n      \"args\": [\"tsx\", \"/path/to/mcp-servers/localstack/src/index.ts\"],\n      \"env\": {\n        \"LOCALSTACK_ENDPOINT\": \"http://localhost:4566\",\n        \"AWS_REGION\": \"us-east-1\",\n        \"AWS_ACCESS_KEY_ID\": \"test\",\n        \"AWS_SECRET_ACCESS_KEY\": \"test\"\n      }\n    }\n  }\n}\n```\n\n---\n\n## Available Tools\n\n### S3\n\n| Tool | Description |\n|---|---|\n| `s3_list_buckets` | List all S3 buckets |\n| `s3_create_bucket` | Create a bucket |\n| `s3_delete_bucket` | Delete a bucket |\n| `s3_put_object` | Upload an object (text/JSON content) |\n| `s3_get_object` | Download an object as text |\n| `s3_delete_object` | Delete an object |\n| `s3_list_objects` | List objects with optional prefix filter |\n\n### SQS\n\n| Tool | Description |\n|---|---|\n| `sqs_list_queues` | List all queues |\n| `sqs_create_queue` | Create a standard or FIFO queue |\n| `sqs_delete_queue` | Delete a queue |\n| `sqs_send_message` | Send a message |\n| `sqs_receive_messages` | Receive up to 10 messages (with long-polling support) |\n| `sqs_delete_message` | Delete a message by receipt handle |\n| `sqs_purge_queue` | Purge all messages from a queue |\n\n### SNS\n\n| Tool | Description |\n|---|---|\n| `sns_list_topics` | List all topics |\n| `sns_create_topic` | Create a standard or FIFO topic |\n| `sns_delete_topic` | Delete a topic |\n| `sns_subscribe` | Subscribe an endpoint to a topic |\n| `sns_unsubscribe` | Unsubscribe from a topic |\n| `sns_list_subscriptions_by_topic` | List all subscriptions for a topic |\n| `sns_publish` | Publish a message to a topic |\n\n### EventBridge\n\n| Tool | Description |\n|---|---|\n| `eventbridge_list_buses` | List all event buses |\n| `eventbridge_create_bus` | Create a custom event bus |\n| `eventbridge_delete_bus` | Delete a custom event bus |\n| `eventbridge_list_rules` | List rules on a bus |\n| `eventbridge_put_rule` | Create or update a rule (event pattern or schedule) |\n| `eventbridge_delete_rule` | Delete a rule |\n| `eventbridge_describe_rule` | Describe a rule |\n| `eventbridge_enable_rule` | Enable a rule |\n| `eventbridge_disable_rule` | Disable a rule |\n| `eventbridge_put_targets` | Add or update rule targets |\n| `eventbridge_list_targets` | List targets for a rule |\n| `eventbridge_remove_targets` | Remove targets from a rule |\n| `eventbridge_put_events` | Send custom events to a bus (max 10) |\n\n### Kinesis\n\n| Tool | Description |\n|---|---|\n| `kinesis_list_streams` | List all streams |\n| `kinesis_create_stream` | Create a stream |\n| `kinesis_delete_stream` | Delete a stream |\n| `kinesis_describe_stream` | Describe a stream (status, shards) |\n| `kinesis_put_record` | Put a single record |\n| `kinesis_put_records` | Put multiple records (max 500) |\n| `kinesis_get_records` | Get records from a shard |\n\n### DynamoDB\n\n| Tool | Description |\n|---|---|\n| `dynamodb_list_tables` | List all tables |\n| `dynamodb_create_table` | Create a table (partition key + optional sort key) |\n| `dynamodb_delete_table` | Delete a table |\n| `dynamodb_describe_table` | Describe a table |\n| `dynamodb_put_item` | Put (create or replace) an item |\n| `dynamodb_get_item` | Get an item by key |\n| `dynamodb_delete_item` | Delete an item by key |\n| `dynamodb_scan` | Scan all items (with optional filter expression) |\n| `dynamodb_query` | Query by key condition |\n\n### Lambda\n\n| Tool | Description |\n|---|---|\n| `lambda_list_functions` | List all functions |\n| `lambda_get_function` | Get function details |\n| `lambda_create_function` | Create a function from a base64-encoded ZIP |\n| `lambda_delete_function` | Delete a function |\n| `lambda_invoke` | Invoke a function and return its response + logs |\n\n### Secrets Manager\n\n| Tool | Description |\n|---|---|\n| `secretsmanager_list_secrets` | List all secrets |\n| `secretsmanager_create_secret` | Create a new secret |\n| `secretsmanager_get_secret` | Get the value of a secret |\n| `secretsmanager_update_secret` | Update the value of a secret |\n| `secretsmanager_describe_secret` | Describe secret metadata |\n| `secretsmanager_delete_secret` | Delete a secret (with optional force delete) |\n| `secretsmanager_restore_secret` | Restore a previously deleted secret |\n\n### SSM Parameter Store\n\n| Tool | Description |\n|---|---|\n| `ssm_get_parameter` | Get a parameter by name |\n| `ssm_put_parameter` | Create or update a parameter |\n| `ssm_delete_parameter` | Delete a parameter |\n| `ssm_delete_parameters` | Delete up to 10 parameters in batch |\n| `ssm_get_parameters_by_path` | Get all parameters under a path prefix |\n| `ssm_describe_parameters` | List and describe parameters |\n\n### SES\n\n| Tool | Description |\n|---|---|\n| `ses_list_identities` | List all verified identities |\n| `ses_verify_email_identity` | Verify an email address |\n| `ses_get_identity_verification_attributes` | Get verification status for identities |\n| `ses_delete_identity` | Delete an identity |\n| `ses_send_email` | Send an email (plain text and/or HTML) |\n\n---\n\n## Use Cases\n\n- **Dev environment bootstrap** — create S3 buckets, SQS queues, DynamoDB tables, and SSM parameters in one shot from a spec\n- **Test data seeding** — populate DynamoDB or S3 before running integration tests\n- **Event-driven debugging** — publish to EventBridge/SNS/Kinesis and inspect downstream effects without leaving the IDE\n- **Secret/config management** — read and update Secrets Manager / SSM values during local debug sessions\n- **Lambda smoke testing** — invoke Lambda functions, capture responses and logs, iterate quickly\n- **Queue drain / inspect** — receive and inspect SQS messages without a consumer running\n\n---\n\n## Project Structure\n\n```\nlocalstack/\n├── docker-compose.yml      # LocalStack container\n├── package.json\n├── tsconfig.json\n├── vitest.config.ts\n├── src/\n│   ├── index.ts            # MCP server entry point\n│   ├── config.ts           # Environment config\n│   ├── tools/              # One file per AWS service\n│   │   ├── s3.ts\n│   │   ├── sqs.ts\n│   │   ├── sns.ts\n│   │   ├── eventbridge.ts\n│   │   ├── kinesis.ts\n│   │   ├── dynamodb.ts\n│   │   ├── lambda.ts\n│   │   ├── secretsmanager.ts\n│   │   ├── ssm.ts\n│   │   └── ses.ts\n│   └── utils/\n│       ├── client.ts       # Shared AWS client factory (LocalStack endpoint)\n│       └── errors.ts       # Standardised MCP error formatting\n└── tests/                  # Integration tests (real LocalStack)\n    ├── s3.test.ts\n    ├── sqs.test.ts\n    ├── sns.test.ts\n    ├── eventbridge.test.ts\n    ├── kinesis.test.ts\n    ├── dynamodb.test.ts\n    ├── lambda.test.ts\n    ├── secretsmanager.test.ts\n    ├── ssm.test.ts\n    └── ses.test.ts\n```\n",
  "bytes": 9066,
  "sha": "a6b93748c02ae2ddb8d885cb7d6a49592b67359cbdefd53a9857d32a6297c24a",
  "repo_slug": "giovanemartins/localstack-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_giovanemartins_localstack_978065bf/readme"
}