Container-MCP
Eine sichere, containerbasierte Implementierung des Model Context Protocol (MCP) zur Ausführung von Tools im Auftrag großer Sprachmodelle.
Überblick
Container-MCP bietet eine Sandbox-Umgebung für die sichere Ausführung von Code, Befehlen, Dateizugriff und die Durchführung von Weboperationen, die von großen Sprachmodellen angefordert werden. Es implementiert das MCP-Protokoll, um diese Funktionen als Tools bereitzustellen, die von KI-Systemen sicher erkannt und aufgerufen werden können.
Die Architektur verwendet ein domänenspezifisches Managermuster mit mehrschichtiger Sicherheit, um sicherzustellen, dass Tools in isolierten Umgebungen mit entsprechenden Einschränkungen ausgeführt werden, wodurch das Hostsystem vor potenziell schädlichen Vorgängen geschützt wird.
Hauptmerkmale
- Mehrschichtige Sicherheit
- Containerisolierung mit Podman/Docker
- AppArmor-Profile zur Zugriffsbeschränkung
- Firejail-Sandboxing für zusätzliche Isolierung
- Ressourcenbeschränkungen (CPU, Speicher, Ausführungszeit)
- Verhinderung der Pfaddurchquerung
- Zulässige Erweiterungsbeschränkungen
- Implementierung des MCP-Protokolls
- Standardisierte Tool-Erkennung und -Ausführung
- Ressourcenmanagement
- Unterstützung für asynchrone Ausführung
- Domänenspezifische Manager
BashManager
: Sichere BefehlsausführungPythonManager
: Ausführung von Python-Code in einer SandboxFileManager
: Sichere DateivorgängeWebManager
: Sicheres Surfen und Scraping im Internet
- Konfigurierbare Umgebung
- Umfangreiche Konfiguration über Umgebungsvariablen
- Unterstützung benutzerdefinierter Umgebungen
- Entwicklungs- und Produktionsmodi
Verfügbare Tools
Systembetrieb
system_run_command
Führt Bash-Befehle in einer sicheren Sandbox-Umgebung aus.
- Parameter :
command
(Zeichenfolge, erforderlich): Der auszuführende Bash-Befehlworking_dir
(Zeichenfolge, optional): Arbeitsverzeichnis (wird in der Sandbox ignoriert)
- Rückgaben :
stdout
(Zeichenfolge): Standardausgabe des Befehlsstderr
(Zeichenfolge): Standardfehler des Befehlsexit_code
(Ganzzahl): Befehls-Exitcodesuccess
(Boolesch): Ob der Befehl erfolgreich abgeschlossen wurde
system_run_python
Führt Python-Code in einer sicheren Sandbox-Umgebung aus.
- Parameter :
code
(Zeichenfolge, erforderlich): Auszuführender Python-Codeworking_dir
(Zeichenfolge, optional): Arbeitsverzeichnis (wird in der Sandbox ignoriert)
- Rückgaben :
output
(Zeichenfolge): Ausgabe des Codes druckenerror
(Zeichenfolge): Fehlerausgabe vom Coderesult
(beliebig): Optionaler Rückgabewert (verfügbar, wenn der Code die Variable_
setzt)success
(Boolesch): Ob der Code erfolgreich ausgeführt wurde
system_env_var
Ruft Werte von Umgebungsvariablen ab.
- Parameter :
var_name
(Zeichenfolge, optional): Spezifische abzurufende Variable
- Rückgaben :
variables
(Objekt): Wörterbuch der Umgebungsvariablenrequested_var
(Zeichenfolge): Wert der angeforderten Variable (sofern var_name angegeben ist)
Dateioperationen
file_read
Liest Dateiinhalte sicher.
- Parameter :
path
(Zeichenfolge, erforderlich): Pfad zur Datei (relativ zum Sandbox-Stammverzeichnis)encoding
(Zeichenfolge, optional): Dateikodierung (Standard: „utf-8“)
- Rückgaben :
content
(Zeichenfolge): Dateiinhaltsize
(Ganzzahl): Dateigröße in Bytesmodified
(float): Zeitstempel der letzten Änderungsuccess
(Boolesch): Ob das Lesen erfolgreich war
file_write
Schreibt Inhalte sicher in eine Datei.
- Parameter :
path
(Zeichenfolge, erforderlich): Pfad zur Datei (relativ zum Sandbox-Stammverzeichnis)content
(Zeichenfolge, erforderlich): Zu schreibender Inhaltencoding
(Zeichenfolge, optional): Dateikodierung (Standard: „utf-8“)
- Rückgaben :
success
(Boolesch): Ob der Schreibvorgang erfolgreich warpath
(Zeichenfolge): Pfad zur geschriebenen Datei
file_list
Listet den Inhalt eines Verzeichnisses sicher auf.
- Parameter :
path
(Zeichenfolge, optional): Pfad zum Verzeichnis (Standard: "/")pattern
(Zeichenfolge, optional): Glob-Muster zum Filtern von Dateien
- Rückgaben :
entries
(Array): Liste der Verzeichniseinträge mit Metadatenpath
(Zeichenfolge): Der aufgelistete Verzeichnispfadsuccess
(Boolesch): Ob die Auflistung erfolgreich war
file_delete
Löscht eine Datei sicher.
- Parameter :
path
(Zeichenfolge, erforderlich): Pfad der zu löschenden Datei
- Rückgaben :
success
(Boolean): Ob das Löschen erfolgreich warpath
(Zeichenfolge): Pfad zur gelöschten Datei
file_move
Verschiebt oder benennt eine Datei sicher um.
- Parameter :
source
(Zeichenfolge, erforderlich): Quelldateipfaddestination
(Zeichenfolge, erforderlich): Zieldateipfad
- Rückgaben :
success
(Boolesch): Ob der Umzug erfolgreich warsource
(Zeichenfolge): Ursprünglicher Dateipfaddestination
(Zeichenfolge): Neuer Dateipfad
Web-Operationen
web_search
Verwendet eine Suchmaschine, um Informationen im Web zu finden.
- Parameter :
query
(Zeichenfolge, erforderlich): Die zu suchende Abfrage
- Rückgaben :
results
(Array): Liste der Suchergebnissequery
(Zeichenfolge): Die ursprüngliche Abfrage
web_scrape
Scrapt eine bestimmte URL und gibt den Inhalt zurück.
- Parameter :
url
(Zeichenfolge, erforderlich): Die zu scrapende URLselector
(Zeichenfolge, optional): CSS-Selektor zum Ansprechen bestimmter Inhalte
- Rückgaben :
content
(Zeichenfolge): Gescrapter Inhalturl
(Zeichenfolge): Die URL, die gescrapt wurdetitle
(Zeichenfolge): Seitentitelsuccess
(Boolesch): Ob das Scraping erfolgreich warerror
(Zeichenfolge): Fehlermeldung, wenn Scraping fehlgeschlagen ist
web_browse
Durchsucht eine Website interaktiv mit Playwright.
- Parameter :
url
(Zeichenfolge, erforderlich): Start-URL für die Browsersitzung
- Rückgaben :
content
(Zeichenfolge): HTML-Inhalt der Seiteurl
(Zeichenfolge): Die endgültige URL nach allen Weiterleitungentitle
(Zeichenfolge): Seitentitelsuccess
(Boolesch): Ob das Browsen erfolgreich warerror
(Zeichenfolge): Fehlermeldung, wenn das Durchsuchen fehlgeschlagen ist
Ausführungsumgebung
Container-MCP bietet isolierte Ausführungsumgebungen für verschiedene Arten von Vorgängen, jede mit ihren eigenen Sicherheitsmaßnahmen und Ressourcenbeschränkungen.
Containerumgebung
Der Hauptdienst Container-MCP wird in einem Container ausgeführt (mit Podman oder Docker) und stellt die erste Isolationsebene bereit:
- Basis-Image : Ubuntu 24.04
- Benutzer : Nicht-Root-Ubuntu-Benutzer
- Python : 3.12
- Netzwerk : Nur auf Localhost-Bindung beschränkt
- Dateisystem : Volume-Mounts für Konfiguration, Daten und Protokolle
- Sicherheit : AppArmor, Seccomp und Funktionsbeschränkungen
Bash-Ausführungsumgebung
Die Bash-Ausführungsumgebung ist mit mehreren Isolationsebenen konfiguriert:
- Erlaubte Befehle : Beschränkt auf sichere Befehle, die in
BASH_ALLOWED_COMMANDS
konfiguriert sind - Firejail Sandbox : Prozessisolierung mit eingeschränktem Dateisystemzugriff
- AppArmor-Profil : Feinkörnige Zugriffskontrolle
- Ressourcenbeschränkungen :
- Ausführungs-Timeout (Standard: 30 s, Max: 120 s)
- Eingeschränkter Verzeichniszugriff nur auf Sandbox
- Netzwerk : Kein Netzwerkzugriff
- Dateisystem : Nur-Lese-Zugriff auf Daten, Lese-/Schreibzugriff auf Sandbox
Beispiele für zulässige Befehle:
Python-Ausführungsumgebung
Die Python-Ausführungsumgebung ist für die sichere Codeausführung konzipiert:
- Python-Version : 3.12
- Speicherlimit : Konfigurierbare Speicherobergrenze (Standard: 256 MB)
- Ausführungs-Timeout : Konfigurierbares Zeitlimit (Standard: 30 s, max.: 120 s)
- AppArmor-Profil : Beschränkt den Zugriff auf Systemressourcen
- Firejail Sandbox : Prozessisolierung
- Fähigkeiten : Alle Fähigkeiten gelöscht
- Netzwerk : Kein Netzwerkzugriff
- Verfügbare Bibliotheken : Nur Standardbibliothek
- Ausgabeerfassung : stdout/stderr umgeleitet und bereinigt
- Ressourcenkontrollen : CPU- und Speichergrenzen werden durchgesetzt
Dateisystemumgebung
Die Dateisystemumgebung steuert den Zugriff auf Dateien innerhalb der Sandbox:
- Basisverzeichnis : Alle Vorgänge sind auf das Sandbox-Stammverzeichnis beschränkt
- Pfadvalidierung : Alle Pfade werden normalisiert und auf Durchquerungsversuche überprüft
- Größenbeschränkungen : Maximale Dateigröße wird erzwungen (Standard: 10 MB)
- Erweiterungskontrolle : Nur zulässige Erweiterungen sind zulässig (Standard: txt, md, csv, json, py)
- Berechtigungskontrolle : Erzwingung entsprechender Lese-/Schreibberechtigungen
- Isolation : Kein Zugriff auf das Host-Dateisystem
Webumgebung
Die Webumgebung bietet kontrollierten Zugriff auf externe Ressourcen:
- Domänenkontrolle : Optionale Whitelist zulässiger Domänen
- Timeout-Steuerung : Konfigurierbare Timeouts für Vorgänge
- Browsersteuerung : Headless-Browser über Playwright für vollständiges Rendering
- Scraping-Steuerung : Einfaches Scraping über Anfragen/BeautifulSoup
- Inhaltsbereinigung : Alle Inhalte werden analysiert und bereinigt
- Netzwerkisolation : Separater Netzwerk-Namespace über Container
Architektur
Das Projekt folgt einer modularen Architektur:
Jeder Manager folgt konsistenten Designmustern:
.from_env()
Klassenmethode für umgebungsbasierte Initialisierung- Asynchrone Ausführungsmethoden für nicht blockierende Vorgänge
- Starke Eingabevalidierung und Fehlerbehandlung
- Sicherheit steht bei allen Vorgängen an erster Stelle
Sicherheitsmaßnahmen
Container-MCP implementiert mehrere Sicherheitsebenen:
- Containerisolierung : Verwendet Podman/Docker zur Containerisolierung
- AppArmor-Profile : Feinkörnige Zugriffskontrolle für die Bash- und Python-Ausführung
- Firejail Sandboxing : Zusätzliche Prozessisolierung
- Ressourcenbeschränkungen : Speicher-, CPU- und Ausführungszeitbeschränkungen
- Path Traversal Prevention : Validiert und normalisiert alle Dateipfade
- Zulässige Erweiterungsbeschränkungen : Steuert, auf welche Dateitypen zugegriffen werden kann
- Netzwerkbeschränkungen : Kontrolliert, auf welche Domänen zugegriffen werden kann
- Geringste Berechtigungen : Komponenten werden mit den minimal erforderlichen Berechtigungen ausgeführt
Installation
Voraussetzungen
- Linux-System mit Podman oder Docker
- Python 3.12+
- Firejail (
apt install firejail
oderdnf install firejail
) - AppArmor (
apt install apparmor apparmor-utils
oderdnf install apparmor apparmor-utils
)
Schnellstart
Der schnellste Einstieg erfolgt mit dem All-in-One-Skript:
Schritt-für-Schritt-Installation
Sie können die Installationsschritte auch einzeln durchführen:
- Initialisieren Sie das Projekt :
- Bauen Sie den Container :
- Richten Sie die Umgebung ein :
- Führen Sie den Container aus :
- Führen Sie Tests durch (optional):
Verwendung
Sobald der Container läuft, können Sie sich über eine beliebige MCP-Client-Implementierung mit ihm verbinden. Der Server ist unter http://localhost:8000
oder dem in Ihrer Konfiguration angegebenen Port erreichbar.
Wichtig: Bei der Konfiguration Ihres MCP-Clients müssen Sie die Endpunkt-URL auf http://127.0.0.1:<port>/sse
setzen (wobei <port>
standardmäßig 8000 oder der von Ihnen konfigurierte Port ist). Der Pfad /sse
ist für die ordnungsgemäße Kommunikation serverseitig gesendeter Ereignisse erforderlich.
Beispiel eines Python-Clients
Konfiguration
Container-MCP kann über Umgebungsvariablen konfiguriert werden, die in volume/config/custom.env
festgelegt werden können:
Serverkonfiguration
Bash Manager-Konfiguration
Python Manager-Konfiguration
Dateimanagerkonfiguration
Web Manager-Konfiguration
Entwicklung
Einrichten einer Entwicklungsumgebung
- Erstellen Sie eine virtuelle Python-Umgebung:
- Installieren Sie Abhängigkeiten:
- Installieren Sie das Paket im Entwicklungsmodus:
Ausführen von Tests
Entwicklungsserver
So führen Sie den MCP-Server im Entwicklungsmodus aus:
Lizenz
Dieses Projekt ist unter der Apache-Lizenz 2.0 lizenziert.
Autor
Martin Bukowski
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Eine sichere, containerbasierte Implementierung des Model Context Protocol (MCP), die Sandbox-Umgebungen für KI-Systeme bereitstellt, um sicher Code auszuführen, Befehle auszuführen, auf Dateien zuzugreifen und Weboperationen durchzuführen.
Related MCP Servers
- -securityAlicense-qualityAn MCP server to create secure code sandbox environment for executing code within Docker containers.Last updated -69GoMIT License
- -securityFlicense-qualityImplements the Model Context Protocol (MCP) to provide AI models with a standardized interface for connecting to external data sources and tools like file systems, databases, or APIs.Last updated -90Python
- -securityAlicense-qualityA Model Context Protocol (MCP) server that allows AI models to safely access and interact with local file systems, enabling reading file contents, listing directories, and retrieving file metadata.Last updated -471JavaScriptMIT License
- AsecurityAlicenseAqualityA server that uses the Model Context Protocol (MCP) to allow AI agents to safely execute shell commands on a host system.Last updated -1762TypeScriptMIT License