cordon
Todas las empresas quieren desplegar agentes de IA. Ninguna empresa está dispuesta a dar a un agente las llaves de su base de datos.
Cordon cierra la brecha de confianza.
Demo
https://github.com/user-attachments/assets/153d978f-6303-443a-b49b-b4ec7ebf0452
El problema
El Model Context Protocol (MCP) ha hecho que sea trivialmente fácil dar a los agentes de IA acceso a herramientas potentes: bases de datos, sistemas de archivos, APIs, infraestructura en la nube.
Pero MCP no tiene un modelo de seguridad integrado. Sin registros de auditoría. Sin flujos de trabajo de aprobación. Sin límites de tasa. Hoy en día, un agente de IA está apagado o tiene acceso total de administrador. No hay nada intermedio.
Este es el mayor obstáculo que impide que los agentes de IA lleguen a producción.
La solución
Cordon es la puerta de enlace de seguridad que se sitúa entre el LLM y tus servidores MCP.
Actúa como un firewall, un auditor y un control remoto, dándote visibilidad y autoridad completas sobre lo que tus agentes de IA pueden y no pueden hacer.
┌─────────┐ ┌──────────┐ ┌──────────────┐
│ LLM / │ ──▶ │ Cordon │ ──▶ │ MCP Server │
│ Agent │ ◀── │ Gateway │ ◀── │ (database, │
└─────────┘ └──────────┘ │ fs, APIs) │
│ └──────────────┘
├── Policy Engine
├── Audit Logger
└── Approval WorkflowsSin cambios en la infraestructura. Sin reescrituras. Un archivo de configuración.
Inicio rápido
Paso 1 — Inicializar
Ejecuta esto dentro de tu proyecto (donde existe tu claude_desktop_config.json):
npx cordon-cli initEsto lee tu configuración de MCP de Claude Desktop existente, genera cordon.config.ts y parchea Claude Desktop para enrutar todas las llamadas a herramientas a través de Cordon.
Paso 2 — Iniciar
npx cordon-cli startCordon se inicia, se conecta a tus servidores MCP y comienza a interceptar las llamadas a herramientas. Reinicia Claude Desktop y cada llamada a herramienta fluirá ahora a través de la puerta de enlace.
Configuración manual
Si prefieres configurar manualmente, instala globalmente y crea una configuración:
npm install -g cordon-cli
cordon initcordon init genera un 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
},
});Por qué Cordon
Sin Cordon | Con Cordon |
El agente tiene acceso ilimitado a herramientas | Políticas granulares por herramienta |
Sin visibilidad de lo que hicieron los agentes | Registro de auditoría estructurado de cada llamada |
"¿El agente acaba de borrar una tabla?" | Aprobaciones en tiempo real en la terminal |
Lecturas y escrituras tratadas igual |
|
El equipo de cumplimiento dice no a la IA | Registros de auditoría listos para exportar |
Características
Motor de políticas
Define reglas por herramienta, por servidor o globalmente. Las políticas a nivel de herramienta anulan las políticas del servidor.
// 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
},Aprobaciones con intervención humana
Cuando una llamada a herramienta requiere aprobación, Cordon pausa al agente y te solicita directamente en tu terminal:
╔══════════════════════════════════════╗
║ ⚠ APPROVAL REQUIRED ║
╚══════════════════════════════════════╝
Server : database
Tool : execute_sql
Args :
{
"query": "DELETE FROM sessions WHERE expires_at < NOW()"
}
[A]pprove [D]eny
>El agente espera. Tú decides.
Registro de auditoría
Cada llamada a herramienta se registra como JSON estructurado: la solicitud, la decisión de la política, la respuesta y el tiempo. Envíalo a stdout o escríbelo en un archivo para tu equipo de cumplimiento.
{"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}Modo de solo lectura
Una configuración de política para bloquear todas las operaciones de escritura en un servidor. Cero conjeturas sobre qué cuenta como escritura: Cordon lo detecta por el nombre de la herramienta.
policy: 'read-only' // any tool starting with write/create/update/delete/drop/execute/... is blockedCómo funciona
Cordon funciona como un proxy MCP agregador. En lugar de que Claude Desktop se conecte directamente a tus servidores MCP, se conecta a Cordon. Cordon luego gestiona tus servidores internamente.
Before: Claude ──▶ MCP Server A (full access)
Claude ──▶ MCP Server B (full access)
After: Claude ──▶ Cordon ──▶ MCP Server A (governed)
──▶ MCP Server B (governed)Tu cliente LLM y tus servidores MCP no cambian en absoluto. cordon init maneja el parcheo de la configuración.
Configuración
Acciones de política
Política | Comportamiento |
| Pasa inmediatamente |
| Rechaza: el agente recibe un error |
| Pausa pendiente de aprobación humana en la terminal |
| Las lecturas pasan; las escrituras requieren aprobación |
| Todas las operaciones de escritura están bloqueadas |
| Pasa pero se marca en el registro de auditoría |
Las políticas se pueden establecer a nivel de servidor (predeterminado para todas las herramientas) o por herramienta (anula el valor predeterminado del servidor):
{
name: 'my-server',
policy: 'approve-writes', // server default
tools: {
safe_read: 'allow', // override: always allow
nuke_db: 'block', // override: always block
},
}Canales de aprobación
Canal | Estado |
| Disponible: solicitud interactiva en tu terminal |
| Disponible: mensajes Block Kit, interacciones verificadas por HMAC |
| Próximamente en v0.3 |
| Próximamente en v0.3 |
Salidas de auditoría
Salida | Estado |
| Disponible |
| Disponible: líneas JSON escritas en un archivo local |
| Disponible: envía eventos al panel de control de Cordon |
| Próximamente en v0.3 |
Paquetes
Paquete | Descripción |
| La CLI: |
| SDK de configuración de TypeScript: |
| Motor proxy central: evaluador de políticas, registrador de auditoría, gestor de aprobaciones |
Hoja de ruta
[x] Proxy MCP con modelo agregador (múltiples servidores, una puerta de enlace)
[x] Motor de políticas: allow, block, approve, approve-writes, read-only, log-only
[x] Canal de aprobación de terminal con solicitud segura para TTY
[x] Canal de aprobación de Slack: mensajes Block Kit, encuestas de respuesta
[x] Registro de auditoría JSON estructurado a stdout, archivo o panel de control alojado
[x]
cordon init: lee automáticamente la configuración de Claude Desktop y la parchea[x] Limitación de tasa: ventana deslizante, global / por servidor / por herramienta
[x] Panel de control alojado: historial de registros de auditoría, exportación CSV/JSON, GitHub OAuth
[x] Facturación Stripe: niveles gratuito y Pro
[ ] Exportación OpenTelemetry
[ ] Cuentas de equipo y gobernanza centralizada
[ ] Soporte de transporte HTTP/SSE
Ejemplos
Consulta examples/security-showcase para ver una demostración funcional de Cordon interceptando a un agente que intenta borrar una tabla de base de datos de producción.
cd examples/security-showcase
npm install
npm run demoCasos de uso
Desarrollador individual: asegura tu configuración local de Claude/Cursor. Mira exactamente qué está llamando tu agente y bloquea cualquier cosa peligrosa antes de que llegue a producción.
Equipo de startup: despliega agentes con confianza. Cada llamada a herramienta se registra, las escrituras requieren aprobación y tu equipo de cumplimiento tiene un rastro.
Empresa: gobernanza centralizada en todos los despliegues de agentes de IA. Política como código, registros estructurados y un camino claro hacia registros de auditoría listos para SOC2.
Funciona muy bien con
Agent Toolbelt: un kit de herramientas tipado de herramientas MCP listas para usar (búsqueda web, fetch, sistema de archivos y más). Conéctalo a Claude Desktop y luego enruta esas llamadas a herramientas a través de Cordon para la aplicación de políticas y el registro de auditoría. Agent Toolbelt da poder a tus agentes; Cordon se asegura de que pidan permiso antes de usarlo.
Build & Ship MCP Tools: el curso complementario que recorre la creación de tus propios servidores MCP de principio a fin. El módulo 6 cubre la seguridad de tu servidor con Cordon.
Contribución
Cordon es de código abierto y agradecemos las contribuciones.
git clone https://github.com/marras0914/cordon.git
cd cordon
npm install
npm run build
npm run devLicencia
MIT: consulta LICENSE para más detalles.
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