Express-MCP-Handler
Eine Middleware zur Integration des Model Context Protocol (MCP) mit Express-Anwendungen, die eine nahtlose Kommunikation zwischen LLMs und Tools ermöglicht.
Was ist das Model Context Protocol (MCP)?
Model Context Protocol (MCP) ist ein offenes Protokoll zur Integration großer Sprachmodelle (LLMs) mit externen Datenquellen und Tools. Es ermöglicht KI-Assistenten den Zugriff auf Echtzeitdaten, die Ausführung von Operationen und die Interaktion mit verschiedenen Diensten über eine standardisierte Schnittstelle.
Related MCP server: Memory Cache Server
Merkmale
Stateful Handler : Kann einmalige Anfragen verarbeiten oder langlebige Sitzungen mit Sitzungs-IDs und Server-Sent Events (SSE) aufrechterhalten.
Stateless Handler : Behandelt jede Anfrage vollständig isoliert für einfache, einmalige Interaktionen.
SSE-Handler : Verarbeitet Model Context Protocol (MCP) über Server-Sent Events (SSE) mit dedizierten GET- und POST-Endpunkten.
Typsichere API : Erstellt mit TypeScript für zuverlässige Integration.
Flexible Konfiguration : Anpassbare Fehlerbehandlung, Sitzungsverwaltung und Lebenszyklus-Hooks.
Express-Integration : Lässt sich mit Middleware-Muster direkt in Express-Routen einbinden.
Installation
Über npm installieren:
Oder Garn:
Oder pnpm:
Peer-Abhängigkeiten
Dieses Paket erfordert die folgenden Peer-Abhängigkeiten:
express>= 4.0.0@modelcontextprotocol/sdk>= 1.10.2zod>= 3.0.0
Installieren Sie sie, falls Sie dies noch nicht getan haben:
Schnellstart
Hier ist ein einfaches Beispiel für den Einstieg:
Verwendung
Express-mcp-handler bietet drei Handlertypen für unterschiedliche Anwendungsfälle:
Stateful-Modus
Verwenden Sie statefulHandler , um wiederverwendbare Sitzungen zwischen Client und Server einzurichten. Dies ist ideal, um den Kontext über mehrere Interaktionen hinweg aufrechtzuerhalten:
Der Stateful-Handler:
Initialisiert eine neue Sitzung bei der ersten Anfrage (ohne
mcp-session-idHeader)Gibt einen
mcp-session-idHeader zurück, den Clients in nachfolgende Anfragen einschließen müssenVerwaltet Server-Sent Events (SSE), um Nachrichten vom Server an den Client zu senden
Bereinigt Sitzungen automatisch, wenn sie geschlossen werden
Zustandsloser Modus
Verwenden Sie statelessHandler für die einmalige Anforderungsverarbeitung ohne Sitzungsverwaltung, perfekt für serverlose Umgebungen oder einfache Anforderungen:
Jede zustandslose Anfrage:
Erstellt eine neue Transport- und Serverinstanz
Gewährleistet vollständige Isolierung ohne Sitzungsverfolgung
Ist für einfache oder serverlose Umgebungen geeignet
SSE-Modus
Verwenden Sie sseHandlers , um Model Context Protocol (MCP) über Server-Sent Events (SSE) zu verarbeiten, ideal für Streaming-Antworten in Echtzeit:
SSE-Handler bieten:
GET /sse : Erstellt den SSE-Stream und gibt einen
mcp-session-idHeader zurückPOST /messages : Sendet MCP-Nachrichten über den SSE-Transport unter Verwendung des Abfrageparameters
mcp-session-id
API-Referenz
StatefulHandler
Parameter | Typ | Beschreibung |
|
| Instanz von
zur Handhabung der Protokolllogik |
|
| Funktion, die eine eindeutige Sitzungs-ID zurückgibt |
|
| (optional) Rückruf mit der neuen Sitzungs-ID |
|
| (optional) Rückruf, der beim Schließen einer Sitzung aufgerufen wird |
|
| (optional) Rückruf bei Fehlern |
|
| (optional) Rückruf, der beim Zugriff auf eine ungültige Sitzung aufgerufen wird |
zustandsloser Handler
Parameter | Typ | Beschreibung |
|
| Funktion, die für jede Anfrage eine neue Serverinstanz zurückgibt |
|
| (optional) Generierung der Transportsitzungs-ID überschreiben |
|
| (optional) Rückruf wird ausgelöst, wenn der Anfrage-/Antwortzyklus endet |
|
| (optional) Rückruf, der bei Fehlern während der Verarbeitung ausgelöst wird |
sseHandlers
Parameter | Typ | Beschreibung |
|
| Factory-Funktion, die für jede SSE-Verbindung einen neuen
zurückgibt |
|
| (optional) Rückruf wird bei Fehlern aufgerufen, empfängt
und optionale
|
|
| (optional) Rückruf, der aufgerufen wird, wenn eine SSE-Sitzung geschlossen wird, empfängt
|
Fehlerbehandlung
Alle Handlertypen unterstützen die benutzerdefinierte Fehlerbehandlung über ihre Optionen:
TypeScript-Unterstützung
Dieses Paket ist in TypeScript geschrieben und bietet Typdefinitionen für alle Exporte. Bei Verwendung von TypeScript profitieren Sie von vollständigem IntelliSense und Typprüfung.
Entwicklung
So tragen Sie zu diesem Projekt bei:
Testabdeckung
Das Projekt verfügt über eine solide Testabdeckung und verspricht, diese aufrechtzuerhalten.
Alle Änderungen werden über unsere CI/CD-Pipeline überprüft, wobei Jest zum Testen und Codecov zum Berichten der Abdeckung verwendet wird.
Kontinuierliche Integration
Dieses Projekt nutzt GitHub Actions für kontinuierliche Integration. Jeder Push zum Hauptzweig und Pull Request führt zu:
Führen Sie den Lint-Check durch
Erstellen des Projekts
Führen Sie Tests mit Abdeckung durch
Abdeckungsberichte zu Codecov hochladen
Sie können den aktuellen CI-Status im Badge oben in dieser README-Datei oder auf der Registerkarte „Aktionen“ des GitHub-Repositorys anzeigen.
Lizenz
Veröffentlichen auf npm
Melden Sie sich bei npm an, falls Sie dies noch nicht getan haben:
Veröffentlichen Sie das Paket in npm (führt Ihren PrepublishOnly-Build aus):
So erhöhen, markieren und pushen Sie eine neue Version:
Handlertypen im Überblick
Handler | Szenario | Sitzungen | Streaming |
zustandsloser Handler | Einmalige oder serverlose Workloads | NEIN | NEIN |
StatefulHandler | Multiturn-Interaktionen | Ja | Ja |
sseHandlers | SSE-Streaming in Echtzeit | Ja | Ja |
Fehlerbehebung
Fehlender
Stellen Sie sicher, dass der Client den mcp-session-id Header einschließt, der bei der ursprünglichen Anforderung zurückgegeben wurde.
Verkehrsanbindung vorzeitig geschlossen
Überprüfen Sie die Netzwerkkonnektivität und stellen Sie sicher, dass der Client SSE-Ereignisse ordnungsgemäß verarbeitet.
Änderungsprotokoll
Alle wesentlichen Änderungen an diesem Projekt sind im CHANGELOG.md dokumentiert.