Skip to main content
Glama

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

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


Install Server
A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
4wRelease cycle
4Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    Policy 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.
    2
    MIT
  • 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
    469
    9
    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.
    23
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Governed 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

View all related MCP servers

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.

View all MCP Connectors

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