Wird geladen

Roots sind eine Möglichkeit, MCP-Servern Zugriff auf bestimmte Dateien und Ordner auf deinem lokalen Rechner zu gewähren. Stell sie dir als ein Berechtigungssystem vor, das sagt: „Hey, MCP-Server, du kannst auf diese Dateien zugreifen" – aber sie tun viel mehr, als nur Berechtigungen zu erteilen.

Das Problem, das Roots lösen

Ohne Roots würdest du auf ein häufiges Problem stoßen. Stell dir vor, du hast einen MCP-Server mit einem Video-Konvertierungs-Tool, das einen Dateipfad entgegennimmt und eine MP4 in das MOV-Format konvertiert.

Diagramm mit dem Titel „Wenn es Roots nicht gäbe...": Ein MCP-Server stellt ein Tool convert_video bereit, das eine .mp4-Videodatei in .mov konvertiert und einen Pfad zu einer Videodatei auf dem lokalen Rechner benötigt

Wenn ein Nutzer Claude bittet, „biking.mp4 in das mov-Format zu konvertieren", würde Claude das Tool nur mit dem Dateinamen aufrufen. Aber hier liegt das Problem – Claude hat keine Möglichkeit, dein gesamtes Dateisystem zu durchsuchen, um herauszufinden, wo sich diese Datei tatsächlich befindet.

Ein Chat, in dem der Nutzer sagt „Convert biking.mp4 to mov format", neben einem lokalen Dateisystembaum mit den Ordnern Movies, Documents und Photos; biking.mp4 ist tief in Movies/Sports hervorgehoben, ein Ort, den Claude nicht sehen kann

Dein Dateisystem könnte komplex sein, mit Dateien, die über verschiedene Verzeichnisse verstreut sind. Der Nutzer weiß, dass sich die Datei biking.mp4 in seinem Movies-Ordner befindet, aber Claude hat diesen Kontext nicht.

Du könntest dieses Problem lösen, indem du von Nutzern verlangst, immer vollständige Pfade anzugeben, aber das ist nicht sehr nutzerfreundlich. Niemand möchte jedes Mal vollständige Dateipfade eintippen.

Roots in Aktion

So ändert sich der Workflow mit Roots:

  1. Der Nutzer bittet darum, eine Videodatei zu konvertieren
  2. Claude ruft list_roots auf, um zu sehen, auf welche Verzeichnisse es zugreifen kann
  3. Claude ruft read_dir für zugängliche Verzeichnisse auf, um die Datei zu finden
  4. Sobald sie gefunden wurde, ruft Claude das Konvertierungs-Tool mit dem vollständigen Pfad auf

Das geschieht automatisch – Nutzer können weiterhin einfach „convert biking.mp4" sagen, ohne vollständige Pfade anzugeben.

Sicherheit und Grenzen

Roots bieten außerdem Sicherheit, indem sie den Zugriff einschränken. Wenn du nur Zugriff auf deinen Desktop-Ordner gewährst, kann der MCP-Server nicht auf Dateien an anderen Orten wie Documents oder Downloads zugreifen.

Wenn Claude versucht, auf eine Datei außerhalb der genehmigten Roots zuzugreifen, erhält es einen Fehler und kann den Nutzer darüber informieren, dass die Datei von der aktuellen Serverkonfiguration aus nicht zugänglich ist.

Implementierungsdetails

Das MCP SDK erzwingt Root-Beschränkungen nicht automatisch – du musst dies selbst implementieren. Ein typisches Muster besteht darin, eine Hilfsfunktion wie is_path_allowed() zu erstellen, die:

  • einen angeforderten Dateipfad entgegennimmt
  • die Liste der genehmigten Roots abruft
  • prüft, ob der angeforderte Pfad innerhalb eines dieser Roots liegt
  • true/false für die Zugriffsberechtigung zurückgibt

Du rufst diese Funktion dann in jedem Tool auf, das auf Dateien oder Verzeichnisse zugreift, bevor die eigentliche Dateioperation ausgeführt wird.

Wichtige Vorteile

  • Nutzerfreundlich – Nutzer müssen keine vollständigen Dateipfade angeben
  • Fokussierte Suche – Claude sucht nur in genehmigten Verzeichnissen, was die Dateisuche schneller macht
  • Sicherheit – Verhindert versehentlichen Zugriff auf sensible Dateien außerhalb genehmigter Bereiche
  • Flexibilität – Du kannst Roots über Tools bereitstellen oder sie direkt in Prompts einfügen

Roots machen MCP-Server sowohl leistungsfähiger als auch sicherer, indem sie Claude den Kontext geben, den es benötigt, um Dateien zu finden, während klare Grenzen dafür gewahrt bleiben, worauf es zugreifen kann.