MCP GCP DevOps

MCP GCP DevOps

Enables managing Google Cloud Platform infrastructure through natural language, including VM deployment, SSH key management, remote command execution, and Terraform infrastructure-as-code operations.

Category
Visit Server

README

Serveur MCP GCP Infrastructure

đŸŽ„ DĂ©monstration vidĂ©o

<div align="center">

Démonstration du serveur MCP GCP

👉 Voir la vidĂ©o complĂšte (898 Ko)

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.

</div>


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

  1. Cloner le dépÎt :
git clone <votre-repo>
cd <votre-repo>
  1. Installer les dépendances :
pip3 install -r requirements.txt
  1. Configurer les credentials GCP :

    • Placer votre fichier service-account-key.json dans le rĂ©pertoire du projet
    • Assurez-vous que le service account a les permissions nĂ©cessaires :
      • Compute Engine Admin
      • Service Account User
  2. (Optionnel) Installer Terraform si vous voulez utiliser les fonctionnalités Terraform :

# Ubuntu/Debian
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install 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 :

  1. Obtenir un certificat SSL (Let's Encrypt recommandé) :
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d votre-domaine.com
  1. Configurer Nginx comme reverse proxy :
server {
    listen 443 ssl;
    server_name votre-domaine.com;

    ssl_certificate /etc/letsencrypt/live/votre-domaine.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/votre-domaine.com/privkey.pem;

    location / {
        proxy_pass http://localhost:5001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  1. Redémarrer Nginx :
sudo systemctl restart nginx

Démarrage du serveur

python3 mcp_server.py

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 :

{
  "mcpServers": {
    "gcp-infrastructure": {
      "url": "https://votre-domaine.com",
      "headers": {
        "Content-Type": "application/json"
      }
    }
  }
}

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 :

{
  "mcpServers": {
    "gcp-infrastructure": {
      "command": "python3",
      "args": ["/opt/git/mcp_server.py"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/opt/git/service-account-key.json"
      }
    }
  }
}

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 :

{
  "key_name": "ma-cle-vm",
  "description": "Clé pour mes VMs GCP"
}

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 PEM
  • public_key (requis) : ClĂ© publique
  • description (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'instance
  • machine_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 :

{
  "instance_name": "mon-serveur-web",
  "machine_type": "e2-medium",
  "disk_size_gb": 20,
  "image_family": "debian-11",
  "ssh_key_name": "ma-cle-vm"
}

gcp_start_instance

Démarre une instance VM.

ParamĂštres :

  • instance_name (requis) : Nom de l'instance
  • zone (optionnel) : Zone GCP

gcp_stop_instance

ArrĂȘte une instance VM.

ParamĂštres :

  • instance_name (requis) : Nom de l'instance
  • zone (optionnel) : Zone GCP

gcp_delete_instance

Supprime une instance VM.

ParamĂštres :

  • instance_name (requis) : Nom de l'instance
  • zone (optionnel) : Zone GCP

gcp_get_instance

Obtient les détails d'une instance.

ParamĂštres :

  • instance_name (requis) : Nom de l'instance
  • zone (optionnel) : Zone GCP

Exécution SSH

ssh_execute

Exécute une commande SSH sur une machine distante.

ParamĂštres :

  • host (requis) : Adresse IP ou hostname
  • username (requis) : Nom d'utilisateur SSH
  • command (requis) : Commande Ă  exĂ©cuter
  • ssh_key_name (requis) : Nom de la clĂ© SSH Ă  utiliser

Exemple :

{
  "host": "35.123.45.67",
  "username": "debian",
  "command": "sudo apt update && sudo apt install -y nginx",
  "ssh_key_name": "ma-cle-vm"
}

ssh_upload_file

Upload un fichier via SSH.

ParamĂštres :

  • host (requis) : Adresse IP ou hostname
  • username (requis) : Nom d'utilisateur SSH
  • local_path (requis) : Chemin local du fichier
  • remote_path (requis) : Chemin distant du fichier
  • ssh_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 Terraform
  • var_file (optionnel) : Fichier de variables

terraform_apply

Applique un déploiement Terraform.

ParamĂštres :

  • working_dir (requis) : RĂ©pertoire de travail Terraform
  • var_file (optionnel) : Fichier de variables
  • auto_approve (optionnel) : Auto-approuver (dĂ©faut: true)

terraform_destroy

Détruit l'infrastructure Terraform.

ParamĂštres :

  • working_dir (requis) : RĂ©pertoire de travail Terraform
  • auto_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 :

{
  "query": "Crée une nouvelle VM pour mon serveur web"
}

Exemples d'utilisation avec Claude

Exemple 1 : Créer une VM avec clé SSH

Utilisateur : Je veux créer une VM sur GCP pour héberger un site web

Claude : Je vais vous aider à créer une VM. D'abord, générons une clé SSH :
[utilise ssh_generate_key]

Maintenant, créons la VM avec cette clé :
[utilise gcp_create_instance avec la clé SSH]

Votre VM est en cours de création ! Une fois démarrée, vous pourrez vous y connecter.

Exemple 2 : Installer un logiciel sur une VM

Utilisateur : Installe nginx sur ma VM "mon-serveur-web"

Claude : Je vais d'abord obtenir l'adresse IP de votre VM :
[utilise gcp_get_instance]

Maintenant j'installe nginx via SSH :
[utilise ssh_execute avec la commande d'installation]

Nginx est maintenant installé sur votre VM !

Exemple 3 : Déployer avec Terraform

Utilisateur : Déploie l'infrastructure définie dans /opt/terraform/infrastructure

Claude : Je vais initialiser Terraform :
[utilise terraform_init]

Voyons ce qui va ĂȘtre créé :
[utilise terraform_plan]

Tout semble correct. J'applique maintenant :
[utilise terraform_apply]

Infrastructure déployée avec succÚs !

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 :

  1. ✅ ImplĂ©menter OAuth 2.0 ou un autre mĂ©canisme d'authentification
  2. ✅ Utiliser HTTPS obligatoire (certificat SSL valide)
  3. ✅ Configurer un pare-feu pour limiter l'accùs par IP
  4. ✅ Ajouter un rate limiting pour prĂ©venir les abus
  5. ✅ Activer les logs d'audit pour tracer toutes les actions
  6. ✅ Utiliser un reverse proxy (Nginx/Traefik) avec authentification
  7. ✅ Restreindre les permissions GCP au strict minimum nĂ©cessaire

Bonnes pratiques

  1. Clés SSH : Stockées avec permissions restrictives (600)
  2. Service Account : Utilise les credentials GCP avec permissions minimales nécessaires
  3. Clés privées : Jamais exposées dans les réponses de l'API (seules les clés publiques sont retournées)
  4. HTTPS obligatoire : Utilisez toujours HTTPS en production, jamais HTTP
  5. 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.v1
  • roles/iam.serviceAccountUser

Dépannage

Le serveur ne démarre pas

  • VĂ©rifiez que toutes les dĂ©pendances sont installĂ©es : pip3 install -r requirements.txt
  • VĂ©rifiez que le fichier service-account-key.json existe 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_keys
  • VĂ©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 --version
  • VĂ©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.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured