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つだけです。


クイックスタート

ステップ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
},

ヒューマン・イン・ザ・ループ承認

ツール呼び出しに承認が必要な場合、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プロキシ(複数のサーバー、1つのゲートウェイ)

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