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:
Bitte 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 klonen
- Erstellen und Aktivieren einer virtuellen Umgebung
- Abhängigkeiten installieren
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 lautetcommand``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 wirtype
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