
shalimov04/mcp-airlock
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
Доверенность управления без гражданства для MCP (2026-07-28): политика, сухая практика, подтверждение личности, аудит, отслеживание
Обзор
mcp-airlock - это прокси-сервер, который вы ставите между агентом ИИ и сервером MCP, когда сервер может делать вещи, которые вы не хотите, чтобы агент делал самостоятельно. В нем говорится о пересмотре протокола 2026-07-28 (безгосударственный: без сеанса, без инициализации, один POST за запрос) и добавляется часть, которую протокол оставляет вам: кому позволено называть то, что, сухие прогоны по умолчанию, человек в петле для опасных вызовов, аудиторский след и отслеживание. Он намеренно мал. Нет никакого пользовательского интерфейса, нет языка политики, кроме плоского YAML, нет собственного MCP SDK. Весь прокси - это одно приложение Starlette плюс несколько вспомогательных модулей. Агент отправляет обычные инструменты / вызов прокси-серверу вместо сервера. Прокси: 1 Выясняет, кто звонит. Это происходит от JWT (Authorization: Bearer) или, если вы запустите его за шлюзом, который уже сделал аутентификацию, из заголовка X-Airlock-Principal. Он никогда не берется из органа запроса. Нет директора, нет звонка.
Обзор (машинный перевод)
Краткий обзор - англ.
mcp-airlock - это прокси-сервер, который вы ставите между агентом ИИ и сервером MCP, когда сервер может это сделать.
То, что вы не хотите, чтобы агент делал сам. В нем говорится о пересмотре 2026-07-28 годов
протокол (без состояния один: нет сессии, нет initialize, один POST на запрос) и добавляет
части, которые протокол оставляет вам: кому позволено называть что, сухие прогоны по умолчанию;
Человек в петле для опасных звонков, аудиторский след и отслеживание.
Он намеренно мал. Нет пользовательского интерфейса, нет языка политики, кроме плоского YAML, нет MCP SDK. собственной. Весь прокси - это одно приложение Starlette плюс несколько вспомогательных модулей.
Как проходит звонок
Агент отправляет обычный T1 на прокси-сервер вместо сервера. Прокси:
1 Выясняет, кто звонит. Это происходит от JWT ([T2]) или, если вы бежите
Он находится за шлюзом, который уже сделал аутентификацию X-Airlock-Principal.
Голова. Он никогда не берется из органа запроса. Нет директора, нет звонка. Имя, которое является
пустой или имеет белое пространство вокруг него также не является основным, из любого источника: обрезанный,
[4] будет [5].
2.Ищите инструмент в политике. Инструменты, которые не перечислены, отклоняются.
Эта страница переведена автоматически. Технические детали смотрите в оригинале.
README
Показан фрагмент оригинального README. Открыть оригинал.
mcp-airlock
mcp-airlock is a proxy you put between an AI agent and an MCP server when the server can do
things you don’t want an agent doing on its own. It speaks the 2026-07-28 revision of the
protocol (the stateless one: no session, no initialize, one POST per request) and adds
the parts the protocol leaves to you: who is allowed to call what, dry runs by default,
a human in the loop for dangerous calls, an audit trail and tracing.
It is deliberately small. There is no UI, no policy language beyond flat YAML, no MCP SDK of its own. The whole proxy is one Starlette app plus a few helper modules.
How a call goes through
The agent sends a normal tools/call to the proxy instead of the server. The proxy:
- Works out who is calling. That comes from a JWT (
Authorization: Bearer) or, if you run it behind a gateway that already did the authentication, from anX-Airlock-Principalheader. It is never taken from the request body. No principal, no call. A name that is blank or has whitespace around it is no principal either, from either source: trimmed,alicewould bealice. - Looks the tool up in the policy. Tools that are not listed are refused. Listed tools have
a risk tier per environment, so the same
delete_servicecan be free indevand gated inprod. - Depending on the tier:
L0(read) goes straight through.L1(suggest) always goes through withdry_run: true, whatever the agent asked for.L2(confirm) goes through withdry_run: truefirst, and the result comes back to the agent asinput_requiredwith a description of what would happen and a signedrequestState. When a person says yes, the agent repeats the call with that state and the proxy executes it for real, once. Repeating it again is refused.L3(auto) goes through as sent.
- Checks the blast radius: how many objects one call touches (the length of a list argument you name in the policy) and how many a principal has touched in the last hour or day.
- Forwards the call, cuts the response down to the output cap if it is too big, and marks anything in it that smells like a prompt injection. Marking only; it does not change what the agent gets to see.
- Writes two audit records, one before the upstream call and one after, whatever happened. The JSONL file gets each one before the proxy goes on; the Postgres table, when there is one, is written from a queue a moment later.
Refusals come back as tool results with isError: true, not as protocol errors, so the
model sees why and can do something else. Every tools/call result, a pending one included,
Установка
uvx mcp-airlock --help