Skip to main content
Glama

Jedes Unternehmen möchte KI-Agenten einsetzen. Kein Unternehmen ist bereit, einem Agenten die Schlüssel zu seiner Datenbank zu geben.

Cordon schließt die Vertrauenslücke.


Demo

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


Related MCP server: border-patrol-mcp

Das Problem

Das Model Context Protocol (MCP) hat es trivial einfach gemacht, KI-Agenten Zugriff auf mächtige Werkzeuge zu geben – Datenbanken, Dateisysteme, APIs, Cloud-Infrastruktur.

Aber MCP hat kein eingebautes Sicherheitsmodell. Keine Audit-Logs. Keine Genehmigungsworkflows. Keine Ratenbegrenzungen. Heute ist ein KI-Agent entweder aus oder vollständiger Administrator. Es gibt nichts dazwischen.

Dies ist das größte Hindernis, das KI-Agenten daran hindert, die Produktion zu erreichen.

Die Lösung

Cordon ist das Sicherheits-Gateway, das zwischen dem LLM und Ihren MCP-Servern sitzt.

Es fungiert als Firewall, Prüfer und Fernbedienung – und gibt Ihnen vollständige Transparenz und Kontrolle darüber, was Ihre KI-Agenten tun können und was nicht.

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

Keine Infrastrukturänderungen. Kein Umschreiben. Eine Konfigurationsdatei.


Schnellstart

Schritt 1 — Initialisieren

Führen Sie dies in Ihrem Projekt aus (dort, wo Ihre claude_desktop_config.json existiert):

npx cordon-cli init

Dies liest Ihre bestehende Claude Desktop MCP-Konfiguration, generiert cordon.config.ts und patcht Claude Desktop, um alle Tool-Aufrufe über Cordon zu leiten.

Schritt 2 — Starten

npx cordon-cli start

Cordon startet, verbindet sich mit Ihren MCP-Servern und beginnt, Tool-Aufrufe abzufangen. Starten Sie Claude Desktop neu und jeder Tool-Aufruf fließt nun durch das Gateway.

Manuelle Einrichtung

Wenn Sie die Konfiguration lieber manuell vornehmen möchten, installieren Sie es global und erstellen Sie eine Konfiguration:

npm install -g cordon-cli
cordon init

cordon init generiert eine 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
  },
});

Warum Cordon

Ohne Cordon

Mit Cordon

Agent hat uneingeschränkten Tool-Zugriff

Granulare Richtlinien pro Tool

Keine Sichtbarkeit, was Agenten getan haben

Strukturierter Audit-Trail jedes Aufrufs

"Hat der Agent gerade eine Tabelle gelöscht?"

Echtzeit-Genehmigungen im Terminal

Lese- und Schreibzugriffe werden gleich behandelt

approve-writes lässt Lesezugriffe automatisch durch

Compliance-Team lehnt KI ab

Audit-Logs bereit für den Export


Funktionen

Richtlinien-Engine

Definieren Sie Regeln pro Tool, pro Server oder global. Richtlinien auf Tool-Ebene überschreiben Server-Richtlinien.

// 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-Genehmigungen

Wenn ein Tool-Aufruf eine Genehmigung erfordert, hält Cordon den Agenten an und fragt Sie direkt in Ihrem Terminal:

╔══════════════════════════════════════╗
║  ⚠  APPROVAL REQUIRED               ║
╚══════════════════════════════════════╝
  Server : database
  Tool   : execute_sql
  Args   :
  {
    "query": "DELETE FROM sessions WHERE expires_at < NOW()"
  }

  [A]pprove  [D]eny
  >

Der Agent wartet. Sie entscheiden.

Audit-Protokollierung

Jeder Tool-Aufruf wird als strukturiertes JSON protokolliert – die Anfrage, die Richtlinienentscheidung, die Antwort und das Timing. Leiten Sie dies an stdout weiter oder schreiben Sie es in eine Datei für Ihr Compliance-Team.

{"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}

Schreibgeschützter Modus

Eine Richtlinieneinstellung, um alle Schreibvorgänge auf einem Server zu blockieren. Kein Rätselraten darüber, was als Schreibvorgang zählt – Cordon erkennt dies am Tool-Namen.

policy: 'read-only'  // any tool starting with write/create/update/delete/drop/execute/... is blocked

Versteckte Tools

Für Tools, die das Modell niemals sehen sollte – nicht nur beim Aufruf abgelehnt, sondern vollständig aus der tools/list-Antwort gefiltert. Schließt eine Angriffsfläche für Prompt-Injection: Wenn das Modell nie erfährt, dass ein Tool existiert, kann es nicht dazu verleitet werden, es aufzurufen.

{
  name: 'database',
  policy: 'approve-writes',
  tools: {
    drop_table:      'block',   // call attempts are rejected
    internal_admin:  'hidden',  // not advertised to the client at all
  },
}

Closed-World Tool-Kataloge

Deklarieren Sie genau die Tool-Oberfläche, die Ihr Upstream-Server ankündigen soll. Wenn der Upstream in einer zukünftigen Version ein neues Tool hinzufügt, blockiert Cordon es automatisch, bis Sie es explizit freigeben.

{
  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
}

Wenn die nächste Postgres MCP-Version truncate_table hinzufügt, blockiert Cordon es mit einer stderr-Warnung – keine Richtlinienaktualisierung erforderlich. Lassen Sie knownTools undefiniert für abwärtskompatibles Open-World-Verhalten.


Funktionsweise

Cordon läuft als einzelner aggregierender MCP-Proxy. Anstatt dass Claude Desktop sich direkt mit Ihren MCP-Servern verbindet, verbindet es sich mit Cordon. Cordon verwaltet dann Ihre Server intern.

Before:  Claude ──▶ MCP Server A (full access)
         Claude ──▶ MCP Server B (full access)

After:   Claude ──▶ Cordon ──▶ MCP Server A (governed)
                          ──▶ MCP Server B (governed)

Ihr LLM-Client und Ihre MCP-Server ändern sich überhaupt nicht. cordon init übernimmt das Patchen der Konfiguration.


Konfiguration

Richtlinienaktionen

Richtlinie

Verhalten

allow

Sofort durchlassen

block

Ablehnen – Agent erhält einen Fehler

approve

Anhalten, wartet auf menschliche Genehmigung im Terminal

approve-writes

Lesezugriffe werden durchgelassen; Schreibzugriffe erfordern Genehmigung

read-only

Alle Schreibvorgänge werden blockiert

log-only

Durchlassen, aber im Audit-Log markiert

hidden

Aus tools/list gefiltert – das Modell sieht es nie

Richtlinien können auf Server-Ebene (Standard für alle Tools) oder pro Tool (überschreibt den Server-Standard) festgelegt werden:

{
  name: 'my-server',
  policy: 'approve-writes',   // server default
  tools: {
    safe_read:   'allow',     // override: always allow
    nuke_db:     'block',     // override: always block
  },
}

Genehmigungskanäle

Kanal

Status

terminal

Verfügbar – interaktive Eingabeaufforderung in Ihrem Terminal

slack

Verfügbar – Block Kit-Nachrichten, HMAC-verifizierte Interaktionen

web

Kommt in v0.3

webhook

Kommt in v0.3

Audit-Ausgaben

Ausgabe

Status

stdout

Verfügbar

file

Verfügbar – JSON-Zeilen, die in eine lokale Datei geschrieben werden

hosted

Verfügbar – sendet Ereignisse an das Cordon-Dashboard

otlp

Kommt in v0.3


Pakete

Paket

Beschreibung

cordon-cli

Das CLI – npx cordon-cli start

cordon-sdk

TypeScript-Konfigurations-SDK – defineConfig() und alle Typen

@getcordon/core

Kern-Proxy-Engine – Richtlinien-Evaluator, Audit-Logger, Genehmigungs-Manager


Roadmap

  • [x] MCP-Proxy mit Aggregator-Modell (mehrere Server, ein Gateway)

  • [x] Richtlinien-Engine – allow, block, approve, approve-writes, read-only, log-only, hidden

  • [x] Closed-World Tool-Kataloge – knownTools + onUnknownTool für zukunftssichere Upstream-Oberflächenkontrolle

  • [x] Terminal-Genehmigungskanal mit TTY-sicherer Eingabeaufforderung

  • [x] Slack-Genehmigungskanal – Block Kit-Nachrichten, Umfragen für Antworten

  • [x] Strukturierte JSON-Audit-Protokollierung an stdout, Datei oder gehostetes Dashboard

  • [x] cordon init – liest automatisch die Claude Desktop-Konfiguration und patcht sie

  • [x] Ratenbegrenzung – gleitendes Fenster, global / pro Server / pro Tool

  • [x] Gehostetes Dashboard – Audit-Log-Historie, CSV/JSON-Export, GitHub OAuth

  • [x] Stripe-Abrechnung – Kostenlose und Pro-Tarife

  • [ ] OpenTelemetry-Export

  • [ ] Team-Konten und zentralisierte Governance

  • [ ] HTTP/SSE-Transportunterstützung


Beispiele

Siehe examples/security-showcase für eine funktionierende Demo von Cordon, das einen Agenten abfängt, der versucht, eine Produktionsdatenbanktabelle zu löschen.

cd examples/security-showcase
npm install
npm run demo

Anwendungsfälle

Solo-Entwickler – Sichern Sie Ihr lokales Claude/Cursor-Setup. Sehen Sie genau, was Ihr Agent aufruft, und blockieren Sie alles Gefährliche, bevor es die Produktion erreicht.

Startup-Team – Setzen Sie Agenten mit Zuversicht ein. Jeder Tool-Aufruf wird protokolliert, Schreibvorgänge erfordern eine Genehmigung und Ihr Compliance-Team hat einen Nachweis.

Unternehmen – Zentralisierte Governance über alle KI-Agenten-Bereitstellungen hinweg. Policy-as-Code, strukturierte Protokolle und ein klarer Weg zu SOC2-konformen Audit-Trails.


Funktioniert hervorragend mit

  • Agent Toolbelt – ein typisiertes Toolkit mit fertigen MCP-Tools (Websuche, Fetch, Dateisystem und mehr). Binden Sie es in Claude Desktop ein und leiten Sie diese Tool-Aufrufe dann durch Cordon zur Richtliniendurchsetzung und Audit-Protokollierung. Agent Toolbelt gibt Ihren Agenten Macht; Cordon stellt sicher, dass sie fragen, bevor sie sie nutzen.

  • Build & Ship MCP Tools – der Begleitkurs, der Sie Schritt für Schritt durch den Aufbau Ihrer eigenen MCP-Server führt. Modul 6 behandelt die Sicherung Ihres Servers mit Cordon.


Mitwirken

Cordon ist Open Source und wir freuen uns über Beiträge.

git clone https://github.com/marras0914/cordon.git
cd cordon
npm install
npm run build
npm run dev

Lizenz

MIT – siehe LICENSE für Details.


Related MCP Connectors

Related MCP Servers

  • 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
    789 npm
    10
    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.
    8 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP 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.
    -