Skip to main content
Glama

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

Cordon устраняет разрыв в доверии.


Демонстрация

https://github.com/user-attachments/assets/153d978f-6303-443a-b49b-b4ec7ebf0452


Related MCP server: border-patrol-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 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

Скрытые инструменты

Для инструментов, которые модель вообще не должна видеть — они не просто отклоняются при вызове, а полностью фильтруются из ответа 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 берет на себя патчинг конфигурации.


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

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

Политика

Поведение

allow

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

block

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

approve

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

approve-writes

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

read-only

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

log-only

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

hidden

Фильтровать из tools/list — модель никогда не видит его

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

{
  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, 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.


Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Security 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.
    5
    789 npm
    10
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A 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.
    8 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server that provides a security gateway for AI agents, enforcing allow/confirm/deny policies on tool calls and requiring human approval for risky operations, with full audit logging.
    -