Esse projeto foi desenvolvido com o suporte de Inteligencia Articial, em especifico a ferramenta Cursor.
Análise inteligente de custos AWS com IA - Ferramenta CLI empresarial e MCP Server
O Jera Cloud Analyzer é uma ferramenta CLI avançada que utiliza Inteligência Artificial para analisar, otimizar e fornecer insights sobre seus custos e recursos AWS através de conversas em linguagem natural. Disponível como CLI local e como MCP Server para integração com IDEs e ferramentas de IA.
cloud-analyzer -q "Quais são os 5 serviços mais caros?"
cloud-analyzer -q "Analise instâncias EC2 subutilizadas"Nós recomendamos que o arquivo docker-compose.yml seja usado por que ele usa diretamente a imagem docker que sempre vai estar atualizado. O docker-compose-local.yml usa o código local para buildar a imagem.
docker-compose up -d
# Acesse via http://localhost:8000/mcpcloud-analyzer -q "Quais são os 5 serviços mais caros?"
cloud-analyzer -q "Analise instâncias EC2 subutilizadas"
cloud-analyzer -q "Compare custos S3 vs EBS no último trimestre"| Categoria | Ferramentas | Casos de Uso |
|---|---|---|
| 💰 Cost Explorer | 8 tools | Análise de custos, previsões, breakdowns detalhados |
| 📈 CloudWatch | 6 tools | Performance, métricas, monitoramento |
| 🖥️ EC2 & ELB | 10 tools | Instâncias, volumes, load balancers, networking |
| 🏷️ Tagging & Governance | 4 tools | Auditoria, governança, compliance |
- Aceita apelidos:
rds,ec2,s3→ nomes oficiais AWS - Tolerante a erros:
databse→database services - Sugestões automáticas: quando não encontra, sugere similares
- AWS SSO: Detecta automaticamente sessões ativas
- jera-cli: Integração nativa com ferramentas Jera
- Multi-conta: Suporte para AWS Organizations
- Auditoria: Log automático de todas as consultas
git clone https://github.com/jera/jera-cloud-analyzer
cd jera-cloud-analyzer
./install.sh# Edite o arquivo .env
nano .env
# Adicione apenas:
OPENAI_API_KEY=your_api_key_herecloud-analyzer -q "Olá, analise meus custos AWS"# Crie o arquivo .env
cat > .env << EOF
# AWS Credentials (opcional se usar SSO)
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_DEFAULT_REGION=us-east-1
# Configuração do servidor
EXTERNAL_PORT=8000
EOFNós recomendamos que o arquivo docker-compose.yml seja usado por que ele usa diretamente a imagem docker que sempre vai estar atualizado. O docker-compose-local.yml usa o código local para buildar a imagem.
# Iniciar servidor em background
docker-compose up -d
# Verificar logs
docker-compose logs -f cloud-insights-mcp
# Verificar saúde do servidor
curl http://localhost:8000/healthPara Cursor IDE:
// Adicione ao settings.json do Cursor
{
"mcp.servers": {
"jera-cloud-analyzer": {
"command": "curl",
"args": [
"-X", "POST",
"http://localhost:8000/mcp",
"-H", "Content-Type: application/json"
]
}
}
}Para Claude Desktop:
// Em ~/.config/claude-desktop/claude_desktop_config.json
{
"mcpServers": {
"jera-cloud-analyzer": {
"command": "curl",
"args": [
"-X", "POST",
"http://localhost:8000/mcp",
"-H", "Content-Type: application/json"
]
}
}
}Para LobeChat:
{
"mcpServers": {
"jera-cloud-analyzer": {
"command": "curl",
"args": [
"-X", "POST",
"http://localhost:8000/mcp",
"-H", "Content-Type: application/json"
]
}
}
}python test_mcp.py
# Ver status dos containers
docker-compose ps
# Parar o servidor
docker-compose down
# Rebuild da imagem
docker-compose build --no-cache
# Modo debug (container interativo)
docker-compose --profile debug up cloud-insights-debug
# Entrar no container para debug
docker-compose exec cloud-insights-mcp bash
# Ver logs em tempo real
docker-compose logs -f
# Limpar volumes e rebuild completo
docker-compose down -v
docker system prune -f
docker-compose up --build -d💡 AWS credenciais são detectadas automaticamente via SSO, variáveis de ambiente ou arquivos de configuração
# CLI Local
cloud-analyzer -q "Top 10 serviços mais caros nos últimos 3 meses"
cloud-analyzer -q "Como evoluiu o custo do EC2 nos últimos 6 meses?"
# Via MCP (no Cursor/Claude)
"Encontre instâncias subutilizadas e calcule economia potencial"
"Analise custos por tag Environment e Project"# CLI Local
cloud-analyzer -q "Audite recursos sem tags de governança"
cloud-analyzer -q "Encontre volumes EBS não anexados e Elastic IPs não utilizados"
# Via MCP
"Verifique se recursos seguem políticas de nomenclatura"
"Liste recursos órfãos por categoria de impacto"# CLI Local
cloud-analyzer -q "Analise CPU e memória das instâncias EC2"
cloud-analyzer -q "Mostre métricas da instância Valhalla nos últimos 7 dias"
# Via MCP
"Preveja crescimento de custos para o próximo trimestre"
"Analise performance de rede das instâncias de produção"# Instância específica
cloud-analyzer -q "Analise custos da instância com nome WebServer-Prod"
# Serviço específico
cloud-analyzer -q "Detalhamento completo de custos do RDS"
# Por região
cloud-analyzer -q "Compare custos entre us-east-1 e us-west-2"| Aspecto | 🖥️ CLI Local | 🐳 MCP Server |
|---|---|---|
| Melhor para | Análises pontuais, scripts, debugging | Integração contínua com IDEs, IA assistants |
| Setup | ⚡ Rápido (pip install) | 🔧 Médio (Docker required) |
| Performance | 🚀 Nativo, sem overhead | 📡 Network calls, leve overhead |
| Escalabilidade | 👤 Single user | 👥 Multi-user, concurrent |
| Integração | 📝 Terminal, scripts | 🤖 Cursor, Claude, outros LLMs |
| Recursos | 💾 Low memory usage | 🐋 Containerizado, resource limits |
| Logs | 📄 Local files | 🗂️ Container logs, centralized |
| Updates | 🔄 Manual pip upgrade | 🏗️ Docker rebuild |
User Command → CLI Parser → AI Agent → AWS APIs → Results
↓ ↓ ↓ ↓
Terminal Python OpenAI boto3
IDE/LLM → HTTP Request → MCP Server → AI Agent → AWS APIs → JSON Response
↓ ↓ ↓ ↓ ↓ ↓
Cursor Docker FastMCP OpenAI boto3 HTTP/JSON
# Se você usa jera-cli
jera-cli aws-login
# Ou AWS SSO nativo
aws sso configure
aws sso login# No arquivo .env
AWS_ACCESS_KEY_ID=...
AWS_SECRET_REMOVED=...
AWS_DEFAULT_REGION=us-east-1# Ver exemplos práticos
cloud-analyzer --examples
# Informações da versão
cloud-analyzer --version
# Ajuda completa
cloud-analyzer --help# Análise temporal específica
cloud-analyzer -q "Custos de janeiro a março de 2024 por serviço"
# Comparação entre períodos
cloud-analyzer -q "Compare custos de Q1 2024 vs Q1 2023"
# Análise preditiva
cloud-analyzer -q "Com base nos padrões atuais, preveja custos para dezembro"
# Deep dive técnico
cloud-analyzer -q "Analise tipos de instância EC2 e recomende otimizações"- Relatórios automáticos de custos em linguagem natural
- Identificação proativa de anomalias de gastos
- Análise de ROI de Reserved Instances e Savings Plans
- Tracking de budgets e alertas personalizados
- Correlação entre performance e custos
- Identificação de recursos subutilizados
- Análise de impacto de mudanças na infraestrutura
- Otimização de right-sizing automática
- Dashboards executivos em linguagem de negócio
- Análise de custos por departamento/projeto
- Projeções financeiras baseadas em tendências
- ROI de iniciativas de cloud optimization
- Zero dados persistidos: Todas as consultas são temporárias
- Credenciais seguras: Uso de AWS IAM, SSO e roles
- Logs auditáveis: Rastreamento completo de operações
- Permissões mínimas: Apenas leitura necessária
- Cache inteligente: Respostas instantâneas para consultas repetidas
- Processing paralelo: Múltiplas APIs AWS simultâneas
- Rate limiting: Respeitosos com limites da AWS
- Fallback automático: Degradação graceful em caso de errors
# Core requirements
boto3>=1.34.0 # AWS SDK
openai>=1.0.0 # GPT integration
haystack-ai>=2.0.0 # AI orchestration
python-dotenv>=1.0.0 # Environment management{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CostExplorerFullAccess",
"Effect": "Allow",
"Action": [
"ce:GetCostAndUsage",
"ce:GetDimensionValues",
"ce:GetCostForecast",
"ce:GetTags",
"ce:ListCostCategoryDefinitions"
],
"Resource": "*"
},
{
"Sid": "CloudWatchMetricsReadOnly",
"Effect": "Allow",
"Action": [
"cloudwatch:GetMetricStatistics",
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricData"
],
"Resource": "*"
},
{
"Sid": "EC2ReadOnlyExtended",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstanceTypes",
"ec2:DescribeInstanceCreditSpecifications",
"ec2:DescribeVolumes",
"ec2:DescribeSnapshots",
"ec2:DescribeImages",
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeRouteTables",
"ec2:DescribeInternetGateways",
"ec2:DescribeNatGateways",
"ec2:DescribeVpcPeeringConnections",
"ec2:DescribeAddresses",
"ec2:DescribeNetworkAcls",
"ec2:DescribeVpcEndpoints",
"ec2:DescribeCustomerGateways",
"ec2:DescribeVpnGateways",
"ec2:DescribeVpnConnections",
"ec2:DescribeKeyPairs",
"ec2:DescribeRegions",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeTags",
"ec2:DescribeAccountAttributes"
],
"Resource": "*"
},
{
"Sid": "ELBv2ReadOnly",
"Effect": "Allow",
"Action": [
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeTargetGroups",
"elasticloadbalancing:DescribeListeners",
"elasticloadbalancing:DescribeTargetHealth"
],
"Resource": "*"
},
{
"Sid": "ResourceGroupsTaggingAPI",
"Effect": "Allow",
"Action": [
"tag:GetTagValues",
"tag:GetTagKeys",
"tag:GetResources"
],
"Resource": "*"
},
{
"Sid": "STSIdentityVerification",
"Effect": "Allow",
"Action": [
"sts:GetCallerIdentity"
],
"Resource": "*"
},
{
"Sid": "OptionalSupportAccess",
"Effect": "Allow",
"Action": [
"support:DescribeCases",
"support:DescribeTrustedAdvisorChecks",
"support:DescribeTrustedAdvisorCheckResult"
],
"Resource": "*"
}
]
}💡 Para ambientes corporativos, recomendamos usar a política
ReadOnlyAccess
# Clonar repositório
git clone https://github.com/jera/jera-cloud-analyzer
cd jera-cloud-analyzer
# Instalar em modo editável
pip install -e .
# Testar
cloud-analyzer -q "Teste de funcionamento"cloud-analyzer/
├── cli.py # 🚀 Interface CLI principal
├── src/
│ ├── ia/
│ │ ├── agent.py # 🤖 Motor de IA
│ │ └── tools/ # 🛠️ 28 ferramentas especializadas
│ ├── clouds/aws/ # ☁️ Integrações AWS
│ └── mcp/
│ └── server.py # 🐳 Servidor MCP
├── docker-compose.yml # 🐋 Configuração Docker
├── Dockerfile # 📦 Imagem Docker
├── setup.py # 📦 Configuração do pacote
└── env.example # ⚙️ Template de configuração
# Verificar credenciais
aws sts get-caller-identity
# Configurar SSO
aws sso configure
aws sso login
# Ou exportar variáveis
export AWS_ACCESS_KEY_ID=your_key
export AWS_SECRET_ACCESS_KEY=your_secret
export AWS_DEFAULT_REGION=us-east-1# Verificar .env
cat .env | grep OPENAI
# Exportar temporariamente
export OPENAI_API_KEY=your_key_here
# Verificar se está carregando
cloud-analyzer --version# Verificar permissões IAM
aws iam get-user
# Testar com política ReadOnlyAccess
aws iam attach-user-policy \
--user-name your-user \
--policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess# Verificar logs detalhados
docker-compose logs cloud-insights-mcp
# Rebuild imagem
docker-compose build --no-cache
# Verificar variáveis de ambiente
docker-compose config# Testar conectividade
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
# Verificar porta
netstat -tulpn | grep 8000
# Verificar firewall
sudo ufw status# Debug manual
docker-compose exec cloud-insights-mcp curl http://localhost:8000/health
# Verificar logs da aplicação
docker-compose exec cloud-insights-mcp python -c "
import src.mcp.server
print('✅ MCP Server OK')
"
# Restart forçado
docker-compose restart cloud-insights-mcp# Monitorar recursos
docker stats cloud-insights-mcp-server
# Ajustar limits no docker-compose.yml
deploy:
resources:
limits:
memory: 2G
cpus: '1.0'
# Verificar AWS rate limits
docker-compose logs | grep -i "rate\|throttl"# Iniciar container em modo debug
docker-compose --profile debug up cloud-insights-debug
# Entrar no container
docker-compose exec cloud-insights-debug bash
# Executar testes manuais
python -c "
from src.ia.tools.aws_data_tools import get_top_services
print(get_top_services(limit=3))
"# Ver logs em tempo real com timestamps
docker-compose logs -f --timestamps cloud-insights-mcp
# Filtrar logs por nível
docker-compose logs cloud-insights-mcp | grep ERROR
# Exportar logs para análise
docker-compose logs cloud-insights-mcp > debug.log# Script de teste completo
#!/bin/bash
echo "🧪 Testando integração completa..."
# 1. Testar CLI
echo "📝 Testando CLI..."
cloud-analyzer -q "teste básico" || echo "❌ CLI failed"
# 2. Testar Docker
echo "🐳 Testando Docker..."
docker-compose up -d
sleep 10
# 3. Testar MCP
echo "🔧 Testando MCP..."
curl -s http://localhost:8000/health | grep "OK" || echo "❌ MCP failed"
# 4. Testar ferramentas
echo "🛠️ Testando ferramentas..."
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}' | \
jq '.result | length' || echo "❌ Tools failed"
echo "✅ Teste concluído!"- Economia identificada: 15-30% dos custos AWS
- Tempo de setup: < 5 minutos
- Payback: Primeira semana de uso
- Produtividade: 10x mais rápido que análise manual
- Startup SaaS: Reduziu 40% dos custos EC2 identificando right-sizing
- E-commerce: Economizou $15k/mês otimizando RDS e storage
- Fintech: Implementou governança que evita 25% de waste mensal
- Email: hospedagem@jera.com.br
- Issues: GitHub Issues
- Consulting: Implementação personalizada para grandes empresas
- Best Practices: Guias de otimização de custos AWS
- Templates: Políticas de governança e tagging
- Integrações: APIs para dashboards personalizados
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.
🚀 Transforme sua gestão de custos AWS hoje mesmo!
💡 De perguntas simples a insights complexos em segundos
🏢 Feito para empresas que levam FinOps a sério