AWS MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
npm install
npm run build
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add -e "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}" -e "AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}" -e "AWS_REGION=${AWS_REGION}" aws-mcp-server -- node "<FULL_PATH_TO_AWS_MCP_SERVER>/dist/index.js"

Replace <FULL_PATH_TO_AWS_MCP_SERVER>/dist/index.js with the actual folder you prepared in step 1.

Required:AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGION+ 3 optional
README.md

Read-only Model Context Protocol server for AWS resources

โ˜๏ธ AWS MCP Server

Read-only Model Context Protocol server for AWS resources โ€” multi-region, caching, audit, and AI-ready.


๐Ÿ“‹ Overview

This MCP server exposes 60+ read-only tools across AWS services: identity, EC2, S3, IAM, Cost Explorer, CloudWatch, GuardDuty, CloudTrail, ELB, WAF, Route53, ECS, EKS, RDS, Lambda, and more.

Flow Description
๐Ÿ”Œ MCP client connects to this server
๐Ÿ› ๏ธ Server invokes AWS APIs (read-only)
๐Ÿ“ค Returns resources, metrics, cost data to the AI agent

๐Ÿ› ๏ธ Tech Stack

Layer Technology Purpose
โ˜๏ธ MCP Server TypeScript, AWS SDK v3 Protocol handler, tool dispatch
๐Ÿ“ฆ Runtime Node.js (v18+) Execution
๐Ÿ” Auth AWS credentials (keys, profiles, SSO) AWS API calls

๐Ÿ—ฃ๏ธ Languages

Language Used In
TypeScript MCP server, tools, CLI, libs
JSON Config (mcp-config.json), MCP schema

๐Ÿ“ Project Structure

โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.ts          # MCP server entry, tool dispatch, resources, prompts
โ”‚   โ”œโ”€โ”€ load-env.ts       # Loads .env before other modules
โ”‚   โ”œโ”€โ”€ clients.ts        # Shared AWS clients (one per service)
โ”‚   โ”œโ”€โ”€ cli.ts            # Local CLI for testing tools
โ”‚   โ”œโ”€โ”€ integration.test.ts
โ”‚   โ””โ”€โ”€ lib/              # config, cache, retry, audit, rate-limit, webhook, etc.
โ”œโ”€โ”€ docs/                 # TOOLS.md, IAM_PERMISSIONS.md, CONFIG.md, TROUBLESHOOTING.md
โ”œโ”€โ”€ mcp-config.json.example   # Optional: webhook, rate limit, defaults (copy to mcp-config.json)
โ”œโ”€โ”€ Dockerfile            # Container image for running the server
โ””โ”€โ”€ .env                  # AWS credentials (copy from .env.example)

โšก Capabilities

Feature Description
Multi-region region parameter on EC2, VPCs, RDS, Lambda tools
Pagination max_results on list_iam_users, list_s3_buckets, list_ecs_clusters, list_dynamodb_tables, list_cloudformation_stacks
MCP resources Browse aws://region/service/id (identity, EC2, S3, cost, RDS, Lambda, GuardDuty)
MCP prompts AI guidance for cost, security, and resource-list queries
Caching Optional in-memory cache (TTL via MCP_AWS_CACHE_TTL)
Retry Exponential backoff for throttled AWS calls
Audit log Log tool invocations when MCP_AWS_AUDIT_LOG=true
Dry-run Mock data when MCP_AWS_DRY_RUN=true (no AWS calls)
LocalStack Set AWS_ENDPOINT_URL=http://localhost:4566
Health check aws_health_check tool to verify credentials
IAM policy get_iam_policy_for_tools generates least-privilege policy
CLI npm run cli -- get_aws_caller_identity for local testing
Config file mcp-config.json for webhook, rate limit, defaults
estimate_cost Rough cost estimate for EC2, Lambda, RDS, S3
scan_secrets_risks Find Secrets Manager secrets needing attention
Tag filter tag_filter on list_ec2_instances, list_rds_instances
SSO / cross-account See docs/SSO_AND_CROSS_ACCOUNT.md

๐Ÿ“– Documentation: TOOLS.md ยท IAM_PERMISSIONS.md ยท CONFIG.md ยท TROUBLESHOOTING.md


๐Ÿš€ Quick Start

# 1. Configure environment
cp .env.example .env   # Add AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION

# 2. Install and build
npm install
npm run build

# 3. Test locally (dry-run, no AWS calls)
MCP_AWS_DRY_RUN=true npm run cli -- get_aws_caller_identity

MCP Client Configuration

{
  "mcpServers": {
    "aws-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/dist/index.js"],
      "env": {
        "AWS_ACCESS_KEY_ID": "YOUR_ACCESS_KEY",
        "AWS_SECRET_ACCESS_KEY": "YOUR_SECRET_KEY",
        "AWS_REGION": "us-east-1"
      }
    }
  }
}

๐Ÿ“ฆ Sharing with Your Team

Option A: Git

  1. Push to a private repo.
  2. Team clones, runs npm install && npm run build.
  3. Point MCP client at dist/index.js (absolute path).

Option B: Package (.tgz)

npm pack   # Creates mcp-server-aws-1.0.0.tgz
npm install -g mcp-server-aws-1.0.0.tgz

Then configure MCP client with "command": "mcp-server-aws".

Option C: Docker

docker build -t mcp-server-aws .
docker run -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_REGION mcp-server-aws

๐Ÿ”ง Development

npm run dev        # Watch mode
npm run typecheck  # TypeScript check (no emit)
npm run cli -- <tool> [--arg key=value]   # Test tools locally
npm run lint       # ESLint
npm run format     # Prettier
npm test           # Unit + integration tests (28 tests)

Release: Push a tag (e.g. v1.0.1) to trigger a GitHub release with built artifacts.


๐Ÿ‘ค Author

Sergio Sediq

Tools (3)

aws_health_checkVerify AWS credentials and connectivity.
get_aws_caller_identityReturns details about the IAM user or role used for authentication.
get_iam_policy_for_toolsGenerates a least-privilege IAM policy for the available tools.

Environment Variables

AWS_ACCESS_KEY_IDrequiredAWS access key for authentication
AWS_SECRET_ACCESS_KEYrequiredAWS secret key for authentication
AWS_REGIONrequiredDefault AWS region
MCP_AWS_CACHE_TTLTTL for in-memory resource caching
MCP_AWS_AUDIT_LOGEnable logging of tool invocations
MCP_AWS_DRY_RUNEnable mock data mode without making actual AWS calls

Configuration

claude_desktop_config.json
{"mcpServers": {"aws-mcp": {"command": "node", "args": ["/absolute/path/to/dist/index.js"], "env": {"AWS_ACCESS_KEY_ID": "YOUR_ACCESS_KEY", "AWS_SECRET_ACCESS_KEY": "YOUR_SECRET_KEY", "AWS_REGION": "us-east-1"}}}}

Try it

โ†’List all S3 buckets in my account and provide a summary of their contents.
โ†’Check the current status of my EC2 instances in the us-east-1 region.
โ†’Generate a least-privilege IAM policy for the tools I am currently using.
โ†’Estimate the monthly cost for my current RDS and Lambda resources.
โ†’Scan my AWS environment for any secrets in Secrets Manager that need attention.

Frequently Asked Questions

What are the key features of AWS MCP Server?

Exposes over 60 read-only AWS tools across services like EC2, S3, and IAM. Supports multi-region AWS API calls. Includes built-in resource caching and exponential backoff for retries. Provides audit logging for all tool invocations. Generates least-privilege IAM policies for secure access.

What can I use AWS MCP Server for?

Querying AWS infrastructure metadata directly from an AI chat interface. Auditing AWS resource configurations and security posture. Estimating cloud infrastructure costs for specific services. Troubleshooting AWS connectivity and credential health.

How do I install AWS MCP Server?

Install AWS MCP Server by running: npm install && npm run build

What MCP clients work with AWS MCP Server?

AWS MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep AWS MCP Server docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare