Skip to main content
Glama

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

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


데모

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


Related MCP server: protect-mcp

문제점

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

숨겨진 도구

모델이 절대 보지 말아야 할 도구의 경우, 호출 시 거부하는 것을 넘어 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] 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 도구(웹 검색, 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