Skip to main content
Glama

Каждая компания хочет внедрять ИИ-агентов. Но ни одна компания не готова дать агенту ключи от своей базы данных.

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 start

Cordon запускается, подключается к вашим MCP-серверам и начинает перехватывать вызовы инструментов. Перезапустите Claude Desktop, и теперь каждый вызов инструмента будет проходить через шлюз.

Ручная настройка

Если вы предпочитаете настраивать вручную, установите пакет глобально и создайте конфигурацию:

npm install -g cordon-cli
cordon init

cordon 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

Агент имеет неограниченный доступ к инструментам

Гранулярные политики для каждого инструмента

Нет видимости действий агентов

Структурированный журнал аудита каждого вызова

"Агент только что удалил таблицу?"

Одобрение в терминале в реальном времени

Чтение и запись обрабатываются одинаково

approve-writes автоматически пропускает чтение

Отдел комплаенса против ИИ

Журналы аудита готовы к экспорту


Функции

Механизм политик

Определяйте правила для каждого инструмента, сервера или глобально. Политики уровня инструмента переопределяют политики сервера.

// 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 берет на себя патчинг конфигурации.


Конфигурация

Действия политик

Политика

Поведение

allow

Пропускать немедленно

block

Отклонить — агент получает ошибку

approve

Приостановить до одобрения человеком в терминале

approve-writes

Чтение проходит; запись требует одобрения

read-only

Все операции записи блокируются

log-only

Пропускать, но помечать в журнале аудита

Политики могут быть установлены на уровне сервера (по умолчанию для всех инструментов) или для каждого инструмента (переопределяет настройки сервера):

{
  name: 'my-server',
  policy: 'approve-writes',   // server default
  tools: {
    safe_read:   'allow',     // override: always allow
    nuke_db:     'block',     // override: always block
  },
}

Каналы одобрения

Канал

Статус

terminal

Доступно — интерактивный запрос в терминале

slack

Доступно — сообщения Block Kit, HMAC-проверенные взаимодействия

web

Ожидается в v0.3

webhook

Ожидается в v0.3

Вывод аудита

Вывод

Статус

stdout

Доступно

file

Доступно — JSON-строки записываются в локальный файл

hosted

Доступно — отправляет события на дашборд Cordon

otlp

Ожидается в v0.3


Пакеты

Пакет

Описание

cordon-cli

CLI — npx cordon-cli start

cordon-sdk

TypeScript SDK для конфигурации — defineConfig() и все типы

@getcordon/core

Основной движок прокси — оценщик политик, журнал аудита, менеджер одобрений


Дорожная карта

  • [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.


-
security - not tested
A
license - permissive license
-
quality - not tested

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