MCP_GCP_DevOps
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

** 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
- Cloner le dpt :
git clone <votre-repo>
cd <votre-repo>
- Installer les dpendances :
pip3 install -r requirements.txt
-
Configurer les credentials GCP :
- Placer votre fichier
service-account-key.jsondans le rpertoire du projet - Assurez-vous que le service account a les permissions ncessaires :
- Compute Engine Admin
- Service Account User
- Placer votre fichier
-
(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 :
- Obtenir un certificat SSL (Let's Encrypt recommand) :
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d votre-domaine.com
- 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;
}
}
- 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 cldescription(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 clprivate_key(requis) : Cl prive au format PEMpublic_key(requis) : Cl publiquedescription(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'instancemachine_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'instancezone(optionnel) : Zone GCP
gcp_stop_instance
Arrte une instance VM.
Paramtres :
instance_name(requis) : Nom de l'instancezone(optionnel) : Zone GCP
gcp_delete_instance
Supprime une instance VM.
Paramtres :
instance_name(requis) : Nom de l'instancezone(optionnel) : Zone GCP
gcp_get_instance
Obtient les dtails d'une instance.
Paramtres :
instance_name(requis) : Nom de l'instancezone(optionnel) : Zone GCP
Excution SSH
ssh_execute
Excute une commande SSH sur une machine distante.
Paramtres :
host(requis) : Adresse IP ou hostnameusername(requis) : Nom d'utilisateur SSHcommand(requis) : Commande excuterssh_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 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 rpertoire.
Paramtres :
working_dir(requis) : Rpertoire de travail Terraform
terraform_plan
Planifie un dploiement Terraform.
Paramtres :
working_dir(requis) : Rpertoire de travail Terraformvar_file(optionnel) : Fichier de variables
terraform_apply
Applique un dploiement Terraform.
Paramtres :
working_dir(requis) : Rpertoire de travail Terraformvar_file(optionnel) : Fichier de variablesauto_approve(optionnel) : Auto-approuver (dfaut: true)
terraform_destroy
Dtruit l'infrastructure Terraform.
Paramtres :
working_dir(requis) : Rpertoire de travail Terraformauto_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 :
- Implmenter OAuth 2.0 ou un autre mcanisme d'authentification
- Utiliser HTTPS obligatoire (certificat SSL valide)
- Configurer un pare-feu pour limiter l'accs par IP
- Ajouter un rate limiting pour prvenir 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 ncessaire
Bonnes pratiques
- Cls SSH : Stockes avec permissions restrictives (600)
- Service Account : Utilise les credentials GCP avec permissions minimales ncessaires
- Cls prives : Jamais exposes dans les rponses de l'API (seules les cls publiques sont retournes)
- 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
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.jsonexiste 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.