Integrations
Provides integration with Express, allowing developers to easily add Model Context Protocol (MCP) capabilities to Express applications with both stateful session management and stateless request handling options.
express-mcp-обработчик
Промежуточное программное обеспечение для интеграции протокола контекста модели (MCP) с приложениями Express, обеспечивающее бесперебойную связь между LLM и инструментами.
Что такое протокол контекста модели (MCP)?
Model Context Protocol (MCP) — открытый протокол для интеграции больших языковых моделей (LLM) с внешними источниками данных и инструментами. Он позволяет помощникам ИИ получать доступ к данным в реальном времени, выполнять операции и взаимодействовать с различными службами через стандартизированный интерфейс.
Функции
- Обработчик с отслеживанием состояния : может обрабатывать разовые запросы или поддерживать долгосрочные сеансы с идентификаторами сеансов и событиями, отправленными сервером (SSE).
- Обработчик без сохранения состояния : обрабатывает каждый запрос в полной изоляции для простых одноразовых взаимодействий.
- Обработчик SSE : обрабатывает протокол контекста модели (MCP) через события, отправленные сервером (SSE), с выделенными конечными точками GET и POST.
- Type-Safe API : создан на основе TypeScript для надежной интеграции.
- Гибкая конфигурация : настраиваемая обработка ошибок, управление сеансами и хуки жизненного цикла.
- Интеграция Express : подключается напрямую к маршрутам Express с помощью шаблона промежуточного программного обеспечения.
Установка
Установить через npm:
Или пряжа:
Или пнпм:
Зависимости от сверстников
Для этого пакета требуются следующие одноранговые зависимости:
express
>= 4.0.0@modelcontextprotocol/sdk
>= 1.10.2zod
>= 3.0.0
Установите их, если вы еще этого не сделали:
Быстрый старт
Вот простой пример, с которого можно начать:
Использование
Express-mcp-handler предоставляет три типа обработчиков для различных вариантов использования:
Режим с отслеживанием состояния
Используйте statefulHandler
для создания многоразовых сеансов между клиентом и сервером, что идеально подходит для сохранения контекста при множественных взаимодействиях:
Обработчик с отслеживанием состояния:
- Инициализирует новый сеанс по первому запросу (без заголовка
mcp-session-id
) - Возвращает заголовок
mcp-session-id
, который клиенты должны включать в последующие запросы. - Управляет событиями, отправленными сервером (SSE), для передачи сообщений с сервера клиенту
- Автоматически очищает сеансы при закрытии
Режим без сохранения состояния
Используйте statelessHandler
для обработки одноразовых запросов без управления сеансами, что идеально подходит для сред без сервера или простых запросов:
Каждый запрос без указания состояния:
- Создает новый транспорт и экземпляр сервера
- Обеспечивает полную изоляцию без отслеживания сеанса
- Подходит для простых или бессерверных сред.
Режим SSE
Используйте sseHandlers
для обработки протокола контекста модели (MCP) через события, отправленные сервером (SSE), что идеально подходит для потоковых ответов в реальном времени:
Обработчики SSE предоставляют:
- GET /sse : устанавливает поток SSE и возвращает заголовок
mcp-session-id
- POST /messages : отправляет сообщения MCP через транспорт SSE, используя параметр запроса
mcp-session-id
Ссылка на API
statefulHandler
Параметр | Тип | Описание |
---|---|---|
server | McpServer | Экземпляр McpServer для обработки логики протокола |
options.sessionIdGenerator | () => string | Функция, возвращающая уникальный идентификатор сеанса |
options.onSessionInitialized | (sessionId: string) => void | (необязательно) Обратный вызов с новым идентификатором сеанса |
options.onSessionClosed | (sessionId: string) => void | (необязательно) Обратный вызов, вызываемый при закрытии сеанса |
options.onError | (error: Error, sessionId?: string) => void | (необязательно) Обратный вызов при возникновении ошибок |
options.onInvalidSession | (req: express.Request) => void | (необязательно) Обратный вызов, вызываемый при доступе к недействительному сеансу |
statelessHandler
Параметр | Тип | Описание |
---|---|---|
serverFactory | () => McpServer | Функция, которая возвращает новый экземпляр сервера для каждого запроса |
options.sessionIdGenerator | () => string | (необязательно) Переопределить генерацию идентификатора сеанса транспорта |
options.onClose | (req: express.Request, res: express.Response) => void | (необязательно) Обратный вызов запускается по завершении цикла запрос/ответ |
options.onError | (error: Error) => void | (необязательно) Обратный вызов, срабатывающий при возникновении ошибок во время обработки |
sseHandlers
Параметр | Тип | Описание |
---|---|---|
serverFactory | ServerFactory | Фабричная функция, которая возвращает новый McpServer для каждого SSE-подключения |
options.onError | (error: Error, sessionId?: string) => void | (необязательно) Обратный вызов, вызываемый при ошибках, получает error и необязательный sessionId |
options.onClose | (sessionId: string) => void | (необязательно) Обратный вызов, вызываемый при закрытии сеанса SSE, получает sessionId |
Обработка ошибок
Все типы обработчиков поддерживают индивидуальную обработку ошибок с помощью своих параметров:
Поддержка TypeScript
Этот пакет написан на TypeScript и предоставляет определения типов для всех экспортов. При использовании TypeScript вы получите полный IntelliSense и проверку типов.
Разработка
Чтобы внести свой вклад в этот проект:
Тестовое покрытие
Проект имеет солидное тестовое покрытие и обещает его поддерживать.
Все изменения проверяются через наш конвейер CI/CD с использованием Jest для тестирования и Codecov для составления отчетов о покрытии.
Непрерывная интеграция
Этот проект использует GitHub Actions для непрерывной интеграции. Каждый push в основную ветку и pull request будут:
- Запустите проверку ворса
- Построить проект
- Проведите тесты с покрытием
- Загрузить отчеты о покрытии в Codecov
Текущий статус CI можно просмотреть на значке в верхней части этого файла README или на вкладке «Действия» репозитория GitHub.
Лицензия
Лицензия Массачусетского технологического института
Публикация в npm
Войдите в npm, если вы еще этого не сделали:
Опубликуйте пакет в npm (запустится ваша сборка prepublishOnly):
Чтобы добавить, пометить и выложить новую версию:
Краткий обзор типов обработчиков
Обработчик | Сценарий | Сессии | Потоковое вещание |
---|---|---|---|
statelessHandler | Разовые или бессерверные рабочие нагрузки | Нет | Нет |
statefulHandler | Многооборотные взаимодействия | Да | Да |
sseHandlers | Потоковая передача SSE в реальном времени | Да | Да |
Поиск неисправностей
Отсутствует заголовок mcp-session-id
Убедитесь, что клиент включает заголовок mcp-session-id
возвращенный в первоначальном запросе.
Транспортное сообщение закрыто преждевременно
Проверьте сетевое подключение и убедитесь, что клиент правильно обрабатывает события SSE.
Журнал изменений
Все существенные изменения в этом проекте задокументированы в CHANGELOG.md .
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.
Утилита, которая интегрирует протокол контекста модели (MCP) в приложения Express, предлагая как управление сеансами с сохранением состояния, так и возможности обработки запросов без сохранения состояния.
Related MCP Servers
- -securityAlicense-qualityMCP Server simplifies the implementation of the Model Context Protocol by providing a user-friendly API to create custom tools and manage server workflows efficiently.Last updated -43TypeScriptMIT License
- -securityAlicense-qualityMCP Server provides a simpler API to interact with the Model Context Protocol by allowing users to define custom tools and services to streamline workflows and processes.Last updated -132TypeScriptMIT License
- AsecurityAlicenseAqualityA Model Context Protocol (MCP) server that provides tools for managing todo items, including creation, updating, completion, deletion, searching, and summarizing tasks.Last updated -104TypeScriptMIT License
- AsecurityFlicenseAqualityA Model Context Protocol (MCP) server that provides a simple sleep/wait tool, useful for adding delays between operations such as waiting between API calls or testing eventually consistent systems.Last updated -167JavaScript