Voici comment connecter l’agent IA de Cursor à vos serveurs en SSH via un serveur MCP, sans qu’aucune clé privée n’atterrisse jamais dans l’environnement de l’agent. Commençons par la raison d’y tenir. L’agent de Cursor est à l’aise dans un dépôt. Dès que la tâche quitte le dépôt — vérifier pourquoi le service refuse de démarrer, lancer la migration, corriger la configuration nginx sur la vraie machine —, il lui faut du SSH. Et voici la partie inconfortable : l’agent de Cursor exécute des commandes de terminal sur votre machine, donc si vos clés sont déverrouillées dans ~/.ssh ou dans un ssh-agent actif, il n’a pas besoin que vous lui « donniez » quoi que ce soit — ssh prod fonctionne déjà. Vous avez accordé un accès complet aux serveurs par défaut, sans l’avoir décidé.
Il existe un meilleur arrangement : l’agent demande, et quelque chose que vous contrôlez se charge de l’authentification. Nous avons écrit sur pourquoi coller une clé est le geste qu’on ne peut pas défaire (en anglais) et sur ce qu’est réellement un serveur MCP (en anglais) ; cet article en est la version pratique pour Cursor. Vingt minutes, un VPS, aucune clé n’entre jamais à portée de l’agent.
Ce qu’il vous faut
- Termalin — l’application de bureau, le forfait Free suffit. C’est un client SSH doté d’un serveur MCP intégré ; c’est à ce serveur que Cursor parlera.
- Cursor sur la même machine.
- Un hôte enregistré dans Termalin — choisissez quelque chose sans enjeu pour le premier essai. Un serveur de préproduction, un VPS jouet, la machine qui ne fait tourner que votre lecteur RSS.
Étape 1 — activer l’accès de l’agent
L’accès de l’agent est désactivé par défaut. Dans Termalin, ouvrez Paramètres → MCP et activez-le, puis cochez les hôtes que l’agent a le droit d’atteindre. Rien en dehors de cette liste n’existe du point de vue de Cursor — un nouvel hôte est une décision que vous prenez dans l’app, pas quelque chose que l’agent peut obtenir à force d’arguments.
Deux choses se passent en coulisses. Termalin écrit un inventaire d’hôtes pour le serveur MCP avec des entrées d’authentification propres à l’agent — aucun mot de passe ni clé n’atterrit dans ce fichier. Et l’authentification reste du ressort du gardien des clés de l’app : vous déverrouillez vos clés une fois, Termalin signe pour le compte de l’agent. Il n’y a aucun fichier de clé que l’agent puisse lire, donc rien qu’il puisse divulguer — ce qui ferme aussi la porte dérobée ~/.ssh évoquée plus haut, car les hôtes qui méritent d’être protégés n’ont plus du tout besoin d’une clé qui traîne sur votre disque.
Tant que vous êtes dans les paramètres, définissez la politique de l’agent de chaque hôte : accès complet, une liste de commandes autorisées, ou bloqué. La liste de commandes autorisées est le bon point de départ pour tout ce qui compte à vos yeux.
Étape 2 — déclarer le serveur dans mcp.json
Cursor récupère les serveurs MCP depuis un fichier JSON — .cursor/mcp.json à la racine d’un projet pour ce projet seulement, ou ~/.cursor/mcp.json pour rendre le serveur disponible partout. Pour un serveur local (stdio) comme celui de Termalin, l’entrée est une commande et ses arguments :
{
"mcpServers": {
"termalin": {
"command": "<path>/termalin-mcp",
"args": []
}
}
}
C’est toute l’intégration. Le fichier global est le choix sensé ici — l’accès aux serveurs n’est pas une affaire propre à un dépôt. Redémarrez Cursor (ou rechargez la liste MCP dans ses paramètres), confirmez que le serveur apparaît comme actif, et les outils se présentent à l’agent : hosts_list, ssh_exec, des sessions persistantes (session_open, session_exec), des lectures et écritures SFTP.
Une note propre à Cursor à garder en tête : par défaut, Cursor demande avant d’exécuter un appel d’outil. Laissez cela actif pour les premières sessions. L’approbation automatique est un confort que vous devriez étendre un outil à la fois, après avoir observé comment l’agent se sert de chacun — comme vous élargiriez la liste des hôtes.
Étape 3 — confiez-lui une vraie corvée
Ne commencez pas par une commande de démonstration ; commencez par une tâche que vous feriez réellement :
La sonde de santé de staging-1 est instable depuis le déploiement d’hier. Trouvez pourquoi et corrigez le problème.
Observez l’agent travailler : il appelle hosts_list, voit staging-1, ouvre une session, et commence à tirer les fils — état du service, les cent dernières lignes de journal, le diff de configuration par rapport à ce qui tourne. Il propose un correctif, l’applique, et vérifie que la sonde de santé repasse au vert.
Ce qui rend la chose confortable, c’est que rien de tout cela n’est invisible. Chaque session que l’agent ouvre apparaît dans Termalin comme un onglet de terminal en direct, et la grille de surveillance (en anglais) montre toutes les sessions ouvertes côte à côte, les vignettes pilotées par l’agent mises en évidence. Vous ne lisez pas un résumé après coup — vous regardez les commandes atterrir en temps réel, et vous pouvez intervenir à tout moment.
Où sont les limites
Des réglages par défaut à connaître avant de le pointer vers quoi que ce soit qui compte :
- Vos clés ne touchent jamais à l’environnement de l’agent. Le gardien signe ; l’agent demande. Révoquer l’accès est un interrupteur dans les Paramètres, pas une rotation de clés sur tout votre parc.
- La portée de l’agent, c’est la liste d’autorisation que vous avez définie à l’étape 1, et la politique de commandes de chaque hôte borne ce qu’il peut y exécuter.
- Taper dans votre session est une chose à part. Par défaut, l’agent ouvre ses propres sessions ; agir dans une session que vous avez déjà ouverte relève d’un interrupteur de consentement distinct — il ne s’y glisse jamais en silence.
- Les enregistrements marquent l’activité de l’agent. Les enregistrements de session ne capturent que la sortie — jamais vos frappes — et chaque commande de l’agent est étiquetée comme la sienne dans le journal d’audit, avec l’appareil et l’IP d’où elle provient. À 2 h du matin, vous pouvez distinguer « c’est lui qui a fait ça » de « c’est moi qui ai fait ça ».
Pas de bureau à portée ? Utilisez l’endpoint hébergé
Si l’agent tourne là où votre bureau n’est pas — CI, bac à sable cloud —, utilisez le serveur MCP hébergé plutôt que l’app. En interactif, ajoutez https://termal.in/mcp à Cursor par URL et connectez-vous une fois sur la page de Termalin (OAuth, aucune clé à coller) ; pour les exécutions sans surveillance, créez une clé API dans l’espace web de Termalin et pointez le client vers l’endpoint MCP hébergé. Le mcp.json de Cursor accepte aussi des serveurs distants par URL :
{
"mcpServers": {
"termalin": {
"url": "https://termal.in/api/v1/mcp",
"headers": { "Authorization": "Bearer tk_live_…" }
}
}
}
(Si votre version de Cursor ne prend pas encore en charge les en-têtes d’authentification sur les serveurs distants, restez sur le serveur stdio local — c’est de toute façon le meilleur choix par défaut.) L’endpoint hébergé n’atteint que les serveurs que vous avez ajoutés avec l’agent de tunnel, et chaque exécution s’authentifie avec un certificat à courte durée — même principe de gardien, aucun identifiant permanent où que ce soit. Les clés sont limitées à des serveurs précis, expirent selon un calendrier que vous choisissez, et meurent instantanément une fois révoquées. Détails dans la documentation MCP.
L’habitude qui ancre tout
Traitez la première semaine comme l’intégration d’un nouveau collègue qui tape très vite. Gardez la grille de surveillance ouverte. Confiez-lui des corvées à l’objectif clair — « faire passer la sonde de santé au vert », « faire renouveler le certificat » — et lisez comment il y parvient. Laissez l’approbation par appel de Cursor active jusqu’à ce que l’agent ait mérité l’approbation automatique pour les outils sans risque, et élargissez la liste d’hôtes une machine banale à la fois.
L’asymétrie est tout l’intérêt : l’agent obtient une vraie portée, et vous gardez la seule chose qui ne peut pas être reprise. (Vous utilisez plutôt Claude Code ? Même configuration, une seule commande (en anglais).)
Le forfait Free de Termalin, c’est l’application de bureau complète, et chaque nouveau compte commence par un essai Pro de 14 jours — téléchargez-le, partez de la page Cursor SSH, ou lisez d’abord la documentation MCP.