Hermes Agent MCP-Config-Kontextvariablen: ${userHome}, ${workspaceFolder} und 3 weitere Cursor-artige Variablen


Einen MCP-Server einzurichten sollte fünf Minuten dauern – stattdessen kämpfst du dich durch Konfigurationen voller absoluter Pfade. Jeder neue Rechner, jedes Teammitglied, jeder verschobene Projektordner bedeutet: alles von Hand anpassen. Und sobald die mcp.json im Repo landet, funktioniert sie bei niemandem außer dir. Diese Woche bringt Hermes Cursor-artige Kontextvariablen mit, damit Pfade endlich portabel werden.

Immer noch hartkodierte Pfade in deiner MCP-Konfiguration?

Die Konfiguration von MCP-Servern hat ein lästiges, wiederkehrendes Problem: Pfade. /Users/neo/.cache/mcp, C:\Users\neo\projects\webapp — neuer Rechner, neuer Benutzer, neues Projektverzeichnis, und man bearbeitet alles erneut. Schlimmer noch: Committet das Team die MCP-Konfiguration ins Repository, unterscheiden sich alle absoluten Pfade, und eine gemeinsame mcp.json lässt sich nicht portabel halten.

Ein am 2026-08-08 in Hermes Agent main gemergtes Feature behebt genau das: MCP-Server-Konfigurationen unterstützen jetzt die Interpolation Cursor-artiger Kontextvariablen — ${userHome}, ${workspaceFolder}, ${workspaceFolderBasename}, ${pathSeparator} und ${/}. Daraus folgen zwei Dinge:

  1. Eine für Cursor geschriebene mcp.json zieht ohne eine einzige Pfadänderung zu Hermes um;
  2. Pfade in Konfigurationen lassen sich endlich semantisch und relativ formulieren — portabel über Rechner und Benutzer hinweg.

Die 5 Kontextvariablen

Variable (Groß-/Kleinschreibung beachten) Wird aufgelöst zu
${userHome} Das Home-Verzeichnis des aktuellen Benutzers (os.path.expanduser("~"))
${workspaceFolder} Das Workspace-Wurzelverzeichnis der Sitzung (siehe Auflösungskette unten)
${workspaceFolderBasename} Der Basename von ${workspaceFolder} (letztes Pfadsegment)
${pathSeparator} Das Pfadtrennzeichen des Betriebssystems (os.sep\ unter Windows, / sonst)
${/} Kurzform für ${pathSeparator}

⚠️ Groß-/Kleinschreibung ist wichtig: nur diese fünf exakten Schreibweisen werden erkannt. ${USERHOME} ist keine Kontextvariable — sie fällt wie jede andere ${...}-Referenz auf die normale Umgebungsvariablen-Auflösung zurück.

Praxisnahe Konfigurationsbeispiele

Variablen können an jeder Zeichenkettenposition eines Servereintrags auftauchen: args, env, url, headers — überall.

Beispiel 1: filesystem-Server auf den aktuellen Workspace gerichtet

mcp_servers:
  filesystem:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-filesystem", "${workspaceFolder}"]

Egal, woher du Hermes startest: Der filesystem-Server zielt automatisch auf den Workspace der aktuellen Sitzung — keine Session-IDs zum Merken, kein vorheriges cd.

Beispiel 2: Cache-Verzeichnis aus Home + Trennzeichen aufgebaut

mcp_servers:
  my-server:
    command: "node"
    args: ["server.js"]
    env:
      CACHE_DIR: "${userHome}${/}.cache${/}mcp"

${/} sorgt dafür, dass diese eine Konfiguration gleichzeitig unter Windows (\) und macOS/Linux (/) funktioniert.

Beispiel 3: Direkt von Cursor migrieren

Das häufigste Muster in Cursors mcp.json ist die "${env:VAR}"-Secret-Referenz. Hermes unterstützt sie ebenfalls:

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "${env:GITHUB_TOKEN}"

${env:GITHUB_TOKEN} und ${GITHUB_TOKEN} werden zur selben Variablen aufgelöst; die Werte werden aus dem Secret-Bereich des aktiven Profils gelesen (mit Fallback auf die Prozessumgebung). Lege das Secret einfach in ~/.hermes/.env ab, und schon passt alles. Eine nicht gesetzte Variable behält ihren wörtlichen Platzhalter, statt einen Fehler zu werfen.

Wie ${workspaceFolder} aufgelöst wird (Prioritätsreihenfolge)

${workspaceFolder} ist nicht einfach das Prozess-Startverzeichnis — es durchläuft eine dreistufige Kette:

  1. Das aufgezeichnete Terminal-cwd der Sitzung: wird bei jedem abgeschlossenen Terminalbefehl geschrieben und über die rohe Session-ID zugeordnet — ein cd einer Sitzung kann niemals in die Auflösung einer anderen Sitzung hineinleaken;
  2. Ein registrierter Task-/Session-cwd-Override: das cwd, das TUI-/Desktop-/ACP-Sitzungen registrieren, bevor irgendein Tool läuft;
  3. Ein sentinelfreies absolutes $TERMINAL_CWD: der Worktree-Pfad, der für hermes -w <worktree>-Sitzungen gesetzt wird.

Nur wenn kein verlässlicher Anker existiert, fällt es auf das Prozess-os.getcwd() zurück.

In der Praxis bedeutet das: Öffne ein Projekt in der Desktop-App oder wechsle in der TUI per cd in ein Unterverzeichnis, und ${workspaceFolder} folgt dem tatsächlichen Workspace der aktuellen Sitzung — nicht dem Verzeichnis, aus dem du zufällig gestartet bist.

Auflösungsreihenfolge: Kontextvariablen → Umgebungsvariablen → Literal

Für jede ${...}-Referenz versucht die Interpolation der Reihe nach:

  1. Exakter Treffer gegen die 5 Kontextvariablen (höchste Priorität);
  2. Umgebungsvariablen-Auflösung (Secret-Bereich des Profils → os.environ);
  3. Andernfalls bleibt der wörtliche Platzhalter erhalten (z. B. bleibt "${NOT_EXIST}" unverändert).

Kontextvariablen ändern also keine bestehende Umgebungsvariablen-Semantik — alte Referenzen wie ${HOME} sind vollkommen unberührt; du hast lediglich fünf „erstklassige“ Namen dazubekommen.

Wann sich das auszahlt

  • Teamweit geteilte Konfigurationen: mcp_servers ins Repository committen, und nach einem Clone funktioniert alles bei jedem Teammitglied — Schluss damit, sich gegenseitig auf den absoluten Pfaden herumzutreten;
  • Synchronisation über mehrere Rechner: Desktop + Laptop + CI teilen sich eine Konfiguration; ${userHome} und ${/} absorbieren die Plattformunterschiede;
  • An den Workspace gebundene Tools: Server, die gegen das aktuelle Projekt laufen müssen (filesystem, Linters, Codesuche) — ${workspaceFolder} folgt der Sitzung automatisch.

Die vollständige Referenz der MCP-Server-Keys (tools.include/exclude, die trust-Stufe, auth: oauth und mehr) findest du in unserer hermes-mcp-Befehlsreferenz. Für die größere MCP-Geschichte im aktuellen Release wirf einen Blick in die Release-Notizen zu v0.20.0 Herald. Neu bei Hermes Agent? Starte mit der Installationsanleitung, bevor du experimentierst.

Fazit: Ersetze in deiner MCP-Konfiguration absolute Pfade durch ${userHome}, ${workspaceFolder} und ${/} — und du bekommst Portabilität plus das „folgt dem aktuellen Workspace“-Verhalten gratis, mit Konfigurationen, die unverändert mit dem Cursor-Ökosystem interoperabel sind.