serveur use_aws MCP

🌟 amazon-q-cli est génial, et il est génial parce qu'il a l'outil use_aws MCP pour interagir avec l'API AWS.

💡 Ne serait-il pas préférable que cet outil use_aws soit portable, et que vous puissiez l'utiliser avec différents outils d'intelligence artificielle, quel que soit celui que vous utilisez actuellement ?

use_aws_mcp est un serveur autonome de protocole de contexte de modèle (MCP) qui fournit des fonctionnalités AWS CLI par le biais d'une interface standardisée.
Ce serveur reproduit les fonctionnalités de l'outil use_aws de la CLI Amazon Q Developer.

🎬 Démonstration

  • Utilisation avec Avante, MCPHub dans nvim
    Demo: Avante

  • Utilisation avec Cursor
    Demo: Cursor

fonctionnalités

  • Intégration AWS CLI: Exécution de commandes AWS CLI avec gestion appropriée des paramètres
  • Contrôles de sécurité: Détection automatique des opérations de lecture seule et d'écriture
  • Gestion des agents utilisateurs: Configuration correcte de l'agent utilisateur AWS CLI pour le suivi
  • Formatage des paramètres: Conversion automatique des paramètres en majuscules pour la compatibilité avec la CLI
  • Gestion des erreurs: Gestion complète des erreurs et formatage des résultats
  • Protocole MCP: Conformité totale au protocole MCP (Model Context Protocol)
  • Descriptions lisibles par l'homme: Descriptions de commandes riches utilisant le formatage des terminaux

📦 Installation

📋 Conditions préalables

  • 🦀 Rust (1.70 ou plus récent), Cargo
    • pour MacOS et Linux, installer avec curl https://sh.rustup.rs -sSf | sh
  • ☁️ AWS CLI installé et configuré
  • 🔑 Identifiants AWS configurés (via AWS CLI, variables d'environnement ou rôles IAM)

🔨 Construction

cargo build --release

Le binaire sera disponible dans target/release/use_aws.

🚀 Utilisation

🔗 Intégration du client MCP

Pour utiliser ce serveur avec un client MCP, il faut d'abord l'installer avec Cargo :

cargo install use_aws_mcp

Configurez ensuite votre client MCP avec :

{ "mcpServers" : {"use_aws_mcp" : {"name" : "use_aws_mcp", "command" : "use_aws_mcp", "timeout" : 300, "env" : {}, "disabled" : false } } }

⚠️ Mise en garde importante concernant l'utilisation du client MCP

Avec q cli, les clients mcp sont des processus shell, donc les credentials env comme AWS_DEFAULT_PROFILE sont automatiquement transférés au serveur mcp.

Cependant, les clients mcp qui ne sont pas des processus shell, comme le curseur, ne peuvent pas profiter de cela, il est donc préférable d'exiger des clients mcp qu'ils utilisent un profil aws spécifique.

📋 Flux de l'utilisateur :

  1. Définir le fichier mcp.json ci-dessus
  2. Définir la clé API, ou se connecter à un profil spécifique en utilisant aws sso login
  3. Posez toutes les questions relatives au client mcp aws ! et assurez-vous d'exiger l'utilisation d'un profil spécifique.

Exécuter le serveur MCP localement

./target/release/use_aws_mcp

Le serveur communique via stdin/stdout en utilisant le protocole JSON-RPC.

Descriptions des commandes

Le serveur fournit des descriptions lisibles par l'homme des commandes AWS CLI. Vous pouvez voir cela en action en exécutant l'exemple :

cargo run --example description_demo

Le résultat ressemblera à ce qui suit :

Exécution de la commande aws cli : Nom du service : s3 Nom de l'opération : list-buckets Paramètres : 
- max-items : "10" - query : "Buckets[].Name" Nom du profil : development Région : us-west-2 Étiquette : List S3 buckets with query ✅ Cette commande est en lecture seule (pas d'acceptation requise)

🛠️ Spécification de l'outil

Le serveur fournit un seul outil appelé use_aws avec le schéma suivant :

{"name" : "use_aws", "description" : "Exécuter des commandes AWS CLI avec une gestion appropriée des paramètres et des contrôles de sécurité", "inputSchema" : {"type" : "object", "properties" : { "service_name" : {"type" : "string", "description" : "Nom du service AWS (par exemple, s3, ec2, lambda)" }, "operation_name" : { "type" : "string", "description" : "Nom de l'opération AWS CLI (par exemple, list-buckets, describe-instances)" }, "parameters" : { "type" : "string", "description" : "nom de l'opération AWS CLI" : { "type" : "object", "description" : "Paramètres facultatifs pour la commande AWS CLI", "additionalProperties" : true }, "region" : { "type" : "string", "description" : "Région AWS (par exemple, us-west-2, eu-west-1)" }, "profile_name" : { "type" : "string", "description" : "Nom de profil AWS facultatif" }, "label" : { "type" : "string", "description" : "Étiquette facultative pour l'opération" } }, "required" : ["nom_du_service", "nom_de_l'opération", "région"] } }

📚 Exemples

Répertorier les bacs S3

{"name" : "use_aws", "arguments" : { "service_name" : "s3", "operation_name" : "ls", "region" : "us-west-2" } }

Décrire les instances EC2

{ "name" : "use_aws", "arguments" : { "service_name" : "ec2", "operation_name" : "describe-instances", "region" : "us-west-2", "parameters" : { "instance-ids" : "i-1234567890abcdef0" } } }

Liste des fonctions Lambda avec profil

{ "name" : "use_aws", "arguments" : { "service_name" : "lambda", "operation_name" : "list-functions", "region" : "us-west-2", "profile_name" : "development" } }

🛡️ Caractéristiques de sécurité

Détection des opérations en lecture seule

Le serveur détecte automatiquement les opérations en lecture seule en fonction du préfixe du nom de l'opération :

  • Préfixes en lecture seule: get, describe, list, ls, search, batch_get
  • Opérations d'écriture: Toutes les autres opérations nécessitent l'accord explicite de l'utilisateur

Troncature des sorties

Les sorties volumineuses sont automatiquement tronquées pour éviter les problèmes de mémoire, avec une taille de réponse maximale de 100 Ko.

Développement

Exécution des tests

test de cargaison

🔨 Construire pour le développement

cargo build

Exécution avec journalisation

RUST_LOG=use_aws=debug cargo run

Exemples

# Exécuter la description démo cargo run --example description_demo

Architecture du projet

Le projet est structuré comme suit :

  • src/lib.rs: Bibliothèque de base avec les types et les constantes
  • src/error.rs: Types de gestion des erreurs
  • src/use_aws.rs: Fonctionnalité de base de la CLI AWS (répliquée de l'original)
  • src/mcp_server.rs: Implémentation du serveur MCP
  • src/main.rs: Point d'entrée binaire
  • examples/description_demo.rs: Exemple de description de commande

📦 Dépendances

Si vous n'avez pas Cargo (le gestionnaire de paquets Rust) installé, vous pouvez l'obtenir en installant Rust à l'aide de rustup:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Suivez les instructions à l'écran pour terminer l'installation. Après l'installation, redémarrez votre terminal et assurez-vous que Cargo est disponible en exécutant :

cargo --version

La version de Cargo installée devrait s'afficher.

Ce projet est distribué en tant que crate Rust. Les dépendances suivantes sont gérées automatiquement par Cargo :

  • tokio
  • serde
  • serde_json
  • eyre
  • bstr
  • convert_case
  • async-trait
  • cette erreur
  • traçage
  • traçage-abonnement
  • crossterm

dépendances test/dev :

  • tokio-test

Vous n'avez pas besoin d'installer ces dépendances manuellement ; Cargo s'en chargera lors de l'installation.

licence

MIT, Apache-2.0

🤝 Contribuer

  1. Mettre le dépôt en fourche (Fork)
  2. Créer une branche de fonctionnalités
  3. Effectuez vos modifications
  4. Ajouter des tests
  5. Soumettre une demande d'extraction

🔒 Sécurité

Ce serveur exécute des commandes AWS CLI, qui peuvent avoir des implications en termes de sécurité :

  • S'assurer que les informations d'identification et les autorisations AWS sont correctes
  • Vérifier toutes les commandes avant de les exécuter
  • Utiliser des opérations en lecture seule lorsque c'est possible
  • Envisager l'exécution dans un environnement restreint

🔧 Dépannage

Problèmes courants

  1. AWS CLI introuvable: S'assurer que AWS CLI est installé et qu'il figure dans le PATH
  2. Permission refusée: Vérifiez les informations d'identification et les autorisations AWS
  3. Région non valide: Vérifier que le nom de la région est correct
  4. Erreurs de paramètres: Vérifier les noms et valeurs des paramètres

Mode débogage

Exécuter en mode débogage pour obtenir des informations détaillées :

RUST_LOG=use_aws=debug ./target/release/use_aws

Références

Liés dans Service en nuage - MCP Servers sécurisés

ServeurRésuméActions
Alpha Ticker MCPAucune documentation n'est disponible.Voir
fal-ai/minimax/image-01Un serveur Model Context Protocol (MCP) qui fournit un accès au modèle de génération d'images fal-ai...Voir
AxiomeUne implémentation du serveur Model Context Protocol pour Axiom qui permet aux agents d'intelligence...Voir
GrafanaForked from Grafana MCP serverVoir
CMP MCP ServeurUn serveur MCP (Model Context Protocol) pour l'intégration de l'API CMP (Connectivity Management Pla...Voir
Open-MeteoVoir