NestJS MCP-Servermodul
Ein NestJS-Modul zum mühelosen Bereitstellen von Tools, Ressourcen und Eingabeaufforderungen für KI aus Ihren NestJS-Anwendungen mithilfe des Model Context Protocol (MCP) .
Mit @rekog/mcp-nest definieren Sie Tools, Ressourcen und Eingabeaufforderungen auf eine Weise, die in NestJS vertraut ist, und nutzen die volle Leistungsfähigkeit der Abhängigkeitsinjektion, um Ihre vorhandene Codebasis beim Erstellen komplexer, unternehmensreifer MCP-Server zu verwenden.
Merkmale
🚀 Unterstützung für alle Transportarten:
Streambares HTTP
HTTP+SSE
STDIO
🔍 Automatisches
tool,resourceundpromptErkennung und Registrierung💯 Zod-basierte Tool-Aufrufvalidierung
📊 Fortschrittsbenachrichtigungen
🔒 Guard-basierte Authentifizierung
🌐 Zugriff auf HTTP-Anforderungsinformationen innerhalb von MCP-Ressourcen (Tools, Ressourcen, Eingabeaufforderungen)
Related MCP server: SSE MCP Server
Installation
Schnellstart
1. Modul importieren
2. Definieren Sie Tools und Ressourcen
Sie sind fertig!
Das obige Beispiel zeigt, wie in MCP Tools auf HTTP-Request zugegriffen wird. Dies ist nützlich, um Benutzer zu identifizieren, clientspezifische Logik hinzuzufügen und viele andere Anwendungsfälle zu ermöglichen. Weitere Beispiele finden Sie in den Authentifizierungstests .
Schnellstart für STDIO
Der Hauptunterschied besteht darin, dass Sie beim Importieren des Moduls die transport angeben müssen.
Der Rest ist gleich. Sie können Tools, Ressourcen und Eingabeaufforderungen wie gewohnt definieren. Ein Beispiel für eine eigenständige NestJS-Anwendung mit STDIO-Transport ist das folgende:
Als Nächstes können Sie den MCP-Server mit einem MCP-Stdio-Client verwenden ( siehe Beispiel ) oder nach dem Erstellen Ihres Projekts mit der folgenden MCP-Client-Konfiguration:
API-Endpunkte
Der HTTP+SSE-Transport stellt zwei Endpunkte bereit:
GET /sse: SSE-Verbindungsendpunkt (durch Schutzvorrichtungen geschützt, falls konfiguriert)POST /messages: Endpunkt der Tool-Ausführung (bei Konfiguration durch Schutzvorrichtungen geschützt)
Der streambare HTTP-Transport stellt die folgenden Endpunkte bereit:
POST /mcp: Hauptendpunkt für alle MCP-Operationen (Toolausführung, Ressourcenzugriff usw.). Im Stateful-Modus werden Sitzungen erstellt und verwaltet.GET /mcp: Erstellt Server-Sent Events (SSE)-Streams für Echtzeit-Updates und Fortschrittsbenachrichtigungen. Nur im Stateful-Modus verfügbar.DELETE /mcp: Beendet MCP-Sitzungen. Nur im Stateful-Modus verfügbar.
Tipps
Es ist möglich, das Modul mit einem globalen Präfix zu verwenden, es wird jedoch empfohlen, diese Endpunkte folgendermaßen auszuschließen:
Authentifizierung
Sie können Ihre MCP-Endpunkte mit standardmäßigen NestJS Guards sichern.
1. Erstellen Sie eine Wache
Implementieren Sie die CanActivate Schnittstelle. Der Guard übernimmt die Anforderungsvalidierung (z. B. Überprüfung von JWTs und API-Schlüsseln) und fügt optional Benutzerinformationen an das Anforderungsobjekt an.
Nichts Besonderes, weitere Einzelheiten finden Sie in der NestJS-Dokumentation.
2. Tragen Sie den Schutz auf
Übergeben Sie Ihre Schutzmaßnahmen an die McpModule.forRoot -Konfiguration. Die Schutzmaßnahmen werden sowohl auf die Endpunkte /sse als auch /messages angewendet.
Das ist alles! Der Rest ist identisch mit NestJS Guards.
Spielplatz
Das playground -Verzeichnis enthält Beispiele zum schnellen Testen von MCP- und @rekog/mcp-nest Funktionen. Weitere Informationen finden Sie in der playground/README.md .
Konfiguration
Die Methode McpModule.forRoot() akzeptiert ein McpOptions -Objekt zur Konfiguration des Servers. Folgende Optionen sind verfügbar:
Option | Beschreibung | Standard |
| Erforderlich. Der Name Ihres MCP-Servers. | - |
| Erforderlich. Die Version Ihres MCP-Servers. | - |
| Optionale MCP-Serverfunktionen zum Ankündigen. Siehe . |
|
| Optionale Anweisungen für den Client zur Interaktion mit dem Server. |
|
| Gibt die zu aktivierenden Transporttypen an. |
|
| Der Endpunktpfad für die SSE-Verbindung (wird mit
Transport verwendet). |
|
| Der Endpunktpfad zum Senden von Nachrichten (wird mit
Transport verwendet). |
|
| Der Basisendpunktpfad für MCP-Operationen (wird mit
-Transport verwendet). |
|
| Ein globales Präfix für alle MCP-Endpunkte. Nützlich bei der Integration in eine vorhandene Anwendung. |
|
| Ein Array von NestJS Guards, die zur Authentifizierung/Autorisierung auf die MCP-Endpunkte angewendet werden. |
|
| Ein Array von NestJS-Klassendekoratoren, die auf die generierten MCP-Controller angewendet werden sollen. |
|
| Konfiguration spezifisch für den
-Transport. |
|
| Ob regelmäßige SSE-Ping-Nachrichten aktiviert werden sollen, um die Verbindung aufrechtzuerhalten. |
|
| Das Intervall (in Millisekunden) zum Senden von SSE-Ping-Nachrichten. |
|
| Konfiguration spezifisch für den
Transport. |
|
| Wenn
, kann der
-Endpunkt JSON-Antworten für Nicht-Streaming-Anfragen (wie
) zurückgeben. |
|
| Eine Funktion zum Generieren eindeutiger Sitzungs-IDs im Stateful-Modus. Erforderlich, wenn
ist. |
|
| Bei
erfolgt der
-Transport zustandslos (keine Sitzungen). Bei
erfolgt der Transport zustandsbehaftet und erfordert einen
. |
|