Модуль сервера NestJS MCP
Модуль NestJS для легкого предоставления инструментов, ресурсов и подсказок для ИИ из ваших приложений NestJS с использованием протокола контекста модели (MCP) .
С помощью @rekog/mcp-nest вы определяете инструменты, ресурсы и запросы так, как это привычно в NestJS, и используете всю мощь внедрения зависимостей, чтобы использовать существующую кодовую базу для создания сложных корпоративных серверов MCP.
Функции
🚀 Поддержка всех типов транспорта:
Потоковое HTTP
HTTP+SSE
СТДИО
🔍 Автоматическое обнаружение и регистрация
tool,resourceиprompt💯 Проверка вызова инструмента на основе Zod
📊 Уведомления о ходе выполнения
🔒 Аутентификация на основе Guard
🌐 Доступ к информации HTTP-запроса в ресурсах MCP (инструменты, ресурсы, подсказки)
Related MCP server: SSE MCP Server
Установка
Быстрый старт
1. Модуль импорта
2. Определите инструменты и ресурсы
Готово!
В примере выше показано, как осуществляется доступ к заголовкам HTTP-Request в MCP Tools. Это полезно для идентификации пользователей, добавления клиентской логики и многих других вариантов использования. Дополнительные примеры см. в разделе Тесты аутентификации .
Быстрый старт для STDIO
Главное отличие заключается в том, что при импорте модуля необходимо указать опцию transport .
Остальное то же самое, вы можете определить инструменты, ресурсы и подсказки как обычно. Пример автономного приложения NestJS, использующего транспорт STDIO, следующий:
Далее вы можете использовать сервер MCP с клиентом MCP Stdio ( см. пример ) или после сборки проекта вы можете использовать его со следующей конфигурацией клиента MCP:
Конечные точки API
Транспорт HTTP+SSE предоставляет две конечные точки:
GET /sse: конечная точка соединения SSE (защищена защитой, если настроена)POST /messages: Конечная точка выполнения инструмента (защищена защитой, если настроена)
Потоковый HTTP-транспорт предоставляет следующие конечные точки:
POST /mcp: Основная конечная точка для всех операций MCP (выполнение инструмента, доступ к ресурсам и т. д.). В режиме сохранения состояния создает и поддерживает сеансы.GET /mcp: Устанавливает потоки Server-Sent Events (SSE) для обновлений в реальном времени и уведомлений о ходе выполнения. Доступно только в режиме с отслеживанием состояния.DELETE /mcp: Завершает сеансы MCP. Доступно только в режиме с отслеживанием состояния.
Советы
Можно использовать модуль с глобальным префиксом, но рекомендуется исключить эти конечные точки с помощью:
Аутентификация
Вы можете защитить свои конечные точки MCP с помощью стандартных средств защиты NestJS.
1. Создайте стражу
Реализуйте интерфейс CanActivate . Guard должен обрабатывать проверку запроса (например, проверку JWT, ключей API) и опционально прикреплять информацию о пользователе к объекту запроса.
Ничего особенного, более подробную информацию можно найти в документации NestJS.
2. Применить защиту
Передайте ваши защитные меры в конфигурацию McpModule.forRoot . Защитные меры будут применены к обеим конечным точкам /sse и /messages .
Вот и все! Остальное то же самое, что и у NestJS Guards.
Детская площадка
Каталог playground содержит примеры для быстрого тестирования функций MCP и @rekog/mcp-nest . Более подробную информацию см. в playground/README.md .
Конфигурация
Метод McpModule.forRoot() принимает объект McpOptions для настройки сервера. Вот доступные параметры:
Вариант | Описание | По умолчанию |
| Обязательно. Имя вашего MCP-сервера. | - |
| Обязательно. Версия вашего сервера MCP. | - |
| Дополнительные возможности сервера MCP для рекламы. См. . |
|
| Дополнительные инструкции для клиента по взаимодействию с сервером. |
|
| Указывает тип(ы) транспорта, которые необходимо включить. |
|
| Путь конечной точки для соединения SSE (используется с транспортом
). |
|
| Конечный путь для отправки сообщений (используется с транспортом
). |
|
| Базовый путь конечной точки для операций MCP (используется с транспортом
). |
|
| Глобальный префикс для всех конечных точек MCP. Полезно при интеграции в существующее приложение. |
|
| Массив NestJS Guards для применения к конечным точкам MCP для аутентификации/авторизации. |
|
| Массив декораторов классов NestJS для применения к сгенерированным контроллерам MCP. |
|
| Конфигурация, специфичная для транспорта
. |
|
| Следует ли включать периодические сообщения SSE ping для поддержания соединения. |
|
| Интервал (в миллисекундах) отправки сообщений SSE ping. |
|
| Конфигурация, специфичная для транспорта
. |
|
| Если
, позволяет конечной точке
возвращать ответы JSON для непотоковых запросов (например,
). |
|
| Функция для генерации уникальных идентификаторов сеансов при работе в режиме с сохранением состояния. Требуется, если
имеет значение
. |
|
| Если
, транспорт
работает без сохранения состояния (без сессий). Если
, он работает с сохранением состояния, требуя
. |
|