Integrations
Provides Bash command execution tools for Linux environments, allowing execution of shell commands through the MCP interface.
Offers Bash command execution capabilities for macOS, enabling shell command execution through the MCP interface.
Supports integration with Node.js-based MCP servers like Playwright MCP through the stdio connection type.
MCP-Gateway
Englisch |简体中文
Lizenz
Dieses Projekt ist unter der GNU General Public License v3.0 lizenziert – weitere Einzelheiten finden Sie in der Datei LICENSE .
Projektübersicht
MCP Gateway ist eine mit Python erstellte Anwendung. Es fungiert als zentrales Gateway , das Verbindungen zu mehreren MCP-Backend-Servern herstellt und deren Funktionen aggregiert (unabhängig davon, ob diese über Stdio- oder SSE-Protokolle kommunizieren). Diese aggregierten Funktionen werden schließlich über einen einheitlichen SSE- Endpunkt ( /sse
) den Upstream-MCP-Clients zur Verfügung gestellt.
Hauptvorteile:
- Vereinfachte Client-Konfiguration: MCP-Clients müssen sich nur mit der einzigen Adresse des MCP-Gateways verbinden, um auf die Funktionen aller Backend-Dienste zuzugreifen. Dadurch entfällt die Notwendigkeit, jeden Backend-Server einzeln zu konfigurieren.
- Aggregation und Orchestrierung von Fähigkeiten: Aggregiert MCP-Tools mit unterschiedlichen Fähigkeiten aus verschiedenen Quellen und bietet so eine Grundlage für die Erstellung leistungsfähigerer, maßgeschneiderter Agenten, die sich auf bestimmte Aufgabenbereiche konzentrieren.
Projektdateistruktur
Integrierte MCP-Server
Dieses Projekt enthält vier Backend-MCP-Server-Tools, die direkt verwendet und ohne zusätzliche Konfiguration in config.json
aktiviert werden können:
- Bash-Befehlsausführungstool (
bash_server.py
) : Führt Bash-Befehle in Linux-, macOS- oder WSL-Umgebungen aus. - Windows CMD Command Execution Tool (
cmd_server.py
) : Führt CMD-Befehle in Windows-Umgebungen aus. - Windows PowerShell Command Execution Tool (
powershell_server.py
) : Führt PowerShell-Befehle in Windows-Umgebungen aus. - Windows WMI-Abfragetool (
wmi_server.py
) : Führt WMI-Abfragen in Windows-Umgebungen aus.
Wenn in einer Linux-Umgebung der folgende Fehler auftritt:
CopyBitte deinstallieren Sie das
wmi
-Modul:uv remove wmi
Installation und Einrichtung
Dieses Projekt ist in Python geschrieben. Die Verwendung von uv
für die Umgebungs- und Abhängigkeitsverwaltung wird empfohlen.
- Repository klonenCopy
- Erstellen und Aktivieren einer virtuellen UmgebungCopy
- Abhängigkeiten installierenCopy
Nach Abschluss dieser Schritte ist das Projekt betriebsbereit.
Schnellstart
Projekthilfe erhalten
Sie können das Argument -h
oder --help
verwenden, um alle verfügbaren Startoptionen anzuzeigen:
Die Ausgabe sieht ungefähr so aus:
Starten Sie das Projekt
Verwenden Sie uv run python main.py
um den Server zu starten. Sie können host
, port
und log-level
angeben:
Nach dem Start sehen Sie eine aufwendig gestaltete Konsolenausgabe ähnlich der Abbildung unten, die den Serverstatus, Verbindungsinformationen und geladene Tools anzeigt:
MCP-Client-Verbindung
Nach dem Start von MCP Gateway können Sie jeden MCP-kompatiblen Client (z. B. Cline, Cursor, Claude Desktop oder einen benutzerdefinierten Client) verwenden, um eine Verbindung mit dem vom Gateway bereitgestellten SSE-Endpunkt herzustellen.
Die Standardadresse lautet http://<Server_IP_Address>:9000/sse
(bei Verwendung des Standardports).
Beispiel (mit ChatWise Connect):
- Wählen Sie
SSE
Verbindungstyp. - Geben Sie die SSE-URL des Gateways ein (z. B.
http://127.0.0.1:9000/sse
). - Klicken Sie auf
Connect
.
Nach einer erfolgreichen Verbindung können Sie alle über das Gateway aggregierten Backend-MCP-Tools im Client sehen:
Protokolle
Laufzeitprotokolle werden automatisch im Ordner logs
im Stammverzeichnis des Projekts gespeichert. Die Protokolldateinamen enthalten Zeitstempel und Protokollebenen, sodass Probleme leicht nachverfolgt werden können.
Konfigurationsdatei ( config.json
)
Die Kernkonfigurationsdatei config.json
befindet sich im Stammverzeichnis des Projekts. Sie definiert die Backend-MCP-Server, mit denen sich MCP Gateway verbinden und die es verwalten muss.
Jeder Eintrag stellt einen Backend-Server dar. Der Schlüssel ist der eindeutige Name, den Sie diesem Backend-Server zuweisen (dieser Name wird als Präfix für seine Funktionen verwendet), und der Wert ist ein Objekt, das die Konfiguration des Servers enthält.
Es werden zwei Arten von Backend-Serververbindungen unterstützt:
stdio
: Kommuniziert mit einem lokal gestarteten MCP-Serverprozess über die Standardeingabe/-ausgabe (stdin/stdout).sse
: Kommuniziert mit einem Remote- oder lokal ausgeführten MCP-Server über das Server-Sent Events (SSE)-Protokoll.
Stdio-Typkonfiguration
Geeignet für lokale MCP-Serverprozesse, deren Lebenszyklus vom Gateway verwaltet werden muss.
Konfigurationsfelder:
type
(erforderlich): Muss"stdio"
sein.command
(erforderlich): Der ausführbare Befehl, der zum Starten des Serverprozesses verwendet wird (z. B.python
,uv
,node
oder der absolute Pfad zu einem Skript/einer ausführbaren Datei).args
(erforderlich): Eine Liste von Argumenten (Liste von Zeichenfolgen), die an dencommand
übergeben werden.env
(optional): Ein Wörterbuch mit Umgebungsvariablen (Dict[str, str]), die für den Kindprozess festgelegt werden sollen. Wird diese Variable weggelassen, übernimmt der Kindprozess die Umgebung des Gateways.
Beispiel:
Funktionsweise: Beim Start des MCP Gateways werden die angegebenen command
und args
(sowie optional env
) verwendet, um einen untergeordneten Prozess zu starten. Das Gateway kommuniziert über die Standardeingabe und -ausgabe dieses untergeordneten Prozesses mit dem MCP-Backend-Server. Beim Herunterfahren versucht das Gateway, diese untergeordneten Prozesse zu beenden.
SSE-Typkonfiguration
Geeignet für die Verbindung mit bereits laufenden MCP-Servern (lokal oder remote) oder für Fälle, in denen das Gateway vor der Verbindung einen lokalen SSE-Serverprozess starten muss.
Konfigurationsfelder:
type
(erforderlich): Muss"sse"
sein.url
(erforderlich): Die SSE-Endpunkt-URL des Backend-MCP-Servers (vollständige HTTP/HTTPS-Adresse).command
(optional): Wenn angegeben, führt das Gateway diesen Befehl beim Start aus, um den lokalen SSE-Server zu starten.args
(optional, nur wenncommand
angegeben ist): Eine Liste der an dencommand
übergebenen Argumente.env
(optional, nur wenncommand
angegeben ist): Umgebungsvariablen, die für den lokal gestarteten untergeordneten Prozess festgelegt werden sollen.
Beispiel 1: Verbindung zu einem bereits laufenden Remote-SSE-Server herstellen
Beispiel 2: Gateway startet einen lokalen SSE-Server und verbindet
So funktioniert es:
- Nur angegebene
url
: Das Gateway versucht direkt, eine Verbindung mit der angegebenenurl
herzustellen. url
,command
und angegebeneargs
: Das Gateway startet zunächst mitcommand
undargs
einen lokalen Prozess (erwartet, dass dieser Prozess die Adresse und den Port derurl
überwacht). Anschließend wartet es kurz (LOCAL_SSE_STARTUP_DELAY
, definiert inclient_manager.py
), bevor es versucht, eine Verbindung zururl
herzustellen. Beim Herunterfahren des Gateways versucht es, diesen lokalen Prozess zu beenden.
Beispiele für zusätzliche Konfigurationen
Hier sind Beispiele zum Hinzufügen von MCP-Servern von Drittanbietern zu config.json
.
Stdio-Beispiel: Playwright MCP
Angenommen, Sie möchten den MCP-Server von Playwright ( @playwright/mcp
) integrieren.
- Startmethode verstehen : Playwright MCP wird normalerweise mit
npx @playwright/mcp@latest
gestartet. Dies ist ein Node.js-Paket, das übernpx
ausgeführt wird. - Konfigurieren Sie
config.json
:Hier lautetCopycommand``npx
undargs
enthält den Namen und die Version des Playwright MCP-Pakets. - Gateway neu starten : Speichern Sie
config.json
und starten Sie MCP Gateway neu.
Nach dem Start sollten Sie in den Konsolenprotokollen und auf Ihrem Client Tools mit dem Namen playwright/...
(z. B. playwright/browse
) sehen.
SSE-Beispiel: ENScan_GO (Lokaler Start)
Angenommen, Sie möchten ENScan_GO integrieren, ein Go-Programm, das mit ./enscan --mcp
gestartet werden kann und einen SSE-Dienst unter http://localhost:8080
bereitstellt.
- Ausführbare Datei abrufen : Laden Sie die ausführbare Datei ENScan_GO herunter (z. B.
enscan-v1.2.1-windows-amd64.exe
) und platzieren Sie sie an einem zugänglichen Ort (z. B. im Verzeichnisservers/
oder in Ihrem Systempfad). - Konfigurieren Sie
config.json
:Hier geben wirCopytype
alssse
an, stellen dieurl
bereit, auf der er lauscht, und verwendencommand
undargs
, um dem Gateway mitzuteilen, wie dieser lokale SSE-Server gestartet werden soll. - Gateway neu starten : Speichern Sie
config.json
und starten Sie MCP Gateway neu.
Das Gateway startet zunächst den ENScan_GO-Prozess und stellt dann eine Verbindung zu http://127.0.0.1:8080/sse
her. Nach dem Start sollten Tools mit dem Namen enscan/...
angezeigt werden.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
MCP-Gateway
Related MCP Servers
- GoApache 2.0
- Python
- MIT License
- PythonMIT License