cordon
Каждая компания хочет внедрять ИИ-агентов. Но ни одна компания не готова дать агенту ключи от своей базы данных.
Cordon устраняет разрыв в доверии.
Демонстрация
https://github.com/user-attachments/assets/153d978f-6303-443a-b49b-b4ec7ebf0452
Проблема
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Как это работает
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 берет на себя патчинг конфигурации.
Конфигурация
Действия политик
Политика | Поведение |
| Пропускать немедленно |
| Отклонить — агент получает ошибку |
| Приостановить до одобрения человеком в терминале |
| Чтение проходит; запись требует одобрения |
| Все операции записи блокируются |
| Пропускать, но помечать в журнале аудита |
Политики могут быть установлены на уровне сервера (по умолчанию для всех инструментов) или для каждого инструмента (переопределяет настройки сервера):
{
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
[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 — это open source проект, и мы приветствуем вклад сообщества.
git clone https://github.com/marras0914/cordon.git
cd cordon
npm install
npm run build
npm run devЛицензия
MIT — подробности см. в LICENSE.
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/marras0914/cordon'
If you have feedback or need assistance with the MCP directory API, please join our Discord server