Skip to main content
Glama
mcp-helmet

mcp-helmet

by ankitvirdi4

mcp-helmet

npm CI License Types

Промышленное промежуточное ПО для серверов MCP. Аутентификация, сессии, проверки работоспособности, корректное завершение работы, эргономика транспорта. Компонуемое промежуточное ПО, идейно заимствованное из helmet для Express.

mcp-helmet дополняет официальный @modelcontextprotocol/sdk тем, чего в нем нет: автоматическое определение транспорта, обертки контента, проверки работоспособности, корректное завершение работы, управление сессиями и промежуточное ПО для аутентификации. Один пакет. Компонуемый. Отключайте то, что вам не нужно. Переходите от «hello world» к продакшену за минуты, а не дни.

npm install mcp-helmet @modelcontextprotocol/sdk zod

Peer-зависимости: @modelcontextprotocol/sdk ^1.29.0, zod ^3.22.0 или ^3.25 (v4). zod-to-json-schema является опциональной peer-зависимостью для пользователей Zod v3.

Быстрый старт

Самый быстрый способ — использовать генератор проектов:

npx mcp-helmet init my-server --transport http --auth bearer
cd my-server
npm install
npm run dev

Вы получите работающий сервер MCP с healthCheck(), gracefulShutdown(), опциональной аутентификацией, многоэтапным Dockerfile и tsconfig с проверкой типов. Используйте флаги, чтобы пропустить части (--no-docker, --no-health и т. д.), или настройте их позже.

Или подключите вручную:

import { createServer } from "mcp-helmet";
import { z } from "zod";

const server = createServer({ name: "hello", version: "1.0.0" });

server.tool("greet", { name: z.string() }, async ({ name }) => {
  return `Hello, ${name}!`;
});

await server.start();

Вот и все. Никакой настройки транспорта, создания массивов контента или обработчиков сигналов. Запустите его:

# Local development (stdio, the default)
npx tsx src/index.ts

# Production (HTTP)
MCP_TRANSPORT=http PORT=3000 node dist/index.js

Тот же код, оба режима.

Related MCP server: mcp-server-toolkit

Аутентификация в 6 строк

Проверка Bearer-токена, при этом проверенный субъект доступен внутри любого обработчика инструментов:

import { createServer, bearerAuth, getAuthContext } from "mcp-helmet";

const server = createServer({ name: "secure", version: "1.0.0" });

server.use(bearerAuth({
  verify: async (token) => {
    const claims = await verifyJwt(token); // your call
    return { user: claims.sub, scopes: claims.scope?.split(" ") ?? [] };
  },
}));

server.tool("whoami", {}, async () => {
  const auth = getAuthContext();
  return { user: auth?.user, scopes: auth?.scopes };
});

await server.start();

Сигнатура обработчика инструментов с одним аргументом остается прежней — getAuthContext() считывает данные из AsyncLocalStorage, поэтому это работает с любой глубины асинхронной цепочки.

Почему это существует

Мы проанализировали 30 промышленных серверов MCP и 320 тикетов на GitHub в официальных SDK. Постоянно повторялись три паттерна:

  1. Каждый сервер переписывает одни и те же 20-40 строк настройки. Выбор транспорта, обертка контента, форматирование ошибок, обработка сигналов. SDK дает вам строительные блоки; это дает вам готовый дом.

  2. Серверы, работающие локально, ломаются в продакшене. Docker-контейнеры завершаются после одного ответа, поды Kubernetes теряют сессии, нет проверки работоспособности для балансировщиков нагрузки. 52% удаленных эндпоинтов MCP в недавнем исследовании были нерабочими.

  3. Никто не может разобраться с аутентификацией. «Как мне получить доступ к Bearer-токену внутри моего инструмента?» — самый частый вопрос в обоих репозиториях SDK.

mcp-helmet решает эти проблемы с помощью компонуемого промежуточного ПО, которое расширяет SDK, не заменяя его.

Статус

v0.1.0-alpha — функциональность завершена. В настоящее время реализовано:

  • ✅ createServer() с автоматической оберткой контента (строка, объект, Content[])

  • ✅ Автоматическое определение транспорта через переменную окружения MCP_TRANSPORT

  • ✅ Шим совместимости Zod v3 + v4

  • ✅ Система компонуемого промежуточного ПО (server.use(mw))

  • ✅ Промежуточное ПО healthCheck()

  • ✅ Промежуточное ПО gracefulShutdown()

  • ✅ Промежуточное ПО bearerAuth() и apiKeyAuth() с getAuthContext() на основе AsyncLocalStorage

  • ✅ Промежуточное ПО rateLimiter() (скользящее окно, на основе IP или ключа, стандартные заголовки 429)

  • ✅ CLI-генератор npx mcp-helmet init + шаблон Docker

Стабильная версия v0.1.0 выйдет после того, как альфа-цикл пройдет 30+ дней реального использования. v0.2 находится в ROADMAP: хранилище сессий на базе Redis, промежуточное ПО для структурированного логирования, порт для Python через плагин FastMCP.

Как это соотносится с официальным SDK

mcp-helmet — это не форк, не альтернатива и не замена. Это слой удобства.

Задача

Официальный SDK

mcp-helmet

Реализация протокола

Да

Нет, делегирует SDK

Классы транспорта

Да

Нет, оборачивает транспорты SDK

Регистрация инструментов/ресурсов/промптов

Да

Да, более легкий API

Потоки OAuth-сервера

Да (в разработке v2)

Нет, вне области видимости

Промежуточное ПО Bearer/API-key

Привязано к Express в v2

Агностично к транспорту, компонуемое

Проверки работоспособности

Нет

Да, запланировано

Внешнее хранилище сессий

Нет

Временное решение до появления SEP в апстриме

Шаблоны Docker/развертывания

Нет

Да, запланировано

SDK является peer-зависимостью. Вы используете свою версию. Если SDK добавляет функции, которые пересекаются, промежуточное ПО набора инструментов становится тонким прокси-слоем.

Требования

  • Node.js 20+

  • @modelcontextprotocol/sdk ^1.29.0

  • TypeScript 5.4+ (рекомендуется, не обязательно)

  • Zod 3.22+ или 3.25+ (v4 через подпуть zod/v4)

Участие в разработке

PR и тикеты приветствуются. См. CONTRIBUTING.md для ознакомления с настройкой, тестированием и соглашениями по PR.

Безопасность

См. SECURITY.md для получения информации о порядке ответственного раскрытия информации.

Лицензия

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A production-ready MCP server scaffold that features built-in authentication, Docker support, and a comprehensive CI/CD release pipeline. It provides a standardized template for deploying servers with multi-transport support and configurable read-only modes.
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Production-ready MCP server starter with authentication, observability, and a plugin system for building and deploying MCP servers quickly.
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      A production-ready foundation for building secure, observable MCP servers with built-in authentication, rate limiting, and reference tools like database-query and semantic-search.
      15
      21 npm
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      A production-minded MCP server kit that provides OAuth 2.1/PKCE authentication, rate limiting, scope-gated tools, and two-phase confirmation for building secure MCP servers with custom tools, identity, and storage.
      15 npm
      MIT