Skip to main content
Glama

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 Workflows

Sin 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 init

Esto 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 start

Cordon 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 init

cordon 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

approve-writes permite las lecturas automáticamente

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 blocked

Có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

allow

Pasa inmediatamente

block

Rechaza: el agente recibe un error

approve

Pausa pendiente de aprobación humana en la terminal

approve-writes

Las lecturas pasan; las escrituras requieren aprobación

read-only

Todas las operaciones de escritura están bloqueadas

log-only

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

terminal

Disponible: solicitud interactiva en tu terminal

slack

Disponible: mensajes Block Kit, interacciones verificadas por HMAC

web

Próximamente en v0.3

webhook

Próximamente en v0.3

Salidas de auditoría

Salida

Estado

stdout

Disponible

file

Disponible: líneas JSON escritas en un archivo local

hosted

Disponible: envía eventos al panel de control de Cordon

otlp

Próximamente en v0.3


Paquetes

Paquete

Descripción

cordon-cli

La CLI: npx cordon-cli start

cordon-sdk

SDK de configuración de TypeScript: defineConfig() y todos los tipos

@getcordon/core

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 demo

Casos 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 dev

Licencia

MIT: consulta LICENSE para más detalles.


-
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