Variables de contexte de configuration MCP de Hermes Agent : ${userHome}, ${workspaceFolder} et 3 autres variables de style Cursor

Configurer un serveur MCP devrait prendre cinq minutes, mais les configurations sont pleines de chemins absolus. Chaque machine, chaque collègue, chaque dossier déplacé signifie de nouvelles modifications, et un mcp.json partagé devient impossible à garder portable. Cette semaine, Hermes ajoute des variables de contexte de style Cursor pour rendre les chemins enfin portables.
Vous codez encore vos chemins en dur dans votre config MCP ?
Configurer des serveurs MCP pose un problème récurrent agaçant : les chemins. /Users/neo/.cache/mcp, C:\Users\neo\projects\webapp — changez de machine, d’utilisateur ou de répertoire de projet, et vous devez tout modifier à nouveau. Pire : si votre équipe commit la config MCP dans le dépôt, les chemins absolus de chacun diffèrent et un mcp.json partagé devient impossible à garder portable.
Une fonctionnalité fusionnée dans main de Hermes Agent le 2026-08-08 corrige exactement cela : les configurations de serveurs MCP supportent désormais l’interpolation de variables de contexte de style Cursor — ${userHome}, ${workspaceFolder}, ${workspaceFolderBasename}, ${pathSeparator} et ${/}. Deux conséquences en découlent :
- un
mcp.jsonécrit pour Cursor s’importe dans Hermes avec zéro modification de chemin ; - les chemins dans les configurations peuvent enfin s’écrire de façon sémantique et relative — portables d’une machine et d’un utilisateur à l’autre.
Les 5 variables de contexte
| Variable (sensible à la casse) | Se résout en |
|---|---|
${userHome} |
Le répertoire personnel de l’utilisateur courant (os.path.expanduser("~")) |
${workspaceFolder} |
La racine du workspace de la session (voir la chaîne de résolution ci-dessous) |
${workspaceFolderBasename} |
Le basename de ${workspaceFolder} (dernier segment du chemin) |
${pathSeparator} |
Le séparateur de chemins du système d’exploitation (os.sep — \ sur Windows, / ailleurs) |
${/} |
Raccourci pour ${pathSeparator} |
⚠️ La casse compte : seules ces cinq orthographes exactes sont reconnues.
${USERHOME}n’est pas une variable de contexte — elle retombe sur la recherche normale de variables d’environnement comme toute autre référence${...}.
Exemples de configuration réels
Les variables peuvent apparaître à n’importe quelle position de chaîne d’une entrée de serveur : args, env, url, headers — partout.
Exemple 1 : serveur filesystem pointé vers le workspace courant
mcp_servers:
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "${workspaceFolder}"]
Où que vous lanciez Hermes, le serveur filesystem cible automatiquement le workspace de la session courante — aucun ID de session à retenir, pas de cd préalable.
Exemple 2 : répertoire de cache construit à partir de home + séparateur
mcp_servers:
my-server:
command: "node"
args: ["server.js"]
env:
CACHE_DIR: "${userHome}${/}.cache${/}mcp"
${/} permet à cette configuration de fonctionner sur Windows (\) et macOS/Linux (/) en même temps.
Exemple 3 : migration directe depuis Cursor
Le motif le plus courant dans le mcp.json de Cursor est la référence de secret "${env:VAR}". Hermes le supporte aussi :
mcp_servers:
github:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "${env:GITHUB_TOKEN}"
${env:GITHUB_TOKEN} et ${GITHUB_TOKEN} se résolvent vers la même variable ; les valeurs sont lues depuis le scope de secrets du profil actif (avec repli sur l’environnement du processus), donc déposez le secret dans ~/.hermes/.env et c’est réglé. Une variable non définie conserve son placeholder littéral au lieu de provoquer une erreur.
Comment ${workspaceFolder} se résout (ordre de priorité)
${workspaceFolder} n’est pas simplement le répertoire de démarrage du processus — il parcourt une chaîne à trois niveaux :
- Le cwd de terminal enregistré de la session : écrit à chaque commande de terminal terminée et indexé par l’ID brut de la session — le
cdd’une session ne peut jamais fuir dans la résolution d’une autre session ; - Un override de cwd de tâche/session enregistré : le cwd que les sessions TUI / Desktop / ACP enregistrent avant l’exécution de tout outil ;
- Un
$TERMINAL_CWDabsolu sans sentinelle : le chemin du worktree défini pour les sessionshermes -w <worktree>.
Ce n’est que lorsqu’aucun ancrage fiable n’existe qu’il retombe sur os.getcwd() du processus.
En pratique, cela signifie : ouvrez un projet dans l’application desktop, ou faites un cd dans un sous-répertoire dans la TUI, et ${workspaceFolder} suit le workspace réel de la session courante — pas le répertoire depuis lequel vous avez lancé par hasard.
Ordre de résolution : variables de contexte → variables d’environnement → littéral
Pour chaque référence ${...}, l’interpolation essaie, dans l’ordre :
- La correspondance exacte avec les 5 variables de contexte (priorité la plus haute) ;
- La recherche de variable d’environnement (scope de secrets du profil →
os.environ) ; - Sinon, le placeholder littéral est conservé (par exemple
"${NOT_EXIST}"reste tel quel).
Les variables de contexte ne modifient donc pas la sémantique existante des variables d’environnement — les anciennes références comme ${HOME} ne sont absolument pas affectées ; vous avez simplement gagné cinq noms de « première classe ».
Quand cela porte ses fruits
- Configurations partagées en équipe : committez
mcp_serversdans le dépôt et chaque membre est opérationnel après un clone — fini les chemins absolus qui se marchent dessus ; - Synchronisation multi-machines : desktop + portable + CI partageant une seule configuration ;
${userHome}et${/}absorbent les différences de plateforme ; - Outils liés au workspace : les serveurs qui doivent s’exécuter contre le projet courant (filesystem, linters, recherche de code) —
${workspaceFolder}suit la session automatiquement.
Pour la référence complète des clés de serveur MCP (tools.include/exclude, le niveau trust, auth: oauth, et plus), consultez notre référence de la commande hermes mcp. Pour voir la vision MCP plus large de la dernière release, lisez nos notes de release v0.20.0 Herald. Nouveau sur Hermes Agent ? Commencez par le guide d’installation avant d’expérimenter.
En résumé : remplacez les chemins absolus par ${userHome}, ${workspaceFolder} et ${/} dans votre configuration MCP, et vous obtenez gratuitement la portabilité plus le comportement « suit le workspace courant » — avec des configurations qui interopèrent avec l’écosystème Cursor sans modification.