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 ( : Führt Bash-Befehle in Linux-, macOS- oder WSL-Umgebungen aus.
Windows CMD Command Execution Tool ( : Führt CMD-Befehle in Windows-Umgebungen aus.
Windows PowerShell Command Execution Tool ( : Führt PowerShell-Befehle in Windows-Umgebungen aus.
Windows WMI-Abfragetool ( : Führt WMI-Abfragen in Windows-Umgebungen aus.
Wenn in einer Linux-Umgebung der folgende Fehler auftritt:
error: Distribution `pywin32==310 @ registry+https://pypi.org/simple` can't be installed because it doesn't have a source distribution or wheel for the current platform>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
git clone https://github.com/trtyr/MCP-Gateway.git cd MCP-GatewayErstellen und Aktivieren einer virtuellen Umgebung
# Create virtual environment uv venv # Activate virtual environment # Linux/macOS source .venv/bin/activate # Windows (Command Prompt/PowerShell) .venv\Scripts\activateAbhängigkeiten installieren
# Install all required dependencies based on pyproject.toml uv sync
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
SSEVerbindungstyp.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,nodeoder 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 wenncommandangegeben ist): Eine Liste der an dencommandübergebenen Argumente.env(optional, nur wenncommandangegeben 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 : Das Gateway versucht direkt, eine Verbindung mit der angegebenen
urlherzustellen.url: Das Gateway startet zunächst mitcommandundargseinen 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 zururlherzustellen. 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@latestgestartet. Dies ist ein Node.js-Paket, das übernpxausgeführt wird.Konfigurieren Sie :
{ // ... other server configurations ... "playwright": { "type": "stdio", "command": "npx", "args": ["@playwright/mcp@latest"] } // ... other server configurations ... }Hier lautet
command``npxundargsenthält den Namen und die Version des Playwright MCP-Pakets.Gateway neu starten : Speichern Sie
config.jsonund 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 :
{ // ... other server configurations ... "enscan": { "type": "sse", "url": "http://127.0.0.1:8080/sse", // Address ENScan_GO listens on // Note: Ensure path separators are correct on Windows, or use an absolute path "command": "servers/enscan-v1.2.1-windows-amd64.exe", // Path to the executable "args": ["--mcp"] // Startup arguments } // ... other server configurations ... }Hier geben wir
typealsssean, stellen dieurlbereit, auf der er lauscht, und verwendencommandundargs, um dem Gateway mitzuteilen, wie dieser lokale SSE-Server gestartet werden soll.Gateway neu starten : Speichern Sie
config.jsonund 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
- zlib License
 - MIT License
 - MIT License