Provides tools for managing GCP Compute Engine VMs, including creating, starting, stopping, and deleting instances, as well as executing SSH commands and uploading files to VMs.
Enables infrastructure as code management through Terraform commands, including initializing, planning, applying, and destroying infrastructure deployments.
Serveur MCP GCP Infrastructure
🎥 Démonstration vidéo

👉
Découvrez comment déployer votre infrastructure GCP en langage naturel avec Claude
Note : Le GIF animé ci-dessus se lance automatiquement. Pour la vidéo complète avec son, téléchargez le fichier MP4.
Serveur MCP (Model Context Protocol) pour gérer l'infrastructure GCP (Google Cloud Platform) en langage naturel via Claude. Ce serveur permet de déployer et gérer des machines virtuelles, de gérer des clés SSH, et de déployer de l'infrastructure avec Terraform.
⚠️ AVERTISSEMENT IMPORTANT - SÉCURITÉ
Ce projet est uniquement à but de présentation des travaux sur l'intelligence artificielle et ne doit PAS être utilisé en production sans modifications de sécurité majeures.
🔴 Aucune authentification OAuth n'est implémentée : Le serveur MCP est accessible publiquement sans authentification. Toute personne ayant accès à l'URL du serveur peut l'utiliser et potentiellement accéder à vos ressources GCP.
⚠️ Utilisez uniquement dans un environnement de développement isolé ou avec des mesures de sécurité appropriées (pare-feu, authentification, etc.).
📋 Note sur l'utilisation avec Claude
Pour que Claude puisse s'authentifier facilement avec votre serveur MCP, il est fortement recommandé d'utiliser un nom de domaine avec HTTPS plutôt qu'une adresse IP ou HTTP. Claude nécessite une connexion sécurisée (HTTPS) pour fonctionner correctement avec les serveurs MCP externes.
Fonctionnalités
🔑 Gestion des clés SSH
Générer des clés SSH : Créer automatiquement une paire de clés SSH (privée/publique)
Stocker les clés : Stockage sécurisé des clés SSH (en mémoire et sur disque dans
~/.ssh_mcp)Lister les clés : Voir toutes les clés SSH disponibles
Ajouter des clés existantes : Importer vos propres clés SSH
☁️ Gestion des VMs GCP (Compute Engine)
Lister les instances : Voir toutes les VMs dans votre projet GCP
Créer une instance : Déployer une nouvelle VM avec configuration personnalisée
Démarrer/Arrêter une instance : Contrôler l'état des VMs
Supprimer une instance : Nettoyer les ressources
Obtenir les détails : Voir les informations détaillées d'une VM (IPs, disques, etc.)
🔐 Exécution SSH distante
Exécuter des commandes : Lancer des commandes sur les VMs via SSH
Upload de fichiers : Transférer des fichiers vers les VMs via SFTP
🏗️ Infrastructure as Code avec Terraform
Initialiser Terraform : Préparer un projet Terraform
Planifier : Voir les changements avant de les appliquer
Appliquer : Déployer l'infrastructure
Détruire : Nettoyer les ressources Terraform
💬 Langage naturel
Interprétation des requêtes en français pour faciliter l'utilisation
Installation
Prérequis
Python 3.8+
Compte GCP avec un projet configuré
Fichier de clé de service GCP (service-account-key.json)
Nom de domaine avec certificat SSL/TLS (recommandé pour l'utilisation avec Claude)
Reverse proxy (Nginx/Apache) avec HTTPS configuré (recommandé)
Étapes d'installation
Cloner le dépôt :
Installer les dépendances :
Configurer les credentials GCP :
Placer votre fichier
service-account-key.jsondans le répertoire du projetAssurez-vous que le service account a les permissions nécessaires :
Compute Engine Admin
Service Account User
(Optionnel) Installer Terraform si vous voulez utiliser les fonctionnalités Terraform :
Utilisation
Configuration HTTPS avec nom de domaine (Recommandé)
Pour que Claude puisse s'authentifier facilement, configurez votre serveur avec HTTPS et un nom de domaine :
Obtenir un certificat SSL (Let's Encrypt recommandé) :
Configurer Nginx comme reverse proxy :
Redémarrer Nginx :
Démarrage du serveur
Le serveur démarrera sur http://0.0.0.0:5001 (utilisez HTTPS via le reverse proxy pour la production)
Configuration dans Claude Desktop
Pour utiliser le serveur MCP avec Claude via HTTPS, configurez l'URL de votre serveur :
Note : Utilisez votre nom de domaine avec HTTPS (ex: https://mcp.votre-domaine.com) pour que Claude puisse s'authentifier correctement.
Pour une utilisation locale uniquement, vous pouvez aussi utiliser la commande directe :
Outils disponibles
Gestion des clés SSH
ssh_generate_key
Génère une nouvelle paire de clés SSH.
Paramètres :
key_name(requis) : Nom de la clédescription(optionnel) : Description de la clé
Exemple :
ssh_list_keys
Liste toutes les clés SSH disponibles.
ssh_add_key
Ajoute une clé SSH existante.
Paramètres :
key_name(requis) : Nom de la cléprivate_key(requis) : Clé privée au format PEMpublic_key(requis) : Clé publiquedescription(optionnel) : Description
Gestion des VMs GCP
gcp_list_instances
Liste toutes les instances VM.
Paramètres :
zone(optionnel) : Zone GCP (défaut: us-central1-a)
gcp_create_instance
Crée une nouvelle instance VM.
Paramètres :
instance_name(requis) : Nom de l'instancemachine_type(optionnel) : Type de machine (défaut: e2-medium)disk_size_gb(optionnel) : Taille du disque en GB (défaut: 10)image_family(optionnel) : Famille d'image (défaut: debian-11)ssh_key_name(optionnel) : Nom de la clé SSH à utiliser
Exemple :
gcp_start_instance
Démarre une instance VM.
Paramètres :
instance_name(requis) : Nom de l'instancezone(optionnel) : Zone GCP
gcp_stop_instance
Arrête une instance VM.
Paramètres :
instance_name(requis) : Nom de l'instancezone(optionnel) : Zone GCP
gcp_delete_instance
Supprime une instance VM.
Paramètres :
instance_name(requis) : Nom de l'instancezone(optionnel) : Zone GCP
gcp_get_instance
Obtient les détails d'une instance.
Paramètres :
instance_name(requis) : Nom de l'instancezone(optionnel) : Zone GCP
Exécution SSH
ssh_execute
Exécute une commande SSH sur une machine distante.
Paramètres :
host(requis) : Adresse IP ou hostnameusername(requis) : Nom d'utilisateur SSHcommand(requis) : Commande à exécuterssh_key_name(requis) : Nom de la clé SSH à utiliser
Exemple :
ssh_upload_file
Upload un fichier via SSH.
Paramètres :
host(requis) : Adresse IP ou hostnameusername(requis) : Nom d'utilisateur SSHlocal_path(requis) : Chemin local du fichierremote_path(requis) : Chemin distant du fichierssh_key_name(requis) : Nom de la clé SSH à utiliser
Terraform
terraform_init
Initialise Terraform dans un répertoire.
Paramètres :
working_dir(requis) : Répertoire de travail Terraform
terraform_plan
Planifie un déploiement Terraform.
Paramètres :
working_dir(requis) : Répertoire de travail Terraformvar_file(optionnel) : Fichier de variables
terraform_apply
Applique un déploiement Terraform.
Paramètres :
working_dir(requis) : Répertoire de travail Terraformvar_file(optionnel) : Fichier de variablesauto_approve(optionnel) : Auto-approuver (défaut: true)
terraform_destroy
Détruit l'infrastructure Terraform.
Paramètres :
working_dir(requis) : Répertoire de travail Terraformauto_approve(optionnel) : Auto-approuver (défaut: true)
Langage naturel
gcp_natural_query
Interprète une requête en langage naturel.
Paramètres :
query(requis) : Requête en français
Exemple :
Exemples d'utilisation avec Claude
Exemple 1 : Créer une VM avec clé SSH
Exemple 2 : Installer un logiciel sur une VM
Exemple 3 : Déployer avec Terraform
Architecture
Stockage des clés SSH
Les clés SSH sont stockées de manière sécurisée :
En mémoire : Pour un accès rapide pendant l'exécution
Sur disque : Dans
~/.ssh_mcp/avec permissions restrictives (600 pour les clés privées, 644 pour les publiques)
Configuration GCP
Projet : level-surfer-473817-p5
Zone par défaut : us-central1-a
Credentials : service-account-key.json
Sécurité
⚠️ AVERTISSEMENTS CRITIQUES
Ce serveur MCP n'implémente AUCUNE authentification OAuth ou autre mécanisme de sécurité.
Risques de sécurité :
🔴 Accès public non authentifié : Toute personne ayant l'URL peut utiliser votre serveur
🔴 Exposition des ressources GCP : Accès potentiel à vos VMs, clés SSH, et infrastructure
🔴 Pas de rate limiting : Vulnérable aux attaques par déni de service
🔴 Pas de logging d'audit : Impossible de tracer qui a utilisé le serveur
Recommandations pour la production :
✅ Implémenter OAuth 2.0 ou un autre mécanisme d'authentification
✅ Utiliser HTTPS obligatoire (certificat SSL valide)
✅ Configurer un pare-feu pour limiter l'accès par IP
✅ Ajouter un rate limiting pour prévenir les abus
✅ Activer les logs d'audit pour tracer toutes les actions
✅ Utiliser un reverse proxy (Nginx/Traefik) avec authentification
✅ Restreindre les permissions GCP au strict minimum nécessaire
Bonnes pratiques
Clés SSH : Stockées avec permissions restrictives (600)
Service Account : Utilise les credentials GCP avec permissions minimales nécessaires
Clés privées : Jamais exposées dans les réponses de l'API (seules les clés publiques sont retournées)
HTTPS obligatoire : Utilisez toujours HTTPS en production, jamais HTTP
Nom de domaine : Utilisez un nom de domaine valide avec certificat SSL pour Claude
Permissions GCP requises
Le service account doit avoir au minimum :
roles/compute.instanceAdmin.v1roles/iam.serviceAccountUser
Dépannage
Le serveur ne démarre pas
Vérifiez que toutes les dépendances sont installées :
pip3 install -r requirements.txtVérifiez que le fichier
service-account-key.jsonexiste et est valide
Erreur de connexion GCP
Vérifiez que le service account a les bonnes permissions
Vérifiez que le projet GCP est correct dans le code (
GCP_PROJECT_ID)
Erreur SSH
Vérifiez que la clé SSH existe : utilisez
ssh_list_keysVérifiez que la VM a bien la clé publique dans ses métadonnées
Vérifiez que le pare-feu GCP autorise le port SSH (22)
Erreur Terraform
Vérifiez que Terraform est installé :
terraform --versionVérifiez que le répertoire de travail contient des fichiers Terraform valides
API Reference
Endpoints REST
GET /
Informations sur le serveur
GET /health
Health check du serveur
POST /mcp
Endpoint principal MCP (JSON-RPC 2.0)
À propos de ce projet
Ce dépôt GitHub est uniquement à but de présentation des travaux sur l'intelligence artificielle.
Ce projet démontre l'intégration d'un serveur MCP (Model Context Protocol) avec Google Cloud Platform pour permettre à Claude (et autres assistants IA) de gérer l'infrastructure cloud en langage naturel.
Objectifs pédagogiques :
Démonstration de l'utilisation du protocole MCP
Intégration avec les APIs GCP
Gestion d'infrastructure via IA conversationnelle
Exemples de code pour la communauté
⚠️ Ne pas utiliser en production sans modifications de sécurité majeures.
Contribuer
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
Licence
MIT License
Support
Pour toute question ou problème, ouvrez une issue sur GitHub.
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Enables managing Google Cloud Platform infrastructure through natural language, including VM deployment, SSH key management, remote command execution, and Terraform infrastructure-as-code operations.