Módulo de servidor MCP de NestJS
Un módulo NestJS para exponer sin esfuerzo herramientas, recursos y avisos para IA, desde sus aplicaciones NestJS utilizando el Protocolo de contexto de modelo (MCP) .
Con @rekog/mcp-nest define herramientas, recursos y avisos de una manera familiar en NestJS y aprovecha todo el poder de la inyección de dependencia para utilizar tu base de código existente en la creación de servidores MCP complejos y listos para la empresa.
Características
🚀 Soporte para todos los tipos de transporte:
HTTP transmisible
HTTP+SSE
STDIO
🔍
toolautomática,resourcey descubrimiento y registropromptValidación de llamadas a herramientas basadas en Zod
📊 Notificaciones de progreso
Autenticación basada en guardia
🌐 Acceso a la información de solicitudes HTTP dentro de los recursos de MCP (herramientas, recursos, indicaciones)
Related MCP server: SSE MCP Server
Instalación
Inicio rápido
1. Módulo de importación
2. Definir herramientas y recursos
¡Ya estás listo!
El ejemplo anterior muestra cómo se accede a los encabezadosRequest HTTP en MCP Tools. Esto resulta útil para identificar usuarios, agregar lógica específica del cliente y muchos otros casos de uso. Para más ejemplos, consulte las Pruebas de autenticación .
Inicio rápido para STDIO
La principal diferencia es que debes proporcionar la opción transport al importar el módulo.
El resto es igual: puedes definir herramientas, recursos y avisos como siempre. A continuación, se muestra un ejemplo de una aplicación NestJS independiente que utiliza el transporte STDIO:
A continuación, puede utilizar el servidor MCP con un cliente MCP Stdio ( ver ejemplo ) o, después de crear su proyecto, puede usarlo con la siguiente configuración de cliente MCP:
Puntos finales de API
El transporte HTTP+SSE expone dos puntos finales:
GET /sse: punto final de conexión SSE (protegido por protectores si está configurado)POST /messages: Punto final de ejecución de la herramienta (protegido por guardias si está configurado)
El transporte HTTP transmisible expone los siguientes puntos finales:
POST /mcp: Punto final principal para todas las operaciones de MCP (ejecución de herramientas, acceso a recursos, etc.). En modo con estado, crea y mantiene sesiones.GET /mcp: Establece flujos de eventos enviados por el servidor (SSE) para actualizaciones en tiempo real y notificaciones de progreso. Solo disponible en modo con estado.DELETE /mcp: Finaliza las sesiones MCP. Solo disponible en modo con estado.
Consejos
Es posible utilizar el módulo con prefijo global, pero la forma recomendada es excluir esos puntos finales con:
Autenticación
Puede proteger sus puntos finales de MCP utilizando NestJS Guards estándar.
1. Crea un guardia
Implementar la interfaz CanActivate . El guardián debe gestionar la validación de solicitudes (p. ej., comprobar JWT y claves API) y, opcionalmente, adjuntar información del usuario al objeto de solicitud.
Nada especial, consulte la documentación de NestJS para obtener más detalles.
2. Aplicar la protección
Transfiera sus protecciones a la configuración de McpModule.forRoot . Estas se aplicarán a los puntos finales /sse y /messages .
¡Listo! El resto es igual que con NestJS Guards.
Patio de juegos
El directorio playground contiene ejemplos para probar rápidamente las funciones de MCP y @rekog/mcp-nest . Consulte el playground/README.md para obtener más información.
Configuración
El método McpModule.forRoot() acepta un objeto McpOptions para configurar el servidor. Estas son las opciones disponibles:
Opción | Descripción | Por defecto |
| Obligatorio. El nombre de su servidor MCP. | - |
| Obligatorio. La versión de su servidor MCP. | - |
| Funciones opcionales del servidor MCP para publicidad. Consulte . |
|
| Instrucciones opcionales para el cliente sobre cómo interactuar con el servidor. |
|
| Especifica el tipo(s) de transporte a habilitar. |
|
| La ruta del punto final para la conexión SSE (utilizada con el transporte
). |
|
| La ruta del punto final para enviar mensajes (utilizada con el transporte
). |
|
| La ruta del punto final base para las operaciones MCP (utilizada con el transporte
). |
|
| Un prefijo global para todos los puntos finales de MCP. Útil si se integra en una aplicación existente. |
|
| Una matriz de protectores NestJS para aplicar a los puntos finales de MCP para autenticación/autorización. |
|
| Una matriz de decoradores de clase NestJS para aplicar a los controladores MCP generados. |
|
| Configuración específica del transporte
. |
|
| Si se deben habilitar mensajes de ping SSE periódicos para mantener la conexión activa. |
|
| El intervalo (en milisegundos) para enviar mensajes de ping SSE. |
|
| Configuración específica del transporte
. |
|
| Si
, permite que el punto final
devuelva respuestas JSON para solicitudes que no son de transmisión (como
). |
|
| Una función para generar identificadores de sesión únicos al ejecutarse en modo con estado. Obligatorio si
es
. |
|
| Si
, el transporte
funciona sin estado (sin sesiones). Si es
, funciona con estado, lo que requiere un
. |
|