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


クイックスタート

ステップ 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 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により読み取りは自動通過

コンプライアンスチームが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

非表示ツール

モデルに決して見せるべきではないツールに対して使用します。呼び出し時に拒否するだけでなく、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プロキシ(複数のサーバー、1つのゲートウェイ)

  • [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ツール(Web検索、フェッチ、ファイルシステムなど)の型付きツールキットです。これを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