M

MCP_GCP_DevOps

@vog01r/MCP_GCP_DevOps
0 Stars 155 次浏览 vog01r 更新于 2026-08-23

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

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

服务介绍

Serveur MCP GCP Infrastructure

Dmonstration vido

Dmonstration du serveur MCP GCP

** Voir la vido complte (898 Ko)**

Dcouvrez comment dployer votre infrastructure GCP en langage naturel avec Claude

Note : Le GIF anim ci-dessus se lance automatiquement. Pour la vido complte avec son, tlchargez le fichier MP4.


Serveur MCP (Model Context Protocol) pour grer l'infrastructure GCP (Google Cloud Platform) en langage naturel via Claude. Ce serveur permet de dployer et grer des machines virtuelles, de grer des cls SSH, et de dployer de l'infrastructure avec Terraform.

** AVERTISSEMENT IMPORTANT - SCURIT**

Ce projet est uniquement but de prsentation des travaux sur l'intelligence artificielle et ne doit PAS tre utilis en production sans modifications de scurit majeures.

** Aucune authentification OAuth n'est implmente** : Le serveur MCP est accessible publiquement sans authentification. Toute personne ayant accs l'URL du serveur peut l'utiliser et potentiellement accder vos ressources GCP.

** Utilisez uniquement dans un environnement de dveloppement isol ou avec des mesures de scurit appropries (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 plutt qu'une adresse IP ou HTTP. Claude ncessite une connexion scurise (HTTPS) pour fonctionner correctement avec les serveurs MCP externes.

Fonctionnalits

Gestion des cls SSH

  • Gnrer des cls SSH : Crer automatiquement une paire de cls SSH (prive/publique)
  • Stocker les cls : Stockage scuris des cls SSH (en mmoire et sur disque dans ~/.ssh_mcp)
  • Lister les cls : Voir toutes les cls SSH disponibles
  • Ajouter des cls existantes : Importer vos propres cls SSH

Gestion des VMs GCP (Compute Engine)

  • Lister les instances : Voir toutes les VMs dans votre projet GCP
  • Crer une instance : Dployer une nouvelle VM avec configuration personnalise
  • Dmarrer/Arrter une instance : Contrler l'tat des VMs
  • Supprimer une instance : Nettoyer les ressources
  • Obtenir les dtails : Voir les informations dtailles d'une VM (IPs, disques, etc.)

Excution SSH distante

  • Excuter des commandes : Lancer des commandes sur les VMs via SSH
  • Upload de fichiers : Transfrer des fichiers vers les VMs via SFTP

Infrastructure as Code avec Terraform

  • Initialiser Terraform : Prparer un projet Terraform
  • Planifier : Voir les changements avant de les appliquer
  • Appliquer : Dployer l'infrastructure
  • Dtruire : Nettoyer les ressources Terraform

Langage naturel

  • Interprtation des requtes en franais pour faciliter l'utilisation

Installation

Prrequis

  • 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 dpt :
git clone <votre-repo>
cd <votre-repo>
  1. Installer les dpendances :
pip3 install -r requirements.txt
  1. Configurer les credentials GCP :

    • Placer votre fichier service-account-key.json dans le rpertoire du projet
    • Assurez-vous que le service account a les permissions ncessaires :
      • Compute Engine Admin
      • Service Account User
  2. (Optionnel) Installer Terraform si vous voulez utiliser les fonctionnalits 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. Redmarrer Nginx :
sudo systemctl restart nginx

Dmarrage du serveur

python3 mcp_server.py

Le serveur dmarrera 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 cls SSH

ssh_generate_key

Gnre une nouvelle paire de cls SSH.

Paramtres :

  • 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 cls SSH disponibles.

ssh_add_key

Ajoute une cl SSH existante.

Paramtres :

  • key_name (requis) : Nom de la cl
  • private_key (requis) : Cl prive au format PEM
  • public_key (requis) : Cl publique
  • description (optionnel) : Description

Gestion des VMs GCP

gcp_list_instances

Liste toutes les instances VM.

Paramtres :

  • zone (optionnel) : Zone GCP (dfaut: us-central1-a)

gcp_create_instance

Cre une nouvelle instance VM.

Paramtres :

  • instance_name (requis) : Nom de l'instance
  • machine_type (optionnel) : Type de machine (dfaut: e2-medium)
  • disk_size_gb (optionnel) : Taille du disque en GB (dfaut: 10)
  • image_family (optionnel) : Famille d'image (dfaut: 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

Dmarre une instance VM.

Paramtres :

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

gcp_stop_instance

Arrte une instance VM.

Paramtres :

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

gcp_delete_instance

Supprime une instance VM.

Paramtres :

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

gcp_get_instance

Obtient les dtails d'une instance.

Paramtres :

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

Excution SSH

ssh_execute

Excute une commande SSH sur une machine distante.

Paramtres :

  • host (requis) : Adresse IP ou hostname
  • username (requis) : Nom d'utilisateur SSH
  • command (requis) : Commande excuter
  • 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.

Paramtres :

  • 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 rpertoire.

Paramtres :

  • working_dir (requis) : Rpertoire de travail Terraform

terraform_plan

Planifie un dploiement Terraform.

Paramtres :

  • working_dir (requis) : Rpertoire de travail Terraform
  • var_file (optionnel) : Fichier de variables

terraform_apply

Applique un dploiement Terraform.

Paramtres :

  • working_dir (requis) : Rpertoire de travail Terraform
  • var_file (optionnel) : Fichier de variables
  • auto_approve (optionnel) : Auto-approuver (dfaut: true)

terraform_destroy

Dtruit l'infrastructure Terraform.

Paramtres :

  • working_dir (requis) : Rpertoire de travail Terraform
  • auto_approve (optionnel) : Auto-approuver (dfaut: true)

Langage naturel

gcp_natural_query

Interprte une requte en langage naturel.

Paramtres :

  • query (requis) : Requte en franais

Exemple :

{
  "query": "Cre une nouvelle VM pour mon serveur web"
}

Exemples d'utilisation avec Claude

Exemple 1 : Crer une VM avec cl SSH

Utilisateur : Je veux crer une VM sur GCP pour hberger un site web

Claude : Je vais vous aider  crer une VM. D'abord, gnrons une cl SSH :
[utilise ssh_generate_key]

Maintenant, crons la VM avec cette cl :
[utilise gcp_create_instance avec la cl SSH]

Votre VM est en cours de cration ! Une fois dmarre, 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 : Dployer avec Terraform

Utilisateur : Dploie l'infrastructure dfinie 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 dploye avec succs !

Architecture

Stockage des cls SSH

Les cls SSH sont stockes de manire scurise :

  • En mmoire : Pour un accs rapide pendant l'excution
  • Sur disque : Dans ~/.ssh_mcp/ avec permissions restrictives (600 pour les cls prives, 644 pour les publiques)

Configuration GCP

  • Projet : level-surfer-473817-p5
  • Zone par dfaut : us-central1-a
  • Credentials : service-account-key.json

Scurit

AVERTISSEMENTS CRITIQUES

Ce serveur MCP n'implmente AUCUNE authentification OAuth ou autre mcanisme de scurit.

Risques de scurit :

  • Accs public non authentifi : Toute personne ayant l'URL peut utiliser votre serveur
  • Exposition des ressources GCP : Accs potentiel vos VMs, cls SSH, et infrastructure
  • Pas de rate limiting : Vulnrable aux attaques par dni de service
  • Pas de logging d'audit : Impossible de tracer qui a utilis le serveur

Recommandations pour la production :

  1. Implmenter OAuth 2.0 ou un autre mcanisme d'authentification
  2. Utiliser HTTPS obligatoire (certificat SSL valide)
  3. Configurer un pare-feu pour limiter l'accs par IP
  4. Ajouter un rate limiting pour prvenir 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 ncessaire

Bonnes pratiques

  1. Cls SSH : Stockes avec permissions restrictives (600)
  2. Service Account : Utilise les credentials GCP avec permissions minimales ncessaires
  3. Cls prives : Jamais exposes dans les rponses de l'API (seules les cls publiques sont retournes)
  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

Dpannage

Le serveur ne dmarre pas

  • Vrifiez que toutes les dpendances sont installes : pip3 install -r requirements.txt
  • Vrifiez que le fichier service-account-key.json existe et est valide

Erreur de connexion GCP

  • Vrifiez que le service account a les bonnes permissions
  • Vrifiez que le projet GCP est correct dans le code (GCP_PROJECT_ID)

Erreur SSH

  • Vrifiez que la cl SSH existe : utilisez ssh_list_keys
  • Vrifiez que la VM a bien la cl publique dans ses mtadonnes
  • Vrifiez que le pare-feu GCP autorise le port SSH (22)

Erreur Terraform

  • Vrifiez que Terraform est install : terraform --version
  • Vrifiez que le rpertoire 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 dpt GitHub est uniquement but de prsentation des travaux sur l'intelligence artificielle.

Ce projet dmontre l'intgration d'un serveur MCP (Model Context Protocol) avec Google Cloud Platform pour permettre Claude (et autres assistants IA) de grer l'infrastructure cloud en langage naturel.

Objectifs pdagogiques :

  • Dmonstration de l'utilisation du protocole MCP
  • Intgration avec les APIs GCP
  • Gestion d'infrastructure via IA conversationnelle
  • Exemples de code pour la communaut

** Ne pas utiliser en production sans modifications de scurit majeures.**

Contribuer

Les contributions sont les bienvenues ! N'hsitez pas ouvrir une issue ou une pull request.

Licence

MIT License

Support

Pour toute question ou problme, ouvrez une issue sur GitHub.

相关 MCP 服务