cordon
すべての企業がAIエージェントを導入したいと考えています。しかし、データベースの鍵をエージェントに渡してもよいと考えている企業はありません。
Cordonは、その信頼のギャップを埋めます。
デモ
https://github.com/user-attachments/assets/153d978f-6303-443a-b49b-b4ec7ebf0452
Related MCP server: border-patrol-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 startCordonが起動し、MCPサーバーに接続してツール呼び出しのインターセプトを開始します。Claude Desktopを再起動すれば、すべてのツール呼び出しがゲートウェイを経由するようになります。
手動設定
手動での設定を好む場合は、グローバルにインストールして設定を作成してください:
npm install -g cordon-cli
cordon initcordon 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あり |
エージェントがツールに無制限にアクセス可能 | ツールごとの詳細なポリシー |
エージェントの行動が可視化されない | すべての呼び出しの構造化された監査証跡 |
「エージェントがテーブルを削除した?」 | リアルタイムのターミナル承認 |
読み取りと書き込みが同じ扱い |
|
コンプライアンスチームが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が設定のパッチ適用を処理します。
設定
ポリシーアクション
ポリシー | 動作 |
| 即座に通過 |
| 拒否 — エージェントはエラーを受け取る |
| ターミナルでの人間による承認待ちで一時停止 |
| 読み取りは通過、書き込みは承認が必要 |
| すべての書き込み操作をブロック |
| 通過させるが、監査ログにフラグを立てる |
| tools/listから除外 — モデルは存在を知らない |
ポリシーはサーバーレベル(全ツールのデフォルト)またはツールごと(サーバーデフォルトを上書き)に設定できます:
{
name: 'my-server',
policy: 'approve-writes', // server default
tools: {
safe_read: 'allow', // override: always allow
nuke_db: 'block', // override: always block
},
}承認チャンネル
チャンネル | ステータス |
| 利用可能 — ターミナルでの対話型プロンプト |
| 利用可能 — Block Kitメッセージ、HMAC検証済みインタラクション |
| v0.3で対応予定 |
| v0.3で対応予定 |
監査出力
出力 | ステータス |
| 利用可能 |
| 利用可能 — ローカルファイルへのJSON行書き出し |
| 利用可能 — Cordonダッシュボードへのイベント送信 |
| v0.3で対応予定 |
パッケージ
パッケージ | 説明 |
| CLI — |
| TypeScript設定SDK — |
| コアプロキシエンジン — ポリシー評価、監査ログ、承認管理 |
ロードマップ
[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 を参照してください。
Maintenance
Related MCP Connectors
Zero-secret MCP gateway for AI agents: risk-scored, audited calls with human-in-the-loop approval.
- gatewayOAuthai.sealgate
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
Security & DLP proxy for MCP: tool-poisoning scans, PII redaction on tool args/results. Beta.
Find, vet, and run MCP tools through a secure audited gateway with prompt-injection risk scoring
Related MCP Servers
- AlicenseBqualityCmaintenanceSecurity 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.5789 npm10MIT
- AlicenseNot gradedqualityBmaintenanceA 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.8 npmMIT
- FlicenseNot gradedqualityCmaintenanceMCP server that provides a security gateway for AI agents, enforcing allow/confirm/deny policies on tool calls and requiring human approval for risky operations, with full audit logging.-
- AlicenseNot gradedqualityBmaintenanceProvides a human-in-the-loop approval gateway for AI agents, enforcing policies and audit logging for MCP-compatible tool calls.Apache 2.0