MCP Hub
Back to servers

AWS Sage

MCP (Model Context Protocol) Server. Integrates with AWS services through natural language commands, enabling resource querying and management across multiple profiles and regions via boto3 and FastMCP framework.

Stars
5
Tools
30
Validated
Jan 11, 2026

AWS Sage

Version License Python Tests

A production-grade Model Context Protocol (MCP) server for AWS. Connect AI assistants to your AWS infrastructure and manage it through natural conversation.

🚀 Works with any MCP-compatible client - just install and configure.

Compatible Clients

ClientStatusNotes
Claude Desktop✅ Full SupportRecommended
Claude Code✅ Full SupportCLI & IDE
Cursor✅ Full SupportMCP enabled
Cline✅ Full SupportVS Code extension
Windsurf✅ Full SupportMCP enabled
Zed✅ Full SupportMCP enabled
VS Code + Copilot⏳ PlannedVia MCP extension

Why AWS Sage?

AWS Labs offers 15 separate MCP servers for different services. AWS Sage takes a different approach:

FeatureAWS Labs MCPAWS Sage
Architecture15 separate servers1 unified server
Tools~45 tools across servers30 intelligent tools
Cross-Service QueriesNoYes - discover resources across all services
Dependency MappingNoYes - "what depends on this resource?"
Impact AnalysisNoYes - "what breaks if I delete this?"
Incident InvestigationNoYes - automated troubleshooting workflows
Cost AnalysisSeparate serverBuilt-in - idle resources, rightsizing, projections
LocalStack SupportNoYes - seamless local development
Multi-AccountNoYes - cross-account via AssumeRole
Docker SupportSeparateBuilt-in with docker-compose
Safety SystemBasic3-tier with 70+ blocked operations
Natural LanguageLimitedFull NLP with intent classification

Features

Core Capabilities

  • Natural Language Queries: "Show me EC2 instances tagged production"
  • Multi-Profile Support: Switch between AWS profiles with SSO support
  • Auto-Pagination: Never miss resources due to pagination limits
  • Smart Formatting: Tabular output for lists, detailed JSON for single resources

Safety System

Three safety modes protect your infrastructure:

ModeDescriptionOperations Allowed
READ_ONLYDefault - exploration onlylist, describe, get
STANDARDNormal operationsread + write (with confirmation)
UNRESTRICTEDFull accessall except denylist

Always Blocked (70+ operations):

  • cloudtrail.delete_trail / stop_logging
  • iam.delete_account_password_policy
  • organizations.leave_organization
  • guardduty.delete_detector
  • kms.schedule_key_deletion
  • And 65+ more critical operations

Unique Differentiators

Cross-Service Resource Discovery

Find resources across your entire AWS account:

"Find all resources tagged Environment=production"
"Discover resources with Name containing api"

Dependency Mapping

Understand resource relationships:

"What resources does my Lambda function depend on?"
"Map dependencies for my ECS service"

Impact Analysis

Know what breaks before you delete:

"What will break if I delete this security group?"
"Show impact of removing this IAM role"

Incident Investigation

Automated troubleshooting workflows:

"Investigate why my Lambda is failing"
"Debug high latency on my ALB"
"Analyze this security alert"

Cost Analysis

Find savings and optimize spending:

"Find idle resources in my account"
"Get rightsizing recommendations for EC2"
"Project costs for 3 t3.large instances"

LocalStack Integration

Develop locally without touching production:

"Switch to LocalStack environment"
"Compare S3 buckets between localstack and production"

Multi-Account Support

Work across AWS accounts:

"Assume role in account 123456789012"
"Switch to production account"

Quick Start

# 1. Clone and install
git clone https://github.com/arunsanna/aws-sage
cd aws-sage
pip install .

# 2. Add to Claude Desktop config (see Configuration below)
# 3. Restart Claude Desktop
# 4. Start chatting: "List my S3 buckets"

That's it! Claude Desktop automatically runs AWS Sage when needed.

Installation

Prerequisites

  • Python 3.11+
  • AWS credentials configured (~/.aws/credentials or ~/.aws/config)
  • Any MCP-compatible client (see Compatible Clients above)

Option 1: From Source

git clone https://github.com/arunsanna/aws-sage
cd aws-sage
pip install .

Option 2: Direct from GitHub

pip install git+https://github.com/arunsanna/aws-sage.git

Client Configuration

First, find your Python path:

which python  # or: which python3

Claude Desktop

Config file location:

OSPath
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
Linux~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "aws-sage": {
      "command": "/path/to/python3",
      "args": ["-m", "aws_sage.server"],
      "env": {
        "AWS_PROFILE": "default"
      }
    }
  }
}

Claude Code

Option 1: CLI command

claude mcp add aws-sage -s user -- python -m aws_sage.server

Option 2: Project config (.mcp.json in project root)

{
  "mcpServers": {
    "aws-sage": {
      "command": "python",
      "args": ["-m", "aws_sage.server"],
      "env": {
        "AWS_PROFILE": "default"
      }
    }
  }
}

Option 3: Global config (~/.claude.json)

{
  "mcpServers": {
    "aws-sage": {
      "command": "python",
      "args": ["-m", "aws_sage.server"],
      "env": {
        "AWS_PROFILE": "default"
      }
    }
  }
}

Cursor

Config file: ~/.cursor/mcp.json (global) or .cursor/mcp.json (project)

{
  "mcpServers": {
    "aws-sage": {
      "command": "python",
      "args": ["-m", "aws_sage.server"],
      "env": {
        "AWS_PROFILE": "default"
      }
    }
  }
}

Cline (VS Code Extension)

Config file: Access via Cline settings → "Configure MCP Servers" → cline_mcp_settings.json

{
  "mcpServers": {
    "aws-sage": {
      "command": "python",
      "args": ["-m", "aws_sage.server"],
      "env": {
        "AWS_PROFILE": "default"
      },
      "disabled": false
    }
  }
}

Windsurf

Config file:

OSPath
macOS~/.codeium/windsurf/mcp_config.json
Windows%USERPROFILE%\.codeium\windsurf\mcp_config.json
{
  "mcpServers": {
    "aws-sage": {
      "command": "python",
      "args": ["-m", "aws_sage.server"],
      "env": {
        "AWS_PROFILE": "default"
      }
    }
  }
}

Zed

Config file: Zed Settings (settings.json)

{
  "context_servers": {
    "aws-sage": {
      "command": "python",
      "args": ["-m", "aws_sage.server"],
      "env": {
        "AWS_PROFILE": "default"
      }
    }
  }
}

VS Code (Native MCP)

Config file: .vscode/mcp.json (project)

{
  "servers": {
    "aws-sage": {
      "command": "python",
      "args": ["-m", "aws_sage.server"],
      "env": {
        "AWS_PROFILE": "default"
      }
    }
  }
}

Docker Installation (All Clients)

For enhanced security with container isolation:

git clone https://github.com/arunsanna/aws-sage
cd aws-sage
docker compose build aws-sage

Docker config (use in any client above):

macOS/Linux:

{
  "command": "docker",
  "args": [
    "run", "-i", "--rm",
    "-v", "${HOME}/.aws:/home/appuser/.aws:ro",
    "-e", "AWS_PROFILE=default",
    "aws-sage:latest"
  ]
}

Windows:

{
  "command": "docker",
  "args": [
    "run", "-i", "--rm",
    "-v", "%USERPROFILE%\\.aws:/home/appuser/.aws:ro",
    "-e", "AWS_PROFILE=default",
    "aws-sage:latest"
  ]
}

Tools Reference (30 Tools)

Credential Management

ToolDescription
list_profilesList available AWS profiles
select_profileSelect and authenticate with a profile
get_account_infoShow current account ID, region, identity

Safety Controls

ToolDescription
set_safety_modeSwitch between READ_ONLY, STANDARD, UNRESTRICTED

Query Operations (Read-Only)

ToolDescription
aws_queryNatural language AWS queries
validate_operationCheck if an operation is valid without executing

Execute Operations (Require Confirmation)

ToolDescription
aws_executeExecute validated AWS operations

Context & Memory

ToolDescription
get_contextView conversation context and recent resources
set_aliasCreate shortcuts for resources (e.g., "prod-db")
list_aliasesView all defined aliases

Cross-Service Intelligence

ToolDescription
discover_resourcesFind resources by tags across all services
map_dependenciesShow what a resource depends on
impact_analysisPredict what breaks if you modify/delete something
investigate_incidentAutomated incident investigation workflows

AWS Knowledge (Composition)

ToolDescription
search_docsSearch AWS documentation
get_aws_knowledgeQuery built-in AWS knowledge base
get_best_practicesGet service-specific best practices
get_service_limitsShow default service quotas

Cost Analysis

ToolDescription
find_idle_resourcesFind unused EC2/RDS/EBS/EIP resources
get_rightsizing_recommendationsGet EC2 right-sizing suggestions
get_cost_breakdownSpending analysis by service/tag
project_costsEstimate costs before deployment

Environment Management

ToolDescription
list_environmentsList configured environments (production/localstack)
switch_environmentSwitch between LocalStack and production
get_environment_infoCurrent environment details
check_localstackVerify LocalStack connectivity
compare_environmentsDiff resources between environments

Multi-Account Management

ToolDescription
assume_roleAssume role in another account via STS
list_accountsShow configured accounts
switch_accountChange active account context

Usage Examples

Basic Queries

"List all S3 buckets"
"Show EC2 instances in us-west-2"
"Describe Lambda function payment-processor"
"Get IAM users with console access"

Cost Analysis

"Find idle resources in us-east-1"
"Get rightsizing recommendations for EC2"
"Show cost breakdown by service for last 30 days"
"Project costs for 2 t3.large and 100GB gp3 EBS"

LocalStack Development

"Switch to localstack"
"Create an S3 bucket in localstack"
"Compare DynamoDB tables between localstack and production"
"Check localstack connectivity"

Multi-Account Operations

"Assume role arn:aws:iam::123456789012:role/AdminRole"
"List all configured accounts"
"Switch to production account"

Cross-Service Discovery

"Find all resources tagged with Environment=production"
"Discover resources owned by team-platform"
"Show all resources in the payment-service stack"

Dependency Analysis

"What does my api-gateway Lambda depend on?"
"Map all dependencies for the checkout-service ECS task"
"Show resources connected to vpc-abc123"

Impact Analysis

"What breaks if I delete sg-abc123?"
"Impact of terminating this RDS instance"
"What depends on this KMS key?"

Incident Investigation

"Investigate Lambda failures for order-processor"
"Debug high latency: ALB arn:aws:elasticloadbalancing:..."
"Analyze security alert for instance i-abc123"

Architecture

aws-sage/
├── Dockerfile                  # Container support
├── docker-compose.yml          # LocalStack + MCP server
│
├── src/aws_sage/
│   ├── server.py              # FastMCP server (30 tools)
│   ├── config.py              # Configuration & safety modes
│   │
│   ├── core/
│   │   ├── session.py         # AWS session management
│   │   ├── context.py         # Conversation memory
│   │   ├── environment.py     # Environment configuration
│   │   ├── environment_manager.py  # LocalStack/production switching
│   │   ├── multi_account.py   # Cross-account management
│   │   └── exceptions.py      # Custom exceptions
│   │
│   ├── safety/
│   │   ├── classifier.py      # Operation classification
│   │   ├── validator.py       # Pre-execution validation
│   │   └── denylist.py        # Blocked operations (70+)
│   │
│   ├── parser/
│   │   ├── intent.py          # NLP intent classification
│   │   └── service_models.py  # Botocore integration
│   │
│   ├── execution/
│   │   ├── engine.py          # Execution orchestrator
│   │   └── pagination.py      # Auto-pagination
│   │
│   ├── composition/
│   │   ├── docs_proxy.py      # AWS documentation
│   │   └── knowledge_proxy.py # AWS knowledge base + live query
│   │
│   └── differentiators/
│       ├── discovery.py       # Cross-service discovery
│       ├── dependencies.py    # Dependency mapping
│       ├── workflows.py       # Incident investigation
│       ├── cost.py            # Cost analysis
│       └── compare.py         # Environment comparison
│
└── tests/
    ├── unit/                  # Unit tests (145 tests)
    └── integration/           # Integration tests

Development (For Contributors)

Setup

git clone https://github.com/arunsanna/aws-sage
cd aws-sage
pip install -e ".[dev]"

Run Tests

pytest                          # All tests
pytest --cov=aws_sage           # With coverage
pytest tests/unit/test_cost.py  # Specific module

Local Testing with LocalStack

Test against LocalStack without touching real AWS:

# Start LocalStack
docker compose up -d localstack

# In Claude Desktop, say:
# "Switch to localstack environment"
# "Create test bucket my-test-bucket"

Debug Server Directly

For development/debugging (not needed for normal use):

fastmcp dev src/aws_sage/server.py  # Interactive mode
python -m aws_sage.server           # Direct run

Environment Variables

VariableDescriptionDefault
AWS_PROFILEAWS profile to usedefault
AWS_DEFAULT_REGIONDefault AWS regionus-east-1
AWS_SAGE_SAFETY_MODESafety mode (read_only/standard/unrestricted)read_only
AWS_SAGE_LOCALSTACK_ENABLEDEnable LocalStack by defaultfalse
AWS_SAGE_LOCALSTACK_HOSTLocalStack hostlocalhost
AWS_SAGE_LOCALSTACK_PORTLocalStack port4566

Troubleshooting

View Logs

# Claude Desktop logs
tail -f ~/Library/Logs/Claude/mcp-server-aws-sage.log
tail -f ~/Library/Logs/Claude/mcp.log

Common Issues

"Profile not found"

  • Ensure AWS credentials are configured in ~/.aws/credentials or ~/.aws/config
  • For SSO profiles, run aws sso login --profile <name> first

"Operation blocked"

  • Check current safety mode with get_account_info
  • Use set_safety_mode to change if needed
  • Some operations are always blocked (see denylist)

"Validation failed"

  • The parser validates operations against botocore models
  • Check spelling of service/operation names
  • Use validate_operation to test before executing

"LocalStack not reachable"

  • Ensure LocalStack is running: docker compose up -d localstack
  • Check endpoint: curl http://localhost:4566/_localstack/health
  • Use check_localstack tool to diagnose

Roadmap

v1.0.0 (Current)

  • 30 intelligent tools across 10 categories
  • Cross-service discovery, dependency mapping, impact analysis
  • Cost optimization analyzer
  • LocalStack integration
  • Multi-account support
  • Docker containerization
  • 3-tier safety system with 70+ blocked operations

Future

  • CloudFormation drift detection
  • Custom workflow definitions
  • Terraform state integration
  • Compliance scanning (CIS benchmarks)

References

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT License - see LICENSE for details.

Contact

Reviews

No reviews yet

Sign in to write a review