AWS MCP

Interaja com seu ambiente AWS usando linguagem natural. Requer credenciais AWS locais.

Documentação

AWS Sage

Version License Python Tests

Um servidor Model Context Protocol (MCP) de nível de produção para AWS. Conecte assistentes de IA à sua infraestrutura AWS e gerencie-a por meio de conversa natural.

🚀 Funciona com qualquer cliente compatível com MCP - basta instalar e configurar.

Clientes Compatíveis

ClienteStatusNotas
Claude Desktop✅ Suporte completoRecomendado
Claude Code✅ Suporte completoCLI e IDE
Cursor✅ Suporte completoMCP habilitado
Cline✅ Suporte completoExtensão do VS Code
Windsurf✅ Suporte completoMCP habilitado
Zed✅ Suporte completoMCP habilitado
VS Code + Copilot⏳ PlanejadoVia extensão MCP

Por que AWS Sage?

A AWS Labs oferece 15 servidores MCP separados para diferentes serviços. O AWS Sage adota uma abordagem diferente:

RecursoAWS Labs MCPAWS Sage
Arquitetura15 servidores separados1 servidor unificado
Ferramentas~45 ferramentas entre servidores30 ferramentas inteligentes
Consultas entre serviçosNãoSim - descubra recursos em todos os serviços
Mapeamento de dependênciasNãoSim - "do que esse recurso depende?"
Análise de impactoNãoSim - "o que quebra se eu excluir isso?"
Investigação de incidentesNãoSim - fluxos de trabalho automatizados de solução de problemas
Análise de custosServidor separadoIntegrada - recursos ociosos, dimensionamento correto, projeções
Suporte a LocalStackNãoSim - desenvolvimento local sem interrupções
Multi-contaNãoSim - entre contas via AssumeRole
Suporte a DockerSeparadoIntegrado com docker-compose
Sistema de segurançaBásico3 níveis com mais de 70 operações bloqueadas
Linguagem naturalLimitadoNLP completo com classificação de intenção

Recursos

Capacidades Principais

  • Consultas em linguagem natural: "Mostre-me instâncias EC2 marcadas como produção"
  • Suporte a múltiplos perfis: Alterne entre perfis AWS com suporte a SSO
  • Paginação automática: Nunca perca recursos devido a limites de paginação
  • Formatação inteligente: Saída tabular para listas, JSON detalhado para recursos individuais

Sistema de Segurança

Três modos de segurança protegem sua infraestrutura:

ModoDescriçãoOperações Permitidas
READ_ONLYPadrão - apenas exploraçãolistar, descrever, obter
STANDARDOperações normaisleitura + escrita (com confirmação)
UNRESTRICTEDAcesso totaltudo exceto lista de bloqueio

Sempre bloqueado (mais de 70 operações):

  • cloudtrail.delete_trail / stop_logging
  • iam.delete_account_password_policy
  • organizations.leave_organization
  • guardduty.delete_detector
  • kms.schedule_key_deletion
  • E mais de 65 operações críticas adicionais

Diferenciais Únicos

Descoberta de Recursos entre Serviços

Encontre recursos em toda a sua conta AWS:

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

Mapeamento de Dependências

Entenda as relações entre recursos:

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

Análise de Impacto

Saiba o que quebra antes de excluir:

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

Investigação de Incidentes

Fluxos de trabalho automatizados de solução de problemas:

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

Análise de Custos

Encontre economias e otimize gastos:

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

Integração com LocalStack

Desenvolva localmente sem tocar na produção:

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

Suporte a Múltiplas Contas

Trabalhe em várias contas AWS:

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

Início Rápido

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

É isso! O Claude Desktop executa automaticamente o AWS Sage quando necessário.

Instalação

Pré-requisitos

  • Python 3.11+
  • Credenciais AWS configuradas (~/.aws/credentials ou ~/.aws/config)
  • Qualquer cliente compatível com MCP (veja Clientes Compatíveis acima)

Opção 1: A partir do código-fonte

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

Opção 2: Direto do GitHub

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

Configuração do Cliente

Primeiro, encontre o caminho do seu Python:

which python  # or: which python3

Claude Desktop

Local do arquivo de configuração:

SOCaminho
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

Opção 1: comando CLI

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

Opção 2: configuração do projeto (.mcp.json na raiz do projeto)

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

Opção 3: configuração global (~/.claude.json)

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

Cursor

Arquivo de configuração: ~/.cursor/mcp.json (global) ou .cursor/mcp.json (projeto)

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

Cline (Extensão do VS Code)

Arquivo de configuração: Acesse pelas configurações do Cline → "Configure MCP Servers" → cline_mcp_settings.json

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

Windsurf

Arquivo de configuração:

SOCaminho
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

Arquivo de configuração: Configurações do Zed (settings.json)

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

VS Code (MCP nativo)

Arquivo de configuração: .vscode/mcp.json (projeto)

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

Instalação via Docker (todos os clientes)

Para segurança aprimorada com isolamento de contêiner:

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

Configuração Docker (use em qualquer cliente acima):

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

Referência de Ferramentas (30 Ferramentas)

Gerenciamento de Credenciais

FerramentaDescrição
list_profilesListar perfis AWS disponíveis
select_profileSelecionar e autenticar com um perfil
get_account_infoMostrar ID da conta atual, região, identidade

Controles de Segurança

FerramentaDescrição
set_safety_modeAlternar entre READ_ONLY, STANDARD, UNRESTRICTED

Operações de Consulta (Somente Leitura)

FerramentaDescrição
aws_queryConsultas AWS em linguagem natural
validate_operationVerificar se uma operação é válida sem executá-la

Operações de Execução (Exigem Confirmação)

FerramentaDescrição
aws_executeExecutar operações AWS validadas

Contexto e Memória

FerramentaDescrição
get_contextVisualizar contexto da conversa e recursos recentes
set_aliasCriar atalhos para recursos (ex.: "prod-db")
list_aliasesVisualizar todos os aliases definidos

Inteligência entre Serviços

FerramentaDescrição
discover_resourcesEncontrar recursos por tags em todos os serviços
map_dependenciesMostrar do que um recurso depende
impact_analysisPrever o que quebra se você modificar/excluir algo
investigate_incidentFluxos de trabalho automatizados de investigação de incidentes

Conhecimento AWS (Composição)

FerramentaDescrição
search_docsPesquisar documentação AWS
get_aws_knowledgeConsultar base de conhecimento AWS integrada
get_best_practicesObter melhores práticas específicas do serviço
get_service_limitsMostrar cotas padrão do serviço

Análise de Custos

FerramentaDescrição
find_idle_resourcesEncontrar recursos EC2/RDS/EBS/EIP não utilizados
get_rightsizing_recommendationsObter sugestões de dimensionamento correto do EC2
get_cost_breakdownAnálise de gastos por serviço/tag
project_costsEstimar custos antes da implantação

Gerenciamento de Ambiente

FerramentaDescrição
list_environmentsListar ambientes configurados (produção/localstack)
switch_environmentAlternar entre LocalStack e produção
get_environment_infoDetalhes do ambiente atual
check_localstackVerificar conectividade com LocalStack
compare_environmentsDiferenciar recursos entre ambientes

Gerenciamento de Múltiplas Contas

FerramentaDescrição
assume_roleAssumir função em outra conta via STS
list_accountsMostrar contas configuradas
switch_accountAlterar contexto da conta ativa

Exemplos de Uso

Consultas Básicas

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

Análise de Custos

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

Desenvolvimento com LocalStack

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

Operações com Múltiplas Contas

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

Descoberta entre Serviços

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

Análise de Dependências

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

Análise de Impacto

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

Investigação de Incidentes

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

Arquitetura

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

Desenvolvimento (Para Contribuidores)

Configuração

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

Executar Testes

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

Testes Locais com LocalStack

Teste contra LocalStack sem tocar na AWS real:

# Start LocalStack
docker compose up -d localstack

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

Depurar Servidor Diretamente

Para desenvolvimento/depuração (não necessário para uso normal):

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

Variáveis de Ambiente

VariávelDescriçãoPadrão
AWS_PROFILEPerfil AWS a usardefault
AWS_DEFAULT_REGIONRegião AWS padrãous-east-1
AWS_SAGE_SAFETY_MODEModo de segurança (read_only/standard/unrestricted)read_only
AWS_SAGE_LOCALSTACK_ENABLEDHabilitar LocalStack por padrãofalse
AWS_SAGE_LOCALSTACK_HOSTHost do LocalStacklocalhost
AWS_SAGE_LOCALSTACK_PORTPorta do LocalStack4566

Solução de Problemas

Ver Logs

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

Problemas Comuns

"Perfil não encontrado"

  • Garanta que as credenciais AWS estejam configuradas em ~/.aws/credentials ou ~/.aws/config
  • Para perfis SSO, execute aws sso login --profile <name> primeiro

"Operação bloqueada"

  • Verifique o modo de segurança atual com get_account_info
  • Use set_safety_mode para alterar se necessário
  • Algumas operações são sempre bloqueadas (veja a lista de bloqueio)

"Falha na validação"

  • O analisador valida operações contra modelos botocore
  • Verifique a grafia dos nomes de serviço/operação
  • Use validate_operation para testar antes de executar

"LocalStack inacessível"

  • Garanta que o LocalStack esteja em execução: docker compose up -d localstack
  • Verifique o endpoint: curl http://localhost:4566/_localstack/health
  • Use a ferramenta check_localstack para diagnosticar

Roteiro

v1.0.0 (Atual)

  • 30 ferramentas inteligentes em 10 categorias
  • Descoberta entre serviços, mapeamento de dependências, análise de impacto
  • Analisador de otimização de custos
  • Integração com LocalStack
  • Suporte a múltiplas contas
  • Containerização Docker
  • Sistema de segurança em 3 níveis com mais de 70 operações bloqueadas

Futuro

  • Detecção de desvio do CloudFormation
  • Definições de fluxo de trabalho personalizadas
  • Integração com estado do Terraform
  • Verificação de conformidade (benchmarks CIS)

Referências

Contribuindo

Veja CONTRIBUTING.md para diretrizes.

Licença

Licença MIT - veja LICENSE para detalhes.

Contato