Skip to main content
Glama

모든 기업은 AI 에이전트를 배포하고 싶어 합니다. 하지만 어떤 기업도 에이전트에게 데이터베이스의 제어권을 넘겨주려 하지 않습니다.

Cordon이 신뢰의 격차를 메워줍니다.


데모

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


문제점

Model Context Protocol (MCP) 덕분에 AI 에이전트가 데이터베이스, 파일 시스템, API, 클라우드 인프라와 같은 강력한 도구에 쉽게 접근할 수 있게 되었습니다.

하지만 MCP에는 내장된 보안 모델이 없습니다. 감사 로그도, 승인 워크플로우도, 속도 제한도 없습니다. 오늘날 AI 에이전트는 꺼져 있거나 아니면 전체 관리자 권한을 갖거나 둘 중 하나입니다. 그 중간 단계가 없습니다.

이것이 AI 에이전트의 프로덕션 도입을 가로막는 가장 큰 장애물입니다.

해결책

Cordon은 LLM과 MCP 서버 사이에 위치하는 보안 게이트웨이입니다.

이 게이트웨이는 방화벽, 감사자, 원격 제어 역할을 수행하여 AI 에이전트가 무엇을 할 수 있고 무엇을 할 수 없는지에 대한 완전한 가시성과 권한을 제공합니다.

┌─────────┐      ┌──────────┐      ┌──────────────┐
│  LLM /  │ ──▶  │  Cordon  │ ──▶  │  MCP Server  │
│  Agent  │ ◀──  │ Gateway  │ ◀──  │  (database,  │
└─────────┘      └──────────┘      │   fs, APIs)  │
                   │               └──────────────┘
                   ├── Policy Engine
                   ├── Audit Logger
                   └── Approval Workflows

인프라 변경이 필요 없습니다. 재작성도 필요 없습니다. 단 하나의 설정 파일이면 충분합니다.


퀵스타트

1단계 — 초기화

프로젝트 내부(claude_desktop_config.json이 있는 곳)에서 다음을 실행하세요:

npx cordon-cli init

이 명령은 기존 Claude Desktop MCP 설정을 읽고 cordon.config.ts를 생성하며, 모든 도구 호출이 Cordon을 거치도록 Claude Desktop을 패치합니다.

2단계 — 시작

npx cordon-cli start

Cordon이 시작되고 MCP 서버에 연결되어 도구 호출을 가로채기 시작합니다. Claude Desktop을 다시 시작하면 이제 모든 도구 호출이 게이트웨이를 통해 흐르게 됩니다.

수동 설정

수동으로 설정하려면 전역으로 설치하고 설정을 생성하세요:

npm install -g cordon-cli
cordon init

cordon initcordon.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로 읽기는 자동 통과, 쓰기는 승인

컴플라이언스 팀이 AI 도입 반대

내보내기 가능한 감사 로그


기능

정책 엔진

도구별, 서버별 또는 전역으로 규칙을 정의하세요. 도구 수준의 정책이 서버 정책보다 우선합니다.

// 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] stdout, 파일 또는 호스팅된 대시보드로의 구조화된 JSON 감사 로깅

  • [x] cordon init — Claude Desktop 설정을 자동 읽기 및 패치

  • [x] 속도 제한 — 슬라이딩 윈도우, 전역 / 서버별 / 도구별

  • [x] 호스팅된 대시보드 — 감사 로그 기록, CSV/JSON 내보내기, GitHub OAuth

  • [x] Stripe 결제 — 무료 및 Pro 티어

  • [ ] OpenTelemetry 내보내기

  • [ ] 팀 계정 및 중앙 집중식 거버넌스

  • [ ] HTTP/SSE 전송 지원


예제

프로덕션 데이터베이스 테이블을 삭제하려는 에이전트를 Cordon이 가로채는 작동 데모는 examples/security-showcase를 참조하세요.

cd examples/security-showcase
npm install
npm run demo

사용 사례

개인 개발자 — 로컬 Claude/Cursor 설정을 보호하세요. 에이전트가 호출하는 내용을 정확히 확인하고 위험한 작업은 프로덕션에 도달하기 전에 차단하세요.

스타트업 팀 — 자신 있게 에이전트를 배포하세요. 모든 도구 호출이 기록되고, 쓰기 작업은 승인이 필요하며, 컴플라이언스 팀을 위한 감사 추적이 생성됩니다.

엔터프라이즈 — 모든 AI 에이전트 배포에 대한 중앙 집중식 거버넌스를 구축하세요. 코드형 정책, 구조화된 로그, SOC2 준비를 위한 명확한 감사 추적 경로를 제공합니다.


함께 사용하기 좋은 도구

  • Agent Toolbelt — 준비된 MCP 도구(웹 검색, 가져오기, 파일 시스템 등)의 타입이 지정된 툴킷입니다. 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를 참조하세요.


-
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