Code Mode

Cómo funciona el sandbox code-mode y cómo los clientes IA escriben TypeScript para consultar tus datos.

El Servidor MCP usa un enfoque code-mode en lugar de definiciones de herramientas tradicionales. En vez de exponer docenas de herramientas separadas, proporciona una única herramienta execute_code donde la IA escribe TypeScript contra el namespace brakinglab.*.

Cómo Funciona

La IA escribe TypeScript → esbuild transpila → isolated-vm ejecuta → resultados devueltos
  1. Generación de tipos: El servidor auto-genera definiciones TypeScript desde su catálogo de funciones
  2. La IA escribe código: Usando el namespace brakinglab.* con hints de tipos completos
  3. Transpilación: esbuild convierte TypeScript a JavaScript
  4. Ejecución en sandbox: isolated-vm ejecuta el código sin acceso a red ni filesystem
  5. Resultados: La salida de console.log() y los valores de retorno se envían de vuelta a la IA

Ejemplo: Análisis de Coaching

Esto es lo que una IA podría escribir cuando preguntas “¿Dónde pierdo tiempo en Spa?”:

// Obtener sesiones recientes en Spa
const sessions = await brakinglab.getSessions({ trackName: "Spa", limit: 5 });

// Encontrar curvas más débiles
const weak = await brakinglab.getWeakCorners({ trackName: "Spa", limit: 5 });

// Obtener datos de frenado de la última sesión
const braking = await brakinglab.getBrakingZones({
  sessionId: sessions[0].id,
});

// Registrar hallazgos
console.log("Curvas más débiles:", weak);
console.log("Zonas de frenado:", braking);

// Guardar informe de coaching
await brakinglab.saveCoachingReport({
  sessionId: sessions[0].id,
  overview: {
    assessment: "needs_work",
    summary: "Tres curvas en Spa están costando tiempo significativo...",
  },
  pace: {
    bestLapMs: sessions[0].bestLapMs,
    averageLapMs: 138500,
    consistencyPct: 85,
    improvementTrend: "improving",
  },
  corners: weak.map((c) => ({
    cornerIndex: c.cornerIndex,
    cornerName: c.cornerName,
    verdict: "needs_work",
    issue: c.topIssue,
    detail: `Score de debilidad: ${c.weaknessScore}/100`,
  })),
  actionItems: [
    {
      priority: 1,
      action: "Enfocarse en trail braking en La Source",
      why: "Soltando freno demasiado rápido, perdiendo 0.3s",
    },
  ],
});

Restricciones del Sandbox

El sandbox está diseñado para seguridad:

RestricciónValor
Timeout10 segundos por ejecución
MemoriaLímite de 32 MB
Llamadas APIMáximo 20 por bloque de código
Tamaño de códigoMáximo 10 KB
SalidaMáximo 100 KB
RedNinguna (totalmente aislado)
Sistema de archivosNinguno (totalmente aislado)

Seguridad de Tipos

Todas las funciones usan esquemas Zod para validación de entrada:

  • Las funciones READ-ONLY aceptan parámetros flexibles
  • Las funciones MUTATING y CREATIVE usan .strict() — campos desconocidos causan errores
  • Las funciones pueden aceptar _validateOnly: true para validar sin escribir

Los errores de validación devuelven JSON estructurado con feedback a nivel de campo:

{
  "error": "Validación fallida",
  "issues": [
    { "path": ["corners", 0, "verdict"], "message": "Campo requerido" }
  ]
}

Qué Puede y No Puede Hacer la IA

Puede:

  • Consultar cualquier dato de tu cuenta (sesiones, carreras, notas, etc.)
  • Escribir informes de coaching y evaluaciones de preparación
  • Crear y gestionar eventos de carrera, preparaciones y notas de circuito
  • Comparar vueltas y generar estrategia de carrera
  • Componer múltiples llamadas a funciones para análisis complejos

No puede:

  • Acceder a datos de otros usuarios
  • Hacer peticiones de red a servicios externos
  • Acceder al sistema de archivos
  • Ejecutarse por más de 10 segundos
  • Eliminar tu cuenta o cambiar ajustes