mcp-helmet
mcp-helmet
Промышленное промежуточное ПО для серверов MCP. Аутентификация, сессии, проверки работоспособности, корректное завершение работы, эргономика транспорта. Компонуемое промежуточное ПО, идейно заимствованное из
helmetдля Express.
mcp-helmet дополняет официальный @modelcontextprotocol/sdk тем, чего в нем нет: автоматическое определение транспорта, обертки контента, проверки работоспособности, корректное завершение работы, управление сессиями и промежуточное ПО для аутентификации. Один пакет. Компонуемый. Отключайте то, что вам не нужно. Переходите от «hello world» к продакшену за минуты, а не дни.
npm install mcp-helmet @modelcontextprotocol/sdk zodPeer-зависимости:
@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Тот же код, оба режима.
Аутентификация в 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. Постоянно повторялись три паттерна:
Каждый сервер переписывает одни и те же 20-40 строк настройки. Выбор транспорта, обертка контента, форматирование ошибок, обработка сигналов. SDK дает вам строительные блоки; это дает вам готовый дом.
Серверы, работающие локально, ломаются в продакшене. Docker-контейнеры завершаются после одного ответа, поды Kubernetes теряют сессии, нет проверки работоспособности для балансировщиков нагрузки. 52% удаленных эндпоинтов MCP в недавнем исследовании были нерабочими.
Никто не может разобраться с аутентификацией. «Как мне получить доступ к 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.0TypeScript 5.4+ (рекомендуется, не обязательно)
Zod 3.22+ или 3.25+ (v4 через подпуть
zod/v4)
Участие в разработке
PR и тикеты приветствуются. См. CONTRIBUTING.md для ознакомления с настройкой, тестированием и соглашениями по PR.
Безопасность
См. SECURITY.md для получения информации о порядке ответственного раскрытия информации.
Лицензия
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ankitvirdi4/mcp-helmet'
If you have feedback or need assistance with the MCP directory API, please join our Discord server