Cápsula de evidencia
Matías Context MCP
Contexto para agentes, seguridad y startup fail-closed
Una pasarela MCP local y de solo lectura que expone contexto acotado y trazable.
Problema
Una capa de contexto puede volverse acceso arbitrario al filesystem si paths, roots y supuestos de startup quedan implícitos. El contexto útil necesita autoridad acotada e inspeccionable.
Qué construí
Construí un server MCP Python por stdio que expone resources nombrados mediante URIs lógicas. Las lecturas quedan dentro de roots registrados, devuelven provenance y hashes, y rechazan escapes de path o symlink. El preflight falla cerrado ante un profile inseguro o incompleto.
Mi rol y ownership
- Definí el contrato v0.3 y el límite resource-only.
- Implementé reads acotados UTF-8/JSON, sources nombradas, provenance y root containment.
- Agregué tests de kernel, startup-preflight y server-contract.
Decisiones clave
Exponer solo resources: sin tools, prompts, writes ni HTTP remoto.
Tradeoff: Es menos flexible, pero la autoridad es más revisable.
Resolver URIs mediante registro de sources, no paths crudos.
Tradeoff: Requiere configuración, pero evita ubicaciones arbitrarias.
Rechazar escapes antes de servir.
Tradeoff: La mala configuración detiene startup en vez de repararse.
Confiabilidad y testing
Los tests cubren kernel, startup preflight y server contract. Son checks definidos; no se afirma runtime hosted ni adopción.
- tests/test_kernel.py: reads, provenance y paths.
- tests/test_startup_preflight.py: profile y startup fail-closed.
- tests/test_server_contract.py: comportamiento resource-only.
Recuperación: Paths inseguros y profiles incompletos fallan cerrado.
Qué demuestra
- Construir una interfaz de contexto acotada.
- Usar least privilege, provenance y fail-closed.
- Hacer explícitos los tradeoffs de una plataforma de agentes.