Zum Inhalt springen

Blog

MCP mit Docker einrichten: stdio, Variablen und Mounts

MCP-Server in Docker starten: stdio offen halten, Variablen weitergeben und Verzeichnisse gezielt einbinden. Mit Fehlerhilfe und Prüfplan.

Veröffentlicht am · von tracevero · Lesezeit 4 Minuten (671 Wörter)

Ein Container kann Laufzeit und Abhängigkeiten eines MCP-Servers bündeln. Die Verbindung zum Client, Zugangsdaten und Dateipfade müssen trotzdem zusammenpassen. Beginnen Sie mit einer einzelnen Leseoperation, deren Ergebnis Sie bereits kennen. Notieren Sie dabei, auf welchem Rechner der Client läuft und welche Docker-Engine er erreicht. Diese Unterscheidung verhindert, dass Sie einen Ordner auf Ihrem Laptop suchen, obwohl der Container auf einem anderen Rechner gestartet wurde.

Startweg und Transport zuerst festlegen

Docker ist die Verpackung des Prozesses, nicht der MCP-Transport. Ein Container kann über stdio mit dem Client verbunden sein oder einen HTTP-Dienst anbieten. Für stdio dokumentiert Docker -i zum Offenhalten der Standardeingabe. -t richtet ein Pseudoterminal ein; verwenden Sie für einen Protokollprozess die vom Server dokumentierte Startform. Ein im Hintergrund gestarteter Container ist nicht automatisch mit dem Eingabe- und Ausgabestrom des Clients verbunden.

Ihr erster kontrollierter Test 1. Client Startbefehl ausführen 2. Docker Umgebung übergeben 3. Server Leseergebnis prüfen
Vorschlag für Ihre Umgebung, kein durchgeführter Anbietertest.

Lesen Sie beim gewählten Eintrag Paketkennung und Originalrepository. Nutzen Sie den Konfigurationsbaukasten als Ausgangspunkt, wenn ein Containerstart im Bestand vorliegt. Der Transportvergleich hilft bei der Entscheidung zwischen Startbefehl und Endpunkt. Für GitHub gibt es zusätzlich eine konkrete Einrichtungsanleitung.

Variablen durch beide Prozessgrenzen geben

Der Client startet Docker, Docker startet den Server. Ein Wert in der Umgebung des Clients ist deshalb nicht automatisch im Container vorhanden. -e NAME übernimmt einen vorhandenen Wert aus der Umgebung des Docker-Aufrufs. Schreiben Sie Docker-Optionen vor den Abbildnamen; Angaben dahinter gehören zum Containerbefehl. Verwenden Sie nur die vom Server dokumentierten Variablennamen und prüfen Sie zunächst, ob der Wert überhaupt weitergereicht wird, ohne ihn auszugeben.

Ein typischer Fehler: Der Terminaltest funktioniert, der Desktopclient meldet eine fehlende Variable. Vergleichen Sie dann die Startumgebungen. Ändern Sie nicht gleichzeitig das Token und die Serverfassung, sonst bleibt unklar, welcher Unterschied den Fehler verursacht hat. Tragen Sie Zugangsdaten nicht in öffentliche Prüffelder oder Protokolle ein. Die Konfigurationsprüfung ersetzt keine Prüfung der tatsächlich laufenden Containerumgebung.

Hostpfad und Containerpfad unterscheiden

Ein Bind-Mount verbindet einen Pfad beim Docker-Dienst mit einem Zielpfad im Container. Der Server verwendet den Zielpfad. Bind-Mounts sind standardmäßig beschreibbar; für einen reinen Dateilesetest können Sie die dokumentierte Option readonly verwenden. Bei einer entfernten Docker-Engine liegt der Quellpfad auf deren Rechner. Ein Pfad, der nur auf Ihrem Client existiert, wird dadurch nicht übertragen.

Fehler an der passenden Grenze prüfen
BeobachtungGrenzeKontrolle
Docker nicht erreichbarClient zu EngineEngine und ausgewählten Kontext prüfen
Variable fehltDocker zu ContainerWeitergabe und Startumgebung prüfen
Datei nicht gefundenHost zu ContainerQuelle, Ziel und Serverpfad abgleichen
Verbindung endet sofortProzess zu MCP-ClientStartform, Exit-Code und Logs lesen
HTTP nicht erreichbarContainer zu NetzwerkDienstbindung und Portzuordnung prüfen

Erstellen Sie für einen Dateitest einen eigenen Ordner mit einer bekannten Textdatei. Prüfen Sie sowohl den erfolgreichen Zugriff auf diese Datei als auch eine erwartete Ablehnung außerhalb des freigegebenen Bereichs. Die Filesystem-Anleitung erläutert die zusätzlichen serverseitigen Verzeichnisgrenzen. Ein Mount und eine Serverfreigabe sind zwei unterschiedliche Einstellungen.

Die Installation mit einem kleinen Test abschließen

  1. Halten Sie Abbildfassung, Startargumente und die verwendete Engine fest. Wählen Sie eine Fassung bewusst; ein veränderliches Tag ist keine dauerhafte Versionsangabe.

  2. Prüfen Sie den Start. Halten Sie Diagnosemeldungen von der Protokollausgabe getrennt. Lesen Sie den Exit-Code und die Fehlermeldung zusammen.

  3. Lassen Sie den Client die Verbindung initialisieren und die Werkzeugliste anzeigen. Wählen Sie die vorbereitete Leseoperation.

  4. Vergleichen Sie den Rückgabewert mit Ihrer Erwartung. Wiederholen Sie den Test nach Änderungen an Mounts, Variablen oder Abbildfassung.

Braucht stdio eine Portfreigabe?
Die Protokollverbindung läuft über die Prozessströme. Zusätzliche Ports können für andere dokumentierte Serverfunktionen nötig sein.
Ist jeder Container automatisch schreibgeschützt?
Nein. Prüfen Sie Mounts, Prozessrechte und angebotene Operationen getrennt.
Was bewirkt --rm?
Docker entfernt den Container nach seinem Ende. Das löscht keine Dateien, die der Server zuvor in einen eingebundenen Hostordner geschrieben hat.
Ist ein laufender Container ein erfolgreicher MCP-Test?
Nein. Initialisierung, Werkzeugliste und konkrete Operation müssen ebenfalls das erwartete Ergebnis liefern.

Offizielle Dokumentation geprüft am 1. Oktober 2026. Die Testpläne sind redaktionelle Vorschläge.

  1. Docker: running containers
    Abrufbefehl anzeigencurl -s https://docs.docker.com/engine/containers/run/
  2. Docker: bind mounts
    Abrufbefehl anzeigencurl -s https://docs.docker.com/engine/storage/bind-mounts/
  3. Docker: container run reference
    Abrufbefehl anzeigencurl -s https://docs.docker.com/reference/cli/docker/container/run/

Weiter zur Anwendung

Alle Beiträge

tracevero · https://tracevero.de/blog/mcp-docker-einrichten