MCP Hangar — MCP-сервер для Claude Code: политики и аудит вызовов
Ставит между клиентом и вашими MCP-серверами слой политик: каждый вызов инструмента получает вердикт, а изменения описаний ловятся по дайджесту.
claude mcp add --env MCP_CONFIG=<MCP_CONFIG> --transport stdio mcp-hangar -- uvx mcp-hangarЧто делает MCP Hangar
MCP Hangar — self-hosted сервер на Python, который встаёт на путь вызова инструментов и решает, что до модели дойдёт, а что нет. Список инструментов клиент кеширует, а сам вызов проходит через посредника — там и живут отзыв доступа, разграничение по тенантам и аудит.
Работает так: mcp-hangar init находит ваш MCP-клиент, пишет конфиг, один раз запускает каждый сервер и запоминает дайджест по name, description, inputSchema и outputSchema каждого инструмента. Если сервер между запусками переписал описание, инструмент не отдаётся модели, а вызов на него отвечает как вызов несуществующего. Проверить расхождение можно командой mcp-hangar pin --check — она печатает оба дайджеста и выходит с кодом 1, так что её место в CI или pre-commit. Демо-сервер в examples/rugpull/ переписывает своё описание на ходу, на нём это видно за пару минут.
Для HTTP-режима нужен блок auth: без него Hangar откажется биндить не-loopback интерфейс. Флаг --unsafe-no-auth годится только для быстрой демонстрации. Через stdio процесс-родитель считается границей доверия, поэтому вызывающего объявляют в auth.stdio.principal.
Какие задачи решает
- заблокировать вызов инструмента, описание которого подменили между запусками
- проверить в CI, что набор инструментов MCP-серверов не разошёлся с зафиксированным дайджестом
- ограничить, какие инструменты и с какими аргументами доступны конкретному тенанту
- собрать журнал вызовов с привязкой к тому, кто их сделал
- поднять HTTP-эндпоинт MCP с REST API на
/api/вместо stdio
Примеры запросов агенту
- Запусти
mcp-hangar init -y, чтобы он нашёл мой MCP-клиент и записал конфиг - Прогони
mcp-hangar pin --checkпоconfig.yaml— хочу увидеть, не поменялись ли описания инструментов - Подними
mcp-hangar serve --config config.yaml --http --port 8000и покажи, что отдаёт/api/
Как установить MCP Hangar
Командой платформы
claude mcp add --env MCP_CONFIG=<MCP_CONFIG> --transport stdio mcp-hangar -- uvx mcp-hangarВместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from mcp-hangar <команда>
Командой платформы
codex mcp add mcp-hangar --env MCP_CONFIG=<MCP_CONFIG> -- uvx mcp-hangarВместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from mcp-hangar <команда>
Файл настроек
{
"mcpServers": {
"mcp-hangar": {
"command": "uvx",
"args": [
"mcp-hangar"
],
"env": {
"MCP_CONFIG": "<MCP_CONFIG>"
}
}
}
}Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from mcp-hangar <команда>
Файл настроек
{
"servers": {
"mcp-hangar": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-hangar"
],
"env": {
"MCP_CONFIG": "<MCP_CONFIG>"
}
}
}
}Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from mcp-hangar <команда>
Командой платформы
gemini mcp add -e MCP_CONFIG=<MCP_CONFIG> mcp-hangar uvx mcp-hangarВместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from mcp-hangar <команда>
По шагам, с командами для каждой платформы: Как подключить MCP-сервер: Claude Code, Codex, Cursor, VS Code, Gemini CLI и другие
Вопросы о MCP Hangar
Как установить MCP Hangar в Claude Code?
Добавьте сервер командой claude mcp add hangar -- uvx mcp-hangar. Если нужен свой конфиг, используйте вариант с переменной окружения: claude mcp add --env MCP_CONFIG=<MCP_CONFIG> --transport stdio mcp-hangar -- uvx mcp-hangar.
Что делает MCP Hangar?
Это плоскость принуждения политик для MCP: он посредничает вызовы инструментов, выдаёт по каждому вердикт и ведёт атрибутируемый аудит с выгрузкой в SIEM. Работает self-hosted, лицензия MIT.
Что нужно, чтобы поднять HTTP-режим?
Настроенный блок auth в конфиге. Без него Hangar не станет биндить не-loopback интерфейс; --unsafe-no-auth оставьте для демонстрации.