cordon
Каждая компания хочет внедрить ИИ-агентов. Но ни одна компания не готова дать агенту ключи от своей базы данных.
Cordon устраняет разрыв в доверии.
Демонстрация
https://github.com/user-attachments/assets/153d978f-6303-443a-b49b-b4ec7ebf0452
Related MCP server: protect-mcp
Проблема
Model Context Protocol (MCP) сделал невероятно простым предоставление ИИ-агентам доступа к мощным инструментам — базам данных, файловым системам, API, облачной инфраструктуре.
Но у MCP нет встроенной модели безопасности. Нет журналов аудита. Нет рабочих процессов одобрения. Нет ограничений по частоте запросов. Сегодня ИИ-агент либо выключен, либо имеет полные права администратора. Промежуточного варианта не существует.
Это главное препятствие, мешающее ИИ-агентам выйти в продакшн.
Решение
Cordon — это шлюз безопасности, который находится между LLM и вашими серверами MCP.
Он действует как файрвол, аудитор и пульт дистанционного управления, предоставляя вам полный контроль и видимость того, что ваши ИИ-агенты могут и чего не могут делать.
┌─────────┐ ┌──────────┐ ┌──────────────┐
│ LLM / │ ──▶ │ Cordon │ ──▶ │ MCP Server │
│ Agent │ ◀── │ Gateway │ ◀── │ (database, │
└─────────┘ └──────────┘ │ fs, APIs) │
│ └──────────────┘
├── Policy Engine
├── Audit Logger
└── Approval WorkflowsНикаких изменений в инфраструктуре. Никаких переписываний кода. Один файл конфигурации.
Быстрый старт
Шаг 1 — Инициализация
Запустите это внутри вашего проекта (там, где находится claude_desktop_config.json):
npx cordon-cli initЭто считывает вашу существующую конфигурацию MCP для Claude Desktop, создает cordon.config.ts и патчит Claude Desktop для маршрутизации всех вызовов инструментов через Cordon.
Шаг 2 — Запуск
npx cordon-cli startCordon запускается, подключается к вашим серверам MCP и начинает перехватывать вызовы инструментов. Перезапустите Claude Desktop, и теперь каждый вызов инструмента будет проходить через шлюз.
Ручная настройка
Если вы предпочитаете настраивать вручную, установите пакет глобально и создайте конфигурацию:
npm install -g cordon-cli
cordon initcordon init создает файл cordon.config.ts:
import { defineConfig } from 'cordon-sdk';
export default defineConfig({
servers: [
{
name: 'database',
transport: 'stdio',
command: 'npx',
args: ['-y', '@my-org/db-mcp-server'],
policy: 'read-only', // Block all write operations
},
{
name: 'github',
transport: 'stdio',
command: 'npx',
args: ['-y', '@modelcontextprotocol/server-github'],
policy: 'approve-writes', // Reads pass; writes require approval
tools: {
delete_branch: 'block', // Never, regardless of approval
},
},
],
audit: {
enabled: true,
output: 'stdout', // or 'file'
},
approvals: {
channel: 'terminal',
timeoutMs: 60_000, // auto-deny after 60s if no response
},
});Почему Cordon
Без Cordon | С Cordon |
Агент имеет неограниченный доступ к инструментам | Гранулярные политики для каждого инструмента |
Нет видимости того, что делали агенты | Структурированный журнал аудита каждого вызова |
"Агент только что удалил таблицу?" | Одобрение в реальном времени через терминал |
Чтение и запись обрабатываются одинаково |
|
Команда безопасности против ИИ | Журналы аудита готовы к экспорту |
Функции
Механизм политик
Определяйте правила для каждого инструмента, сервера или глобально. Политики уровня инструмента переопределяют политики сервера.
// Server-level default
policy: 'approve-writes',
// Per-tool overrides
tools: {
query: 'allow', // reads: pass through
execute: 'approve', // writes: pause for human approval
drop_table: 'block', // catastrophic: always reject
list_tables: 'log-only', // audit but don't interrupt
},Одобрение человеком (Human-in-the-Loop)
Когда вызов инструмента требует одобрения, Cordon приостанавливает работу агента и запрашивает вас напрямую в терминале:
╔══════════════════════════════════════╗
║ ⚠ APPROVAL REQUIRED ║
╚══════════════════════════════════════╝
Server : database
Tool : execute_sql
Args :
{
"query": "DELETE FROM sessions WHERE expires_at < NOW()"
}
[A]pprove [D]eny
>Агент ждет. Вы принимаете решение.
Журналирование аудита
Каждый вызов инструмента регистрируется в виде структурированного JSON — запрос, решение политики, ответ и время выполнения. Выводите в stdout или записывайте в файл для вашей команды безопасности.
{"event":"tool_call_received","callId":"...","serverName":"database","toolName":"execute_sql","timestamp":1773434469641}
{"event":"approval_requested","callId":"...","serverName":"database","toolName":"execute_sql","timestamp":1773434469641}
{"event":"tool_call_approved","callId":"...","serverName":"database","toolName":"execute_sql","timestamp":1773434471203}
{"event":"tool_call_completed","callId":"...","durationMs":34,"isError":false,"timestamp":1773434471237}Режим «Только для чтения»
Одна настройка политики для блокировки всех операций записи на сервере. Никаких догадок о том, что считается записью — Cordon определяет это по имени инструмента.
policy: 'read-only' // any tool starting with write/create/update/delete/drop/execute/... is blockedСкрытые инструменты
Для инструментов, которые модель вообще не должна видеть — они не просто отклоняются при вызове, а полностью фильтруются из ответа tools/list. Это закрывает вектор промпт-инъекций: если модель не знает о существовании инструмента, ее нельзя обманом заставить его вызвать.
{
name: 'database',
policy: 'approve-writes',
tools: {
drop_table: 'block', // call attempts are rejected
internal_admin: 'hidden', // not advertised to the client at all
},
}Каталоги инструментов «Закрытого мира»
Объявите точный набор инструментов, который должен предоставлять ваш вышестоящий сервер. Когда сервер добавит новый инструмент в будущем обновлении, Cordon автоматически заблокирует его, пока вы явно не разрешите его использование.
{
name: 'postgres',
command: 'npx',
args: ['-y', '@modelcontextprotocol/server-postgres', process.env.POSTGRES_URL!],
policy: 'read-only',
knownTools: ['query', 'list_tables', 'describe_table'], // your approved surface
onUnknownTool: 'block', // default when knownTools is set
}Если в следующем релизе Postgres MCP появится truncate_table, Cordon заблокирует его с предупреждением в stderr — обновление политики не требуется. Оставьте knownTools неопределенным для поведения «открытого мира» с обратной совместимостью.
Как это работает
Cordon работает как единый агрегирующий прокси-сервер MCP. Вместо того чтобы Claude Desktop подключался напрямую к вашим серверам MCP, он подключается к Cordon. Затем Cordon управляет вашими серверами внутри себя.
Before: Claude ──▶ MCP Server A (full access)
Claude ──▶ MCP Server B (full access)
After: Claude ──▶ Cordon ──▶ MCP Server A (governed)
──▶ MCP Server B (governed)Ваш LLM-клиент и серверы MCP вообще не меняются. cordon init берет на себя патчинг конфигурации.
Конфигурация
Действия политики
Политика | Поведение |
| Пропускать немедленно |
| Отклонить — агент получает ошибку |
| Приостановить до одобрения человеком в терминале |
| Чтение проходит; запись требует одобрения |
| Все операции записи блокируются |
| Пропускать, но помечать в журнале аудита |
| Фильтровать из tools/list — модель никогда не видит его |
Политики могут быть установлены на уровне сервера (по умолчанию для всех инструментов) или для каждого инструмента (переопределяет настройки сервера):
{
name: 'my-server',
policy: 'approve-writes', // server default
tools: {
safe_read: 'allow', // override: always allow
nuke_db: 'block', // override: always block
},
}Каналы одобрения
Канал | Статус |
| Доступно — интерактивный запрос в терминале |
| Доступно — сообщения Block Kit, взаимодействия с проверкой HMAC |
| Ожидается в v0.3 |
| Ожидается в v0.3 |
Вывод аудита
Вывод | Статус |
| Доступно |
| Доступно — строки JSON записываются в локальный файл |
| Доступно — отправка событий на дашборд Cordon |
| Ожидается в v0.3 |
Пакеты
Пакет | Описание |
| CLI — |
| TypeScript SDK для конфигурации — |
| Основной движок прокси — оценщик политик, журнал аудита, менеджер одобрений |
Дорожная карта
[x] Прокси MCP с моделью агрегатора (несколько серверов, один шлюз)
[x] Механизм политик — allow, block, approve, approve-writes, read-only, log-only, hidden
[x] Каталоги инструментов «закрытого мира» —
knownTools+onUnknownToolдля контроля поверхности вышестоящих серверов[x] Канал одобрения через терминал с TTY-безопасным запросом
[x] Канал одобрения через Slack — сообщения Block Kit, опросы для ответа
[x] Структурированное JSON-логирование аудита в stdout, файл или на дашборд
[x]
cordon init— автоматическое чтение и патчинг конфигурации Claude Desktop[x] Ограничение частоты запросов (Rate limiting) — скользящее окно, глобально / на сервер / на инструмент
[x] Хостинг-дашборд — история журналов аудита, экспорт в CSV/JSON, GitHub OAuth
[x] Биллинг Stripe — бесплатный и Pro тарифы
[ ] Экспорт OpenTelemetry
[ ] Командные аккаунты и централизованное управление
[ ] Поддержка транспорта HTTP/SSE
Примеры
Смотрите examples/security-showcase для работающей демонстрации того, как Cordon перехватывает агента, пытающегося удалить таблицу в продакшн-базе данных.
cd examples/security-showcase
npm install
npm run demoВарианты использования
Разработчик-одиночка — Обезопасьте свою локальную настройку Claude/Cursor. Видьте точно, что вызывает ваш агент, и блокируйте все опасное до того, как это попадет в продакшн.
Команда стартапа — Развертывайте агентов с уверенностью. Каждый вызов инструмента логируется, запись требует одобрения, а у вашей команды безопасности есть история действий.
Корпорация — Централизованное управление всеми развертываниями ИИ-агентов. Политики как код, структурированные логи и четкий путь к аудиту, соответствующему SOC2.
Отлично работает с
Agent Toolbelt — типизированный набор готовых инструментов MCP (поиск в сети, fetch, файловая система и многое другое). Подключите его к Claude Desktop, а затем направьте вызовы этих инструментов через Cordon для обеспечения политик и аудита. Agent Toolbelt дает вашим агентам силу; Cordon гарантирует, что они спросят разрешения перед ее использованием.
Build & Ship MCP Tools — сопутствующий курс, который пошагово объясняет создание собственных серверов MCP с нуля. Модуль 6 посвящен обеспечению безопасности вашего сервера с помощью Cordon.
Участие в разработке
Cordon — это проект с открытым исходным кодом, и мы приветствуем любой вклад.
git clone https://github.com/marras0914/cordon.git
cd cordon
npm install
npm run build
npm run devЛицензия
MIT — подробности см. в LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
AlicenseNot gradedqualityCmaintenancePolicy enforcement gateway for MCP tool calls, evaluating every tool invocation against declarative YAML policies (allow/deny/escalate-to-human), generating cryptographic hash-chained audit receipts, and including built-in content safety scanning.2MIT- AlicenseBqualityCmaintenanceSecurity gateway that wraps any MCP server with per-tool policies, approval gates, and optional Ed25519-signed decision receipts. Shadow mode logs every tool call without blocking; enforce mode applies block, rate-limit, and minimum-tier rules. Receipts are independently verifiable offline with no accounts needed.54699MIT
- AlicenseNot gradedqualityBmaintenanceA policy-enforcing MCP gateway that intercepts all tool calls to downstream MCP servers, applying allow/deny/ask rules with human approval and audit logging for safe access to dangerous tools.23MIT

evav-gatewayofficial
AlicenseNot gradedqualityBmaintenanceGoverned MCP gateway that lets AI agents call tools with policy enforcement, prompt-injection screening, a kill-switch, and tamper-evident signed audit logs.Apache 2.0
Related MCP Connectors
Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.
Runtime permission, approval, and audit layer for AI agent tool execution.
See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/marras0914/cordon'
If you have feedback or need assistance with the MCP directory API, please join our Discord server