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
- 🔍
tool
automática,resource
y descubrimiento y registroprompt
- Validació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)
Instalación
Inicio rápido
1. Módulo de importación
2. Definir herramientas y recursos
¡Ya estás listo!
[!TIP] El ejemplo anterior muestra cómo se accede a los encabezados
Request
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 |
---|---|---|
name | Obligatorio. El nombre de su servidor MCP. | - |
version | Obligatorio. La versión de su servidor MCP. | - |
capabilities | Funciones opcionales del servidor MCP para publicidad. Consulte @modelcontextprotocol/sdk . | undefined |
instructions | Instrucciones opcionales para el cliente sobre cómo interactuar con el servidor. | undefined |
transport | Especifica el tipo(s) de transporte a habilitar. | [McpTransportType.SSE, McpTransportType.STREAMABLE_HTTP, McpTransportType.STDIO] |
sseEndpoint | La ruta del punto final para la conexión SSE (utilizada con el transporte SSE ). | 'sse' |
messagesEndpoint | La ruta del punto final para enviar mensajes (utilizada con el transporte SSE ). | 'messages' |
mcpEndpoint | La ruta del punto final base para las operaciones MCP (utilizada con el transporte STREAMABLE_HTTP ). | 'mcp' |
globalApiPrefix | Un prefijo global para todos los puntos finales de MCP. Útil si se integra en una aplicación existente. | '' |
guards | Una matriz de protectores NestJS para aplicar a los puntos finales de MCP para autenticación/autorización. | [] |
decorators | Una matriz de decoradores de clase NestJS para aplicar a los controladores MCP generados. | [] |
sse | Configuración específica del transporte SSE . | { pingEnabled: true, pingIntervalMs: 30000 } |
sse.pingEnabled | Si se deben habilitar mensajes de ping SSE periódicos para mantener la conexión activa. | true |
sse.pingIntervalMs | El intervalo (en milisegundos) para enviar mensajes de ping SSE. | 30000 |
streamableHttp | Configuración específica del transporte STREAMABLE_HTTP . | { enableJsonResponse: true, sessionIdGenerator: undefined, statelessMode: true } |
streamableHttp.enableJsonResponse | Si true , permite que el punto final /mcp devuelva respuestas JSON para solicitudes que no son de transmisión (como listTools ). | true |
streamableHttp.sessionIdGenerator | Una función para generar identificadores de sesión únicos al ejecutarse en modo con estado. Obligatorio si statelessMode es false . | undefined |
streamableHttp.statelessMode | Si true , el transporte STREAMABLE_HTTP funciona sin estado (sin sesiones). Si es false , funciona con estado, lo que requiere un sessionIdGenerator . | true |
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Un módulo NestJS que permite exponer los servicios como un servidor MCP con transporte de eventos enviados por el servidor, lo que facilita el descubrimiento y la ejecución de herramientas por parte de los clientes.
- Características
- Instalación
- Inicio rápido
- Inicio rápido para STDIO
- Puntos finales de API
- Autenticación
- Patio de juegos
- Configuración
Related Resources
Related MCP Servers
- -securityAlicense-qualityA demonstration server that implements the Model Context Protocol (MCP) SDK, providing tools and endpoints for server-sent events and message handling.Last updated -417TypeScriptMIT License
- -securityFlicense-qualityA server for Model Context Protocol (MCP) that uses Server-Sent Events (SSE) for streaming communication, enabling tools like the HackerNews API to be accessed through a secure HTTP+SSE transport.Last updated -23TypeScript
- -securityFlicense-qualityAn MCP server that enables interaction with Nexmo's Messages API, allowing agents to send and manage messages across various channels via natural language commands.Last updated -Python
- -securityFlicense-qualityAn MCP (Model Context Protocol) server implementation using HTTP SSE (Server-Sent Events) connections with built-in utility tools including echo, time, calculator, and weather query functionality.Last updated -JavaScript