2026 exploitationOpenClawMCPstdiogateway

2026 OpenClaw MCP exploitation : fuites de processus stdio, limites HTTP MCP, redémarrage passerelle et échelle doctor

Sur un VPS ou un Mac distant, plusieurs serveurs MCP stdio semblent anodins jusqu’à ce que ps montre une forêt de processus node et npx sous openclaw-gateway et que la RSS monte à chaque tour de conversation. Vider mcp.servers puis recharger à chaud ne garantit pas la fin des anciens enfants. À part, des MCP HTTP avec seulement un champ url peuvent journaliser stdio seulement pris en charge : c’est une frontière de transport, pas un caprice. Ce guide suit la même échelle que notre article passerelle, doctor et canaux, relie plugins MCP, mise à jour et retour arrière, reverse proxy Nginx/Caddy et comparaison des chemins d’installation, puis conclut sur le Mac distant hébergé pour les équipes qui livrent des binaires via SFTP tout en faisant tourner une passerelle IA.

OpenClawMCPstdiogatewaydoctorMac distant
Passerelle OpenClaw sur Mac distant charge des outils MCP via stdio

Synthèse : traiter MCP comme une flotte de processus

Chaque serveur MCP stdio est un processus enfant avec sa propre mémoire, ses descripteurs de fichiers et ses hooks de cycle de vie. Lorsque la passerelle relance des serveurs à chaque rafraîchissement d’outils ou que les modèles bouclent en retry, la consommation dépend du nombre de sessions, de la parallélisation des canaux et des changements de routage, pas seulement de la longueur de contexte. Les équipes qui ajoutent cinq MCP sans mesurer le nombre d’enfants voient souvent la pression de swap avant la cause racine.

Le rechargement à chaud est pratique mais incomplet lorsque d’anciens arbres stdio ne sont pas récoltés. Le remède opérationnel est un redémarrage à froid : arrêter le service passerelle, vérifier la disparition des PID enfants, puis relancer avec une carte mcp.servers réduite. Documentez-le dans le runbook pour éviter l’illusion que le JSON seul reflète l’état runtime.

Les attentes HTTP MCP doivent suivre les notes de version. Si le client ne câble que stdio, les entrées url sont ignorées avec des journaux explicites. Les stratégies de contournement incluent des wrappers locaux soumis à revue sécurité ou la suppression temporaire des entrées non prises en charge pour stabiliser la production.

Séparez la mémoire en pics liée au contexte de la mémoire monotone due aux fuites. La première suit la charge de tokens ; la seconde suit la longueur de la liste de processus. Tracer les deux évite un auto-scaling mal réglé.

Les reverse proxies qui terminent TLS peuvent amplifier le churn MCP lorsque les flux WebSocket ou RPC se reconnectent souvent. Chaque reconnexion peut relancer des chemins de découverte. Ajustez les timeouts avec le guide reverse proxy avant d’accuser les auteurs MCP.

Unifiez les binaires CLI et service. Un openclaw npm global à côté d’une passerelle conteneurisée invite à la dérive de version où doctor reste vert mais le comportement diverge. Le guide d’installation montre comment épingler un chemin unique.

Publiez un budget MCP par environnement, comme pour les sessions SSH, afin d’empiler des serveurs expérimentaux sur la production sans revue. Ajoutez des lint CI sur openclaw.json bloquant les noms inattendus avant fusion.

Lors d’incidents pendant des pannes amont, capturez toujours le nombre d’enfants. Les échecs mixtes sont fréquents : erreurs API partielles relancent la découverte d’outils et gonflent les taux de spawn même si le modèle est malade. Deux graphiques évitent les accusations erronées.

La dette documentaire freine l’adoption MCP : si une seule personne connaît le script wrapper qui épingle Node, les vacances deviennent incidents. Versionnez les scripts et référencez-les dans les commentaires de configuration.

Pour la conformité RGPD, listez quels MCP peuvent toucher des données personnelles et synchronisez les DPIA avec mcp.servers réel. Un écart policy/runtime est un finding d’audit.

Points de douleur

Enfants stdio qui fuient. Symptômes : croissance des node, lignes bundle répétées, RSS qui ne se stabilise pas. Mitigation : mises à jour, listes plus courtes, redémarrages à froid.

Lacunes du rechargement à chaud. Modifier le JSON pendant d’anciens groupes de sous-processus crée une incohérence entre doctor et ps. Redémarrez après des changements MCP substantiels.

Serveurs HTTP ignorés. Perçu comme configuration cassée alors que c’est une capacité manquante. Validez contre la documentation.

Flaps de canaux déguisés en bugs MCP. Déconnexions Telegram/Slack bouclent et ressemblent à des échecs MCP dans des journaux bruts. Utilisez les sondes de canaux après les vérifications passerelle.

Plans VPS sous-dimensionnés. OpenClaw avec plusieurs MCP et des tâches cron sur deux gigaoctets est fragile. Dimensionnez avant le tuning noyau exotique.

Matrice de décision

SignalHypothèseActionGuide
RSS et nombre d’enfants montent ensemblefuite stdioconsolider serveurs, redémarrage à froid, patchMCP mise à jour
skipped server httplacune transportwrapper stdio ou retirer urlInstallation
doctor propre mais utilisateurs coupéstimers proxyajuster WebSocket et timeoutsReverse proxy
clés de config inconnuesdérive schémalire les notes de versionRollback
alertes disqueexplosion de logsrotation, agrandir le disquePasserelle

Réduisez toujours les pièces mobiles avant de tourner des drapeaux avancés. La simplicité bat la sophistication en astreinte.

Squelette de commandes

openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
openclaw channels status --probe
ps aux | rg -i 'openclaw|mcp|npx' || true
openclaw gateway restart
# Si insuffisant : systemctl restart openclaw-gateway
# ou docker compose restart selon la doc d’install

Masquez les secrets de l’historique shell en production. Désactiver l’historique temporairement seulement avec validation sécurité.

Observabilité

Exportez RSS, nombre d’enfants, descripteurs ouverts, charge moyenne, espace libre. Corrélez avec le volume de conversation. Alertez lorsque le nombre d’enfants dépasse une baseline issue du produit MCP actifs fois sessions actives.

Les journaux structurés doivent nommer les serveurs MCP au spawn et à la sortie. Absence de lignes de sortie avec croissance signale des fuites. Croisez avec les traces proxy lorsque TLS se termine en amont.

Planifiez la capacité Mac distant ou VPS avec marge pour les charges adjacentes à la notarisation si le même hôte déplace de gros artefacts. La pression disque casse la rotation et amplifie l’instabilité.

Documentez les fenêtres de redémarrage attendues après modifications MCP pour que le changement anticipe de brèves indisponibilités.

Revoyez chaque trimestre quels MCP restent critiques métier. Désactivez les expériences laissées allumées.

Exportez les tableaux de bord en PDF mensuel pour les archives conformité ; joignez les pics d’enfants aux tags de release.

Formez l’astreinte à distinguer redémarrage de pod Kubernetes et gateway restart applicatif lorsque des conteneurs encapsulent la passerelle.

Pour des Mac mini bare metal servant build et passerelle, croisez température et ventilateurs avec CPU pour détecter le throttling estival ralentissant les spawns.

Surveillez aussi les inodes sur les partitions cache npm : leur épuisement casse les upgrades avant la RAM.

Glossaire étendu

Transport stdio : le client MCP lance un sous-processus et parle JSON-RPC sur stdin/stdout.

MCP HTTP : configuration pointant vers HTTP/SSE distants sans wrapper local.

Passerelle : processus OpenClaw longue durée exposant RPC et ponts de canaux.

Rechargement à chaud : applique la config sans quitter entièrement le processus ; couverture MCP variable.

Redémarrage à froid : arrêt complet avant nouveau démarrage.

Fuite d’enfants : serveurs MCP survivant aux sessions qui les ont demandés.

Énumération d’outils : découverte des fonctions appelables, dont celles fournies par MCP.

Sonde de canal : test actif des intégrations de messagerie.

doctor : balaie config et environnement pour pièges connus.

Notes de version : documentent transports et migrations de schéma.

Binaire wrapper : adapte des protocoles distants aux attentes stdio.

Rayon d’explosion : utilisateurs impactés par un mauvais déploiement passerelle.

Isolation de session : limite les fuites de contexte entre automatisations.

Sonde RPC : vérifie l’accès client au plan de contrôle passerelle.

Unité systemd : gère les redémarrages de service sous Linux.

Docker Compose : peut exécuter la passerelle dans des conteneurs aux volumes distincts.

Mac distant : hôte macOS Apple Silicon ou Intel via SSH/VNC pour builds et automation.

Mac distant hébergé : location gérée regroupant matériel, réseau et support.

npx : télécharge des toolchains éphémères et multiplie les processus si invoqué chaque tour.

Épuisement de descripteurs : trop de sockets/pipes ouverts par fuites ou forte concurrence.

Rotation des logs : évite le disque plein quand le debug MCP est temporairement verbeux.

Terminaison TLS : nginx/caddy doit relayer correctement Upgrade WebSocket vers la passerelle.

Origines autorisées : contrôle clients navigateur/HTTP selon guides de durcissement.

Budget de concurrence : plafonne les jobs parallèles pour protéger le CPU passerelle.

Chronologie d’incident : ordonne changements MCP, redémarrages passerelle, edits proxy.

Instantané de rollback : sauvegarde openclaw.json avant edits risqués.

Triage support : sépare pannes modèle et problèmes processus passerelle via l’échelle.

Groupe de processus : ensemble POSIX devant recevoir des signaux coordonnés lors du recycle.

Tueur OOM : sur Linux termine les gros consommateurs ; les fuites MCP accélèrent l’événement.

Plafonds mémoire cgroup : dans les conteneurs, échecs d’allocation silencieux pour les enfants.

Cardinalité télémétrie : reste maîtrisable avec des labels MCP standardisés.

Fenêtres de changement : planifient redémarrages à froid quand le trafic messagerie est bas.

Parité staging : exige mêmes nombres et tailles MCP que la production pour reproduire les fuites.

Déploiement canary : fraction de trafic vers une nouvelle build en surveillant les compteurs d’enfants.

Modèle post-mortem : joint courbes RSS, enfants, espace libre et diffs de config.

Hygiène des secrets : évite les clés API dans argv MCP visibles dans les listings processus.

Temps volé CPU : sur petits VPS bruyants, allonge la latence de spawn.

Épuisement d’inodes : caches npm peuvent bloquer les upgrades avant la RAM.

Dégradation gracieuse : désactive d’abord les MCP non essentiels lors d’alertes mémoire.

Répétition de runbook : trimestrielle, chronométrée en staging pour valider systemd/compose/plist.

Coordination éditeur : abonnez-vous aux correctifs upstream MCP plutôt que figer d’anciens tarballs.

Modèles de communication : expliquent brièvement les fenêtres de maintenance pour réduire les doublons tickets.

Policy-as-code : liste blanche MCP versionnée dans Git mesurée à chaque déploiement.

Moindre privilège pour comptes de service limitant la lecture disque si un outil est compromis.

Segmentation réseau : isole la passerelle des bases sensibles via bonds explicites.

Limites de débit sur appels d’outils atténuent les tempêtes de retry gonflant les spawns.

Contre-pression signale aux modèles de ralentir quand les enfants augmentent.

Signaux dorés : latence, trafic, erreurs, saturation ; ajoutez le nombre d’enfants comme cinquième signal.

Budgets SLO : incluent explicitement les redémarrages planifiés après edits MCP.

Dérive de configuration entre GitOps et conteneur si les montages ne suivent pas.

Infrastructure immuable : reconstruire plutôt que patcher à chaud réduit les processus mi-vie.

Déploiements bleu/vert : changent le graphe d’enfants sans chevauchement fuyant si l’ancienne instance est tuée durement.

Service mesh optionnel : sidecars mTLS mais complexité accrue pour petites équipes.

mTLS interne protège wrappers HTTP contre mouvements latéraux.

Défense SSRF du guide passerelle production s’applique aussi quand HTTP MCP arrive.

Résidence des données peut interdire certaines routes wrapper ; documentez-les.

Journaux d’audit des appels d’outils aident à voir quels MCP ont participé à l’incident.

Politiques de rétention équilibrent RGPD et besoins de debug.

Redaction PII dans logs empêche les wrappers stdio d’exposer des données personnelles.

Épinglage de dépendances Node dans commandes MCP évite upgrades silencieux introduisant fuites.

Chaîne d’approvisionnement : revues obligatoires pour MCP basés sur npx en secteurs réglementés.

Chaos engineering en staging tue la passerelle pour vérifier la disparition des enfants.

Game days valident runbooks sous pression avec ops et dev.

Rapports exécutifs corrélationnent pics d’enfants avec tickets support pour l’impact business.

FinOps compare coût RAM vs temps ingénieur ; les correctifs gagnent souvent.

Santé astreinte s’améliore quand alertes utilisent enfants et pas seulement CPU.

Propriété documentation assigne un ingénieur responsable par MCP.

Avis de dépréciation communiquent tôt le retrait de serveurs pour laisser le temps d’alternatives.

Rotation des connaissances garantit plusieurs experts passerelle/MCP.

Saisonnalité support : fêtes augmentent trafic chat et charge MCP prévisible.

Tampons capacité au-delà des pics type Black Friday évitent pages pour petites fuites.

Liens runbook dans PagerDuty pointent vers cette échelle de diagnostic.

Registre dette technique trace fuites MCP connues jusqu’au patch.

Scoring risque pondère classes de données, exposition et complexité MCP.

Tests de contrôle trimestriels confirment que runbooks restent exécutables.

SLA fournisseurs hébergement doivent citer disponibilité et délais de réponse support.

Plan de sortie décrit désactivation MCP sans perte de données.

Base de connaissances interne relie chemins wrappers, pas seulement docs externes.

Recherche logs via champs structurés accélère root-cause post-release.

Tests de régression MCP mesurent enfants avant/après scripts de conversation.

Tests de charge avec chats synthétiques révèlent tempêtes de spawn avant utilisateurs.

Profilage passerelle montre si CPU part dans parsing JSON ou gestion des enfants.

Cartes mémoire distinguent fuites passerelle vs enfants.

Paramètres noyau rarement premier levier contre fuites ; hygiène processus d’abord.

Limites conteneur protègent voisins sans casser spawns légitimes.

cgroup v2 améliore comptabilité ressources sur Linux moderne.

Watchdog systemd peut relancer passerelles bloquées mais ne remplace pas correctif fuite.

Endpoints santé peuvent exposer RPC et comptes d’enfants si sécurisés.

Feature flags désactivent MCP risqués pendant canary.

Lancements sombres testent nouveaux MCP en staging avec données masquées.

Monitoring synthétique externe vérifie TLS/WebSocket, pas seulement doctor vert interne.

Empathie client exige pages de statut claires lors de redémarrages nécessaires.

Empathie ingénieur exige runbooks sans sudo implicite.

Empathie sécurité exige pas de secrets collés dans tickets.

Vision long terme : MCP comme tout autre démon — config versionnée, enfants mesurés, redémarrages bornés, owners qui lisent les notes de version.

FAQ et Mac distant hébergé

Dix MCP pour la complétude ?

Non. Commencez par le plus petit ensemble critique, mesurez, ajoutez avec intention.

Kubernetes change-t-il la donne ?

Les redémarrages de pods aident mais exigent toujours la compréhension des sous-processus stdio dans le conteneur.

Lien avec sessions_spawn ?

Cet article couvre permissions sous-agents ; celui-ci couvre processus OS et transports.

Logs MCP en debug pour toujours ?

Non, verbose multiplie IO disque ; revenez à info après diagnostic.

Résumé : exploitez MCP comme flotte supervisée, alignez transports et docs, redémarrez à froid quand le reload échoue.

Limites : hôtes DIY empilent correctifs, disques, proxies et surveillance. SFTPMAC Mac distant hébergé package disponibilité compatible Apple avec entrée SFTP pour équipes livrant binaires et automation IA.

À long terme, la discipline bat les bricolages de week-end d’incident.

Consultez les offres pour passerelles Mac distants stables et livraison de fichiers.