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.
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.
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.
| Beobachtung | Grenze | Kontrolle |
|---|---|---|
| Docker nicht erreichbar | Client zu Engine | Engine und ausgewählten Kontext prüfen |
| Variable fehlt | Docker zu Container | Weitergabe und Startumgebung prüfen |
| Datei nicht gefunden | Host zu Container | Quelle, Ziel und Serverpfad abgleichen |
| Verbindung endet sofort | Prozess zu MCP-Client | Startform, Exit-Code und Logs lesen |
| HTTP nicht erreichbar | Container zu Netzwerk | Dienstbindung 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
Halten Sie Abbildfassung, Startargumente und die verwendete Engine fest. Wählen Sie eine Fassung bewusst; ein veränderliches Tag ist keine dauerhafte Versionsangabe.
Prüfen Sie den Start. Halten Sie Diagnosemeldungen von der Protokollausgabe getrennt. Lesen Sie den Exit-Code und die Fehlermeldung zusammen.
Lassen Sie den Client die Verbindung initialisieren und die Werkzeugliste anzeigen. Wählen Sie die vorbereitete Leseoperation.
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.
- Docker: running containers
Abrufbefehl anzeigen
curl -s https://docs.docker.com/engine/containers/run/ - Docker: bind mounts
Abrufbefehl anzeigen
curl -s https://docs.docker.com/engine/storage/bind-mounts/ - Docker: container run reference
Abrufbefehl anzeigen
curl -s https://docs.docker.com/reference/cli/docker/container/run/