AWS CLI
Interaja com os serviços da AWS usando a AWS CLI. Requer que a AWS CLI esteja instalada e configurada.
Documentação
Servidor MCP use_aws
🌟 amazon-q-cli é ótimo, e é ótimo porque tem use_aws ferramenta MCP para interagir com a API da AWS.
💡 Não seria ainda melhor se esta use_aws fosse portátil e pudesse ser usada em diferentes ferramentas de IA, independentemente de qual você está usando atualmente?
⚡ use_aws_mcp é um servidor Model Context Protocol (MCP) autônomo que fornece funcionalidade da AWS CLI através de uma interface padronizada.
Este servidor replica a funcionalidade da ferramenta use_aws do Amazon Q Developer CLI.
🎬 Demonstração
-
Uso com Avante, MCPHub no nvim

-
Uso com Cursor

✨ Recursos
- Integração com AWS CLI: Execute comandos da AWS CLI com tratamento adequado de parâmetros
- Verificações de Segurança: Detecção automática de operações somente leitura vs. operações de escrita
- Gerenciamento de User Agent: Configuração adequada do user agent da AWS CLI para rastreamento
- Formatação de Parâmetros: Conversão automática de parâmetros para kebab-case para compatibilidade com a CLI
- Tratamento de Erros: Tratamento abrangente de erros e formatação de saída
- Protocolo MCP: Conformidade total com o Model Context Protocol
- Descrições Legíveis por Humanos: Descrições ricas de comandos usando formatação de terminal
📦 Instalação
📋 Pré-requisitos
- 🦀 Rust (1.70 ou posterior), Cargo
- para MacOS e Linux, instale com
curl https://sh.rustup.rs -sSf | sh
- para MacOS e Linux, instale com
- ☁️ AWS CLI instalada e configurada
- 🔑 Credenciais AWS configuradas (via AWS CLI, variáveis de ambiente ou papéis IAM)
🔨 Compilação
cargo build --release
O binário estará disponível em target/release/use_aws.
🚀 Uso
🔗 Integração com Cliente MCP
Para usar este servidor com um cliente MCP, primeiro instale-o usando Cargo:
cargo install use_aws_mcp
Em seguida, configure seu cliente MCP com:
{
"mcpServers": {
"use_aws_mcp": {
"name": "use_aws_mcp",
"command": "use_aws_mcp",
"timeout": 300,
"env": {},
"disabled": false
}
}
}
⚠️ Observação Importante sobre o Uso do Cliente MCP
Com o q cli, os clientes MCP são processos de shell, então variáveis de ambiente de credenciais como AWS_DEFAULT_PROFILE são transferidas automaticamente para o servidor MCP.
No entanto, clientes MCP que não são shell, como o cursor, não podem aproveitar isso, então é recomendável solicitar que os clientes MCP usem diretamente um perfil AWS específico.
📋 Fluxo do Usuário:
- Configure o mcp.json acima
- Defina a chave de API ou faça login em um perfil específico usando
aws sso login - Faça perguntas relacionadas à AWS ao cliente MCP! E certifique-se de solicitar que ele use o perfil específico.
Executando o Servidor MCP Localmente
./target/release/use_aws_mcp
O servidor se comunica via stdin/stdout usando o protocolo JSON-RPC.
Descrições de Comandos
O servidor fornece descrições legíveis por humanos dos comandos da AWS CLI. Você pode ver isso em ação executando o exemplo:
cargo run --example description_demo
Isso produzirá algo como:
Running aws cli command:
Service name: s3
Operation name: list-buckets
Parameters:
- max-items: "10"
- query: "Buckets[].Name"
Profile name: development
Region: us-west-2
Label: List S3 buckets with query
✅ This command is read-only (no acceptance required)
🛠️ Especificação da Ferramenta
O servidor fornece uma única ferramenta chamada use_aws com o seguinte esquema:
{
"name": "use_aws",
"description": "Execute AWS CLI commands with proper parameter handling and safety checks",
"inputSchema": {
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "AWS service name (e.g., s3, ec2, lambda)"
},
"operation_name": {
"type": "string",
"description": "AWS CLI operation name (e.g., list-buckets, describe-instances)"
},
"parameters": {
"type": "object",
"description": "Optional parameters for the AWS CLI command",
"additionalProperties": true
},
"region": {
"type": "string",
"description": "AWS region (e.g., us-west-2, eu-west-1)"
},
"profile_name": {
"type": "string",
"description": "Optional AWS profile name"
},
"label": {
"type": "string",
"description": "Optional label for the operation"
}
},
"required": ["service_name", "operation_name", "region"]
}
}
📚 Exemplos
Listar Buckets S3
{
"name": "use_aws",
"arguments": {
"service_name": "s3",
"operation_name": "ls",
"region": "us-west-2"
}
}
Descrever Instâncias EC2
{
"name": "use_aws",
"arguments": {
"service_name": "ec2",
"operation_name": "describe-instances",
"region": "us-west-2",
"parameters": {
"instance-ids": "i-1234567890abcdef0"
}
}
}
Listar Funções Lambda com Perfil
{
"name": "use_aws",
"arguments": {
"service_name": "lambda",
"operation_name": "list-functions",
"region": "us-west-2",
"profile_name": "development"
}
}
🛡️ Recursos de Segurança
Detecção de Operações Somente Leitura
O servidor detecta automaticamente operações somente leitura com base no prefixo do nome da operação:
- Prefixos somente leitura:
get,describe,list,ls,search,batch_get - Operações de escrita: Todas as outras operações exigem aceitação explícita do usuário
Truncamento de Saída
Saídas grandes são truncadas automaticamente para evitar problemas de memória, com um tamanho máximo de resposta de 100KB.
Desenvolvimento
Executando Testes
cargo test
🔨 Compilação para Desenvolvimento
cargo build
Executando com Logging
RUST_LOG=use_aws=debug cargo run
Exemplos
# Run the description demo
cargo run --example description_demo
Arquitetura
O projeto está estruturado da seguinte forma:
src/lib.rs: Biblioteca principal com tipos e constantessrc/error.rs: Tipos de tratamento de errossrc/use_aws.rs: Funcionalidade principal da AWS CLI (replicada do original)src/mcp_server.rs: Implementação do servidor MCPsrc/main.rs: Ponto de entrada do binárioexamples/description_demo.rs: Exemplo demonstrando descrições de comandos
📦 Dependências
Se você não tiver o Cargo (o gerenciador de pacotes do Rust) instalado, pode obtê-lo instalando o Rust usando rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Siga as instruções na tela para concluir a instalação. Após a instalação, reinicie seu terminal e certifique-se de que o Cargo esteja disponível executando:
cargo --version
Você deverá ver a versão instalada do Cargo impressa.
Este projeto é distribuído como uma crate Rust. As seguintes dependências são gerenciadas automaticamente pelo Cargo:
tokioserdeserde_jsoneyrebstrconvert_caseasync-traitthiserrortracingtracing-subscribercrossterm
dependências de teste/desenvolvimento:
tokio-test
Você não precisa instalá-las manualmente; o Cargo cuidará delas durante a instalação.
📄 Licença
MIT, Apache-2.0
🤝 Contribuindo
- Faça um fork do repositório
- Crie um branch de funcionalidade
- Faça suas alterações
- Adicione testes
- Envie um pull request
🔒 Segurança
Este servidor executa comandos da AWS CLI, o que pode ter implicações de segurança:
- Garanta credenciais e permissões AWS adequadas
- Revise todos os comandos antes da execução
- Use operações somente leitura quando possível
- Considere executar em um ambiente restrito
🔧 Solução de Problemas
Problemas Comuns
- AWS CLI não encontrada: Certifique-se de que a AWS CLI esteja instalada e no PATH
- Permissão negada: Verifique as credenciais e permissões AWS
- Região inválida: Verifique se o nome da região está correto
- Erros de parâmetros: Verifique nomes e valores dos parâmetros
Modo de Depuração
Execute com logging de depuração para ver informações detalhadas:
RUST_LOG=use_aws=debug ./target/release/use_aws