<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: fkom13</title>
    <description>The latest articles on Forem by fkom13 (@fkom13).</description>
    <link>https://forem.com/fkom13</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3612115%2Fb9839e91-83b8-4ce0-8b7d-417d5f8c7594.png</url>
      <title>Forem: fkom13</title>
      <link>https://forem.com/fkom13</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/fkom13"/>
    <language>en</language>
    <item>
      <title>Comment piloter votre coffre-fort Vaultwarden avec une IA (ou un simple script)</title>
      <dc:creator>fkom13</dc:creator>
      <pubDate>Sat, 15 Nov 2025 08:30:37 +0000</pubDate>
      <link>https://forem.com/fkom13/comment-piloter-votre-coffre-fort-vaultwarden-avec-une-ia-ou-un-simple-script-dc6</link>
      <guid>https://forem.com/fkom13/comment-piloter-votre-coffre-fort-vaultwarden-avec-une-ia-ou-un-simple-script-dc6</guid>
      <description>&lt;p&gt;Si vous auto-hébergez vos mots de passe avec Vaultwarden, vous savez que c'est une solution fantastique. Mais avez-vous déjà essayé de l'automatiser ? D'y accéder depuis un script ou, encore plus fou, de demander à une IA de récupérer un mot de passe pour vous ?&lt;/p&gt;

&lt;p&gt;C'est compliqué. La CLI officielle de Bitwarden (&lt;code&gt;bw&lt;/code&gt;) n'est pas conçue pour une utilisation non-interactive. Il faut gérer des clés de session, des déverrouillages manuels...&lt;/p&gt;

&lt;p&gt;Pour résoudre ce problème, nous publions &lt;strong&gt;mcp-vaultwarden-server&lt;/strong&gt;, un petit serveur open-source qui sert de pont sécurisé entre vos scripts (ou votre IA) et votre instance Vaultwarden.&lt;/p&gt;

&lt;h2&gt;
  
  
  La Solution : Un "Traducteur" pour Vaultwarden
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;mcp-vaultwarden-server&lt;/code&gt; est un serveur léger que vous lancez sur une machine de confiance et qui expose des commandes simples pour interagir avec votre coffre.&lt;/p&gt;

&lt;p&gt;En coulisses, il utilise la CLI &lt;code&gt;bw&lt;/code&gt; officielle, mais il gère toute la complexité pour vous :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Auto-déverrouillage :&lt;/strong&gt; Il déverrouille le coffre à la première requête.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Gestion de session :&lt;/strong&gt; Il garde la session active en cache pour les appels suivants, évitant les déverrouillages répétés.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Interface simple :&lt;/strong&gt; Il expose des outils clairs comme &lt;code&gt;get_secret&lt;/code&gt;, &lt;code&gt;list_secrets&lt;/code&gt;, &lt;code&gt;create_secret&lt;/code&gt;, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cas d'usage : Un Agent IA qui utilise vos secrets
&lt;/h2&gt;

&lt;p&gt;Imaginez pouvoir dire à votre assistant IA :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Utilise l'outil vaultwarden pour récupérer le secret 'API_KEY_AWS' et déploie la nouvelle version de l'application."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Avec &lt;code&gt;mcp-vaultwarden-server&lt;/code&gt;, c'est possible. Le serveur est compatible avec le &lt;strong&gt;Model-Context-Protocol (MCP)&lt;/strong&gt;, ce qui signifie que des agents comme Gemini ou Claude peuvent l'utiliser comme n'importe quel autre outil.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment ça marche ?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Prérequis :&lt;/strong&gt; Installez la CLI Bitwarden (&lt;code&gt;bw&lt;/code&gt;) sur la machine où tournera le serveur.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Installation :&lt;/strong&gt; Le serveur est un paquet NPM, installable via &lt;code&gt;npx&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Pas d'installation manuelle requise !&lt;/span&gt;
&lt;span class="c"&gt;# Il suffit de le configurer dans votre client MCP.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configuration :&lt;/strong&gt; Vous fournissez vos identifiants Vaultwarden (URL, client ID/secret, et mot de passe maître) via des variables d'environnement.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Exemple&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;configuration&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;pour&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;un&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;client&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;MCP&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"vaultwarden"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"mcp-vaultwarden-server"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"BITWARDEN_HOST"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://votre-instance.vaultwarden.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"BW_CLIENTID"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"BW_CLIENTSECRET"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"BW_MASTER_PASSWORD"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"votre-mot-de-passe-maitre"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note de sécurité :&lt;/strong&gt; La gestion du mot de passe maître est critique. Assurez-vous que le serveur tourne dans un environnement sécurisé et contrôlé.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prêt à essayer ?
&lt;/h2&gt;

&lt;p&gt;Le projet est open-source et disponible pour tous. C'est la pièce manquante pour intégrer votre gestionnaire de mots de passe auto-hébergé dans vos workflows d'automatisation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Dépôt GitHub :&lt;/strong&gt; &lt;a href="https://github.com/fkom13/mcp-vaultwarden" rel="noopener noreferrer"&gt;https://github.com/fkom13/mcp-vaultwarden&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Paquet NPM (à venir) :&lt;/strong&gt; Nous allons le publier prochainement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vos retours et contributions sont les bienvenus !&lt;/p&gt;

</description>
      <category>selfhosted</category>
      <category>security</category>
      <category>mcp</category>
      <category>node</category>
    </item>
    <item>
      <title>GenCodeDoc : Le Time Machine pour votre code, sans la lourdeur de Git</title>
      <dc:creator>fkom13</dc:creator>
      <pubDate>Sat, 15 Nov 2025 08:26:15 +0000</pubDate>
      <link>https://forem.com/fkom13/gencodedoc-le-time-machine-pour-votre-code-sans-la-lourdeur-de-git-2g3m</link>
      <guid>https://forem.com/fkom13/gencodedoc-le-time-machine-pour-votre-code-sans-la-lourdeur-de-git-2g3m</guid>
      <description>&lt;p&gt;Vous avez déjà rêvé de pouvoir sauvegarder l'état de votre projet à un instant T, sans pour autant créer un commit Git juste pour "un test" ? Ou de générer une documentation complète de votre code en une seule commande ?&lt;/p&gt;

&lt;p&gt;C'est précisément pour cela que nous avons créé &lt;strong&gt;GenCodeDoc&lt;/strong&gt;, un outil de versioning intelligent et de documentation automatique, open-source et maintenant disponible sur PyPI (&lt;code&gt;pip install gencodedoc&lt;/code&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Le Problème : Le "Micro-Versioning" et la Documentation Manuelle
&lt;/h2&gt;

&lt;p&gt;Git est parfait pour le versioning majeur, mais il est souvent trop lourd pour le suivi de l'exploration et du développement au quotidien. On se retrouve souvent à faire des &lt;code&gt;commit -m "WIP"&lt;/code&gt; ou à dupliquer des dossiers (&lt;code&gt;project_v2&lt;/code&gt;, &lt;code&gt;project_v2_final&lt;/code&gt;), ce qui est inefficace. De plus, maintenir une documentation à jour est une tâche que l'on repousse constamment.&lt;/p&gt;

&lt;h2&gt;
  
  
  La Solution : Snapshots Intelligents et Docs Automatisées
&lt;/h2&gt;

&lt;p&gt;GenCodeDoc aborde ces deux problèmes avec une approche moderne :&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Des "Snapshots" plutôt que des Commits
&lt;/h4&gt;

&lt;p&gt;Avec GenCodeDoc, vous prenez des "photographies" (snapshots) de votre projet quand vous le voulez.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Après avoir installé l'outil (pip install gencodedoc)&lt;/span&gt;
&lt;span class="c"&gt;# et l'avoir initialisé dans votre projet (gencodedoc init)&lt;/span&gt;

&lt;span class="c"&gt;# Prenez un snapshot avant un refactoring majeur&lt;/span&gt;
gencodedoc snapshot create &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"Avant refactoring de l'API"&lt;/span&gt; &lt;span class="nt"&gt;--tag&lt;/span&gt; pre-refactor

&lt;span class="c"&gt;# ... vous cassez tout ...&lt;/span&gt;

&lt;span class="c"&gt;# Pas de panique, revenez en arrière en une seconde&lt;/span&gt;
gencodedoc snapshot restore pre-refactor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La magie opère en coulisses :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Déduplication :&lt;/strong&gt; Seuls les fichiers modifiés sont réellement stockés. Un fichier identique sur 100 snapshots n'est sauvegardé qu'une seule fois. &lt;strong&gt;Résultat : ~70% d'économie d'espace.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Compression :&lt;/strong&gt; Tout est compressé avec zstd pour une efficacité maximale.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Autosave :&lt;/strong&gt; Activez un gardien qui sauvegarde votre travail automatiquement en fonction du temps ou du pourcentage de changements.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Une Documentation qui s'écrit toute seule
&lt;/h4&gt;

&lt;p&gt;Oubliez la corvée de la documentation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gencodedoc doc generate &lt;span class="nt"&gt;--output&lt;/span&gt; DOCS.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cette commande analyse votre projet et génère un fichier Markdown complet incluant :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  L'arborescence complète du projet.&lt;/li&gt;
&lt;li&gt;  Le contenu de chaque fichier, avec coloration syntaxique.&lt;/li&gt;
&lt;li&gt;  Des statistiques sur le projet (nombre de lignes, de fichiers, etc.).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Triple Interface : CLI, API REST, et MCP pour l'IA
&lt;/h3&gt;

&lt;p&gt;GenCodeDoc est conçu pour la flexibilité :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;CLI :&lt;/strong&gt; Une interface en ligne de commande complète pour un usage manuel.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;API REST :&lt;/strong&gt; Intégrez GenCodeDoc dans vos propres applications.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;MCP (Model-Context-Protocol) :&lt;/strong&gt; La fonctionnalité la plus unique. Exposez les 17 outils de GenCodeDoc à un agent IA (comme Gemini ou Claude) pour piloter le versioning et la documentation en langage naturel.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Hey Gemini, crée un snapshot de mon projet avec le tag 'v2.1-beta' et génère la doc."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Pour commencer
&lt;/h2&gt;

&lt;p&gt;Le projet est open-source et disponible sur PyPI.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Installation :&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;gencodedoc
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Initialisation dans votre projet :&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gencodedoc init &lt;span class="nt"&gt;--preset&lt;/span&gt; python
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Explorez !&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gencodedoc &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nous pensons que GenCodeDoc peut changer la manière dont les développeurs et les IA collaborent sur le code au quotidien.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Dépôt GitHub :&lt;/strong&gt; &lt;a href="https://github.com/fkom13/gencodedoc" rel="noopener noreferrer"&gt;https://github.com/fkom13/gencodedoc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Documentation Complète :&lt;/strong&gt; &lt;a href="https://github.com/fkom13/gencodedoc/blob/main/DOCUMENTATION.md" rel="noopener noreferrer"&gt;Lien vers DOCUMENTATION.md sur le dépôt&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;N'hésitez pas à l'essayer et à nous faire vos retours sur GitHub !&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>python</category>
      <category>automation</category>
      <category>gitlike</category>
    </item>
    <item>
      <title>Show HN: MCP Orchestrator – Pilotez vos serveurs SSH/SFTP avec n'importe quelle IA</title>
      <dc:creator>fkom13</dc:creator>
      <pubDate>Sat, 15 Nov 2025 08:18:28 +0000</pubDate>
      <link>https://forem.com/fkom13/show-hn-mcp-orchestrator-pilotez-vos-serveurs-sshsftp-avec-nimporte-quelle-ia-4mog</link>
      <guid>https://forem.com/fkom13/show-hn-mcp-orchestrator-pilotez-vos-serveurs-sshsftp-avec-nimporte-quelle-ia-4mog</guid>
      <description>&lt;h2&gt;
  
  
  Le problème : La gestion de serveurs est un chaos (organisé ?)
&lt;/h2&gt;

&lt;p&gt;Si vous êtes développeur, DevOps ou administrateur système, votre quotidien ressemble probablement à une jonglerie entre plusieurs terminaux, des scripts SSH qui vieillissent mal, et des commandes &lt;code&gt;scp&lt;/code&gt; à rallonge.&lt;/p&gt;

&lt;p&gt;Gérer des serveurs, déployer des applications, transférer des fichiers, et monitorer des services est une tâche complexe et répétitive. On finit souvent avec :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Des scripts shell spécifiques à chaque machine.&lt;/li&gt;
&lt;li&gt;Des commandes &lt;code&gt;ssh&lt;/code&gt; et &lt;code&gt;sftp&lt;/code&gt; tapées à la main, sources d'erreurs.&lt;/li&gt;
&lt;li&gt;Un manque de visibilité sur les tâches longues.&lt;/li&gt;
&lt;li&gt;Une difficulté à automatiser de manière fiable et centralisée.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et si on pouvait piloter tout ça depuis une interface unifiée, voire... directement depuis une conversation avec une IA ?&lt;/p&gt;

&lt;h2&gt;
  
  
  La solution : &lt;code&gt;mcp-orchestrator-server&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;C'est exactement le problème que nous avons voulu résoudre en créant &lt;strong&gt;&lt;code&gt;mcp-orchestrator-server&lt;/code&gt;&lt;/strong&gt;, un serveur d'orchestration open-source basé sur Node.js et le &lt;a href="https://github.com/model-context-protocol/mcp-spec" rel="noopener noreferrer"&gt;Model-Context-Protocol (MCP)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;En bref :&lt;/strong&gt; C'est un outil que vous lancez en arrière-plan et qui expose une API riche pour gérer vos serveurs. Il est conçu pour être piloté par un client MCP, comme une interface en ligne de commande (CLI) ou, plus intéressant encore, un agent IA comme Gemini.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub :&lt;/strong&gt; &lt;a href="https://github.com/fkom13/mcp-sftp-orchestrator" rel="noopener noreferrer"&gt;https://github.com/fkom13/mcp-sftp-orchestrator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NPM :&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/mcp-orchestrator-server" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/mcp-orchestrator-server&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Qu'est-ce que ça fait concrètement ?
&lt;/h2&gt;

&lt;p&gt;Imaginez pouvoir taper des commandes en langage naturel et voir la magie opérer. Voici quelques exemples.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Exécuter une séquence de déploiement
&lt;/h3&gt;

&lt;p&gt;Fini les scripts bash fragiles. Déployez votre application avec une seule commande sémantique.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;L'intention :&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Sur le serveur 'prod_vps', déploie la dernière version de mon app : va dans le dossier &lt;code&gt;/var/www/app&lt;/code&gt;, fais un &lt;code&gt;git pull&lt;/code&gt;, installe les dépendances &lt;code&gt;npm&lt;/code&gt;, et redémarre le service &lt;code&gt;pm2&lt;/code&gt;."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;La commande MCP correspondante :&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"task_exec_sequence"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"alias"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"prod_vps"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"commands"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"cd /var/www/app"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"git pull origin main"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"npm install"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"pm2 restart app"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Transférer des fichiers avec des patterns complexes
&lt;/h3&gt;

&lt;p&gt;Besoin de sauvegarder tous les logs et les fichiers de configuration ?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;L'intention :&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Sauvegarde tous les logs de l'application et les fichiers de configuration JSON du serveur 'prod_vps' dans mon dossier local de backups."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;La commande MCP :&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"task_transfer_multi"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"alias"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"prod_vps"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"direction"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"download"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"files"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"remote"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/var/log/app/*.log"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"local"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/home/user/backups/logs/"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"remote"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/etc/app/configs/**/*.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"local"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/home/user/backups/configs/"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Monitorer un service en temps réel
&lt;/h3&gt;

&lt;p&gt;Un bug en production ? Affichez les logs en direct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;L'intention :&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Montre-moi les 100 dernières lignes de logs d'erreurs de l'app 'api-server' sur 'prod_vps'."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;La commande MCP :&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"get_pm2_logs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"alias"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"prod_vps"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"app"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api-server"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"lines"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"errors"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Fonctionnalités Clés
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gestion de Serveurs Centralisée :&lt;/strong&gt; Ajoutez tous vos serveurs via l'outil &lt;code&gt;server_add&lt;/code&gt; et appelez-les par un simple alias.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pool de Connexions SSH :&lt;/strong&gt; Les connexions sont maintenues et réutilisées pour des performances optimales.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Queue de Tâches Persistante :&lt;/strong&gt; Les tâches longues (transferts, commandes...) continuent en arrière-plan et survivent à un redémarrage du serveur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exécution Hybride :&lt;/strong&gt; Les tâches rapides retournent un résultat immédiatement, les tâches longues sont asynchrones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring Intégré :&lt;/strong&gt; Outils pour vérifier les ressources système, le statut des services (systemd, Docker, PM2), et la santé de vos APIs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation et Utilisation
&lt;/h2&gt;

&lt;p&gt;Le moyen le plus simple est d'utiliser &lt;code&gt;npx&lt;/code&gt;. Configurez votre client MCP (comme &lt;code&gt;gemini-cli&lt;/code&gt;) pour qu'il utilise l'orchestrateur :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"orchestrator"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"mcp-orchestrator-server"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"MCP_DATA_DIR"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"~/.config/mcp-orchestrator"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;C'est tout ! Votre client peut maintenant communiquer avec le serveur et utiliser tous ses outils.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;mcp-orchestrator-server&lt;/code&gt; est un pas vers une gestion d'infrastructure plus intelligente et automatisée. En l'exposant via le Model-Context-Protocol, il devient un outil surpuissant dans l'arsenal de tout développeur ou DevOps qui utilise des agents IA.&lt;/p&gt;

&lt;p&gt;Nous vous invitons à l'essayer, à contribuer sur &lt;a href="https://github.com/fkom13/mcp-sftp-orchestrator" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; et à nous faire part de vos retours !&lt;/p&gt;

</description>
      <category>ai</category>
      <category>javascript</category>
      <category>devops</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
