protect-mcp
protect-mcp
Puerta de enlace de seguridad empresarial para servidores MCP y hooks de Claude Code. Recibos firmados, políticas Cedar y pistas de auditoría conscientes de enjambres.
Integrado en Microsoft Agent Governance Toolkit | IETF Internet-Draft | Demostración en vivo: acta.today/wiki
Inicio rápido — Claude Code
Dos comandos. Cada llamada a herramienta recibe un recibo.
# 1. Generate hooks, keys, Cedar policy, and /verify-receipt skill
npx protect-mcp init-hooks
# 2. Start the hook server
npx protect-mcp serveAbra Claude Code en el mismo proyecto. Cada llamada a herramienta ahora es interceptada, evaluada y firmada.
Lo que crea init-hooks
Archivo | Propósito |
| Configuración de hooks (PreToolUse, PostToolUse, + 9 eventos de ciclo de vida) |
| Par de claves de firma Ed25519 (ignorado automáticamente por git) |
| Política Cedar inicial: personalícela según sus necesidades |
| Política JSON con firma + límites de tasa |
| Skill |
Arquitectura
Claude Code → POST /hook → protect-mcp (Cedar + sign) → response
↓
.protect-mcp-log.jsonl
.protect-mcp-receipts.jsonlPreToolUse: verificación de política Cedar síncrona → denegar bloquea la herramienta
PostToolUse: firma de recibo asíncrona → impacto de latencia cero
denegar es arquitectónicamente definitivo — no puede ser anulado por el modelo u otros hooks
Endpoints
Método | Ruta | Descripción |
POST |
| Endpoint de hook de Claude Code |
GET |
| Estado del servidor, información de política, información del firmante |
GET |
| Recibos firmados recientes |
GET |
| Recibo más reciente |
GET |
| Sugerencias de corrección de políticas Cedar generadas automáticamente |
GET |
| Alertas de detección de manipulación de configuración |
Verificar recibos
# Inside Claude Code:
/verify-receipt
# From terminal:
curl http://127.0.0.1:9377/receipts/latest | jq .
npx protect-mcp receipts
# Check policy suggestions:
curl http://127.0.0.1:9377/suggestions | jq .Related MCP server: verify-mcp
Inicio rápido — Wrapper de servidor MCP
Envuelva cualquier servidor MCP stdio como un proxy transparente:
# Shadow mode — log every tool call, enforce nothing
npx protect-mcp -- node my-server.js
# Enforce mode with policy
npx protect-mcp --policy protect-mcp.json --enforce -- node my-server.js
# Generate keys + config template
npx protect-mcp initCómo funciona
protect-mcp evalúa cada llamada a herramienta contra una política (JSON, Cedar o PDP externo), firma la decisión como un recibo Ed25519 y registra el resultado.
Dos modos de integración:
Modo | Transporte | Caso de uso |
Hook Server | HTTP ( | Claude Code, enjambres de agentes |
Stdio Proxy | stdin/stdout ( | Claude Desktop, Cursor, cualquier cliente MCP |
Tres motores de políticas:
Motor | Configuración | Notas |
JSON |
| Reglas simples por herramienta |
Cedar |
| Evaluación WASM local vía |
PDP externo |
| OPA, Cerbos o cualquier PDP HTTP |
Seguimiento de enjambres
En sesiones multi-agente, protect-mcp rastrea automáticamente la topología del enjambre.
11 eventos de hook manejados:
Evento | Tipo | Descripción |
| Síncrono | Evaluación de Cedar/política antes de la ejecución de la herramienta |
| Asíncrono | Firma de recibo después de la ejecución de la herramienta |
| Ciclo de vida | Generación/finalización de agente trabajador |
| Ciclo de vida | Asignación de tareas del coordinador |
| Ciclo de vida | Ciclo de vida de sesión con detección de sandbox |
| Ciclo de vida | Monitoreo de utilización del agente |
| Seguridad | Detección de manipulación para |
| Ciclo de vida | Finalización + resumen de sugerencias de política |
Cada recibo incluye:
swarm.agent_id,swarm.agent_type,swarm.team_nametiming.tool_duration_ms,timing.hook_latency_mspayload_digest(hash SHA-256 para cargas útiles >1KB)deny_iteration(conteo de reintentos tras denegación)sandbox_state(habilitado/deshabilitado/no disponible)otel_trace_idyotel_span_idde OpenTelemetry
Archivo de política
{
"default_tier": "unknown",
"tools": {
"dangerous_tool": { "block": true },
"admin_tool": { "min_tier": "signed-known", "rate_limit": "5/hour" },
"read_tool": { "require": "any", "rate_limit": "100/hour" },
"*": { "rate_limit": "500/hour" }
},
"signing": {
"key_path": "./keys/gateway.json",
"issuer": "protect-mcp",
"enabled": true
}
}Políticas Cedar
Las decisiones de denegación de Cedar son autoritativas — no pueden ser anuladas.
// Allow read-only tools
permit(
principal,
action == Action::"MCP::Tool::call",
resource == Tool::"Read"
);
// Block destructive tools
forbid(
principal,
action == Action::"MCP::Tool::call",
resource == Tool::"delete_file"
);Cuando se deniega una herramienta, protect-mcp sugiere automáticamente la regla permit() mínima de Cedar vía GET /suggestions.
Paquetes de políticas anclados a CVE
Cada uno previene un ataque real:
Política | Incidente | OWASP |
| CVE-2025-6514: Secuestro de proxy OAuth de MCP (437K entornos) | A01, A03 |
| Agente autónomo de Terraform destruye producción | A05, A06 |
| Inyección de prompt vía issue de GitHub manipulado | A01, A02, A03 |
| Robo de datos de agente vía abuso de herramienta saliente | A02, A04 |
| Transacción financiera no autorizada | A05, A06 |
Equivalentes de Cedar disponibles en policies/cedar/.
Configuración del cliente MCP
Claude Desktop
{
"mcpServers": {
"my-protected-server": {
"command": "npx",
"args": [
"-y", "protect-mcp",
"--policy", "/path/to/protect-mcp.json",
"--enforce",
"--", "node", "my-server.js"
]
}
}
}Cursor / VS Code
El mismo patrón: reemplace el comando del servidor con protect-mcp envolviéndolo.
Comandos CLI
Commands:
serve Start HTTP hook server for Claude Code (port 9377)
init-hooks Generate Claude Code hook config + skill + sample Cedar policy
quickstart Zero-config onboarding: init + demo + show receipts
init Generate Ed25519 keypair + config template
demo Start a demo server wrapped with protect-mcp
doctor Check your setup: keys, policies, verifier, connectivity
trace <id> Visualize the receipt DAG from a given receipt_id
status Show tool call statistics from the decision log
digest Generate a human-readable summary of agent activity
receipts Show recent persisted signed receipts
bundle Export an offline-verifiable audit bundle
simulate Dry-run a policy against recorded tool calls
report Generate a compliance report from an audit bundle
Options:
--policy <path> Policy/config JSON file
--cedar <dir> Cedar policy directory
--enforce Enable enforcement mode (default: shadow)
--port <port> HTTP server port (default: 9377 for serve)
--verbose Enable debug loggingRegistros de decisiones
Cada llamada a herramienta emite JSON estructurado a stderr:
[PROTECT_MCP] {"v":2,"tool":"read_file","decision":"allow","reason_code":"cedar_allow","policy_digest":"a1b2c3...","mode":"enforce","hook_event":"PreToolUse","timing":{"hook_latency_ms":1},"otel_trace_id":"..."}Cuando la firma está configurada, se guarda un recibo firmado en .protect-mcp-receipts.jsonl.
Paquetes de auditoría
npx protect-mcp bundle --output audit.jsonPaquete autónomo verificable sin conexión con recibos + claves de firma. Verifique con npx @veritasacta/verify.
Base de conocimientos verificada (acta.today/wiki)
La firma de recibos de protect-mcp impulsa la primera base de conocimientos multi-modelo verificada del mundo en acta.today/wiki.
Cada Unidad de Conocimiento es producida por 4 modelos de frontera deliberando en 3 rondas adversarias, con recibos Ed25519 en cada respuesta del modelo. La lista actual:
Modelo | Proveedor | Origen |
Claude Opus 4.6 | Anthropic | EE. UU. |
GPT-5.4 | OpenAI | EE. UU. |
Grok 4.20 | xAI | EE. UU. |
Gemini 3.1 Pro | EE. UU. | |
DeepSeek V3.2 | DeepSeek | CN |
MiniMax M2.7 | MiniMax | CN |
Kimi K2.5 | Moonshot | CN |
Qwen 2.5 72B | Alibaba | CN |
Cada KU es verificable de forma independiente: npx @veritasacta/verify receipt.json
Integraciones del ecosistema
Proyecto | Estrellas | Integración | Estado |
600+ | Puente de política Cedar + firma de recibos | Fusionado (PR #667) | |
3,700+ | Firma de recibos Ed25519 para pipeline de auditoría MCP | PR #556 enviado | |
— | Recibos firmados como fuente de evidencia | Discusión activa (#1029) | |
24,500+ | Pista de auditoría criptográfica para ejecución de skills | Issue #5041 | |
57,600+ | Integridad criptográfica para capa de persistencia | Discusión #1855 | |
1,500+ | Recomendación de configuración MCP | PR #41 | |
1,400+ | Recibos criptográficos para veredictos de validadores | Issue #464 |
Estándares y PI
IETF Internet-Drafts:
draft-farley-acta-signed-receipts-01 — Recibos de decisión firmados para control de acceso máquina a máquina
draft-farley-acta-knowledge-units-00 — Unidades de conocimiento para deliberación multi-modelo
Fuente: VeritasActa/drafts
Estado de patentes: 4 patentes provisionales australianas pendientes (2025-2026) que cubren recibos de decisión con divulgación configurable, puerta de enlace de llamadas a herramientas, manifiestos de agentes e identidad portátil
Verificación: Apache-2.0 —
npx @veritasacta/verify --self-testIntegración con Microsoft AGT: PR #667 — Puente de política Cedar para Agent Governance Toolkit
Repositorios relacionados
Repositorio | Descripción |
Protocolo abierto para registros públicos impugnables (Apache-2.0) | |
Archivos fuente de IETF Internet-Draft | |
Ejemplos de integración: hooks de Claude Code, Express API, firma de servidor MCP | |
Verificador de recibos sin conexión (Apache-2.0) | |
SDK de identidad de agente (Apache-2.0) | |
Plugin de firma de recibos Google ADK (MIT, Python) |
Contribución
Las issues y pull requests son bienvenidos. Por favor, abra una issue primero para cambios significativos.
Informes de errores: Incluya la versión de protect-mcp, la versión de Node.js y los pasos para reproducir
Políticas Cedar: Comparta políticas reutilizables vía PR al directorio
policies/cedar/Ejemplos de integración: Añada a ScopeBlind/examples
Licencia
MIT — libre de usar, modificar, distribuir y construir sobre ella sin restricciones.
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/ScopeBlind/scopeblind-gateway'
If you have feedback or need assistance with the MCP directory API, please join our Discord server