Saltar al contenido principal

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.