MCP Fusion/Operate and integrate/Observabilidad

Observabilidad

Pregunta a la IA sobre Vinkius

Inspecciona cada llamada MCP sin contaminar stdio: eventos de DebugObserver, registros de TelemetrySink, trazas del pipeline, economía de tokens y el inspector fuera de banda.

Un servidor MCP tiene un problema peculiar de observabilidad: stdio pertenece al protocolo. Una línea de registro en el lugar equivocado corrompe el transporte. MCP Fusion mantiene los diagnósticos en canales separados, para que puedas inspeccionar un conector activo sin cambiar lo que recibe el agente.

Tres sinks, tres trabajos

typescript
registry.enableDebug((event) => {
  console.error('[fusion]', event.type, event);
});

registry.enableTelemetry((event) => telemetry.write(event));
registry.enableTracing(tracer);
SinkJobWhen to use
DebugObserverflujo de eventos local y legiblemcpfusion dev y mcpfusion inspect
TelemetrySinkeventos estructurados de seguridad, coste y ciclo de vidapaneles y alertas de producción
MCPFusionTracerspans con duración por etapa y atributos de error semánticobackends de OpenTelemetry

Los tres permanecen inactivos hasta configurarse. Cuando falta un sink no se añade ningún wrapper, temporizador ni asignación al camino de la solicitud.

Eventos de DebugObserver

El observer recibe el pipeline a medida que ocurre: llegada de la solicitud, resolución de la herramienta, validación, middleware, handler, Presenter, respuesta y fallo. El middleware de seguridad añade eventos como security.firewall, security.rateLimit y security.audit; el sandbox emite sandbox.exec; los cambios de FSM emiten fsm.transition. El payload lleva la identidad de herramienta y acción, duración, estado del resultado y los metadatos seguros relevantes, nunca un secreto sin proteger.

El inspector usa el mismo stream mediante un Shadow Socket fuera de banda. Nunca escribe en stdout, así que un cliente stdio sigue siendo limpio para el protocolo mientras el terminal muestra llamadas, latencia, errores, herramientas activas y salida del Presenter.

bash
mcpfusion inspect

Trazar la solicitud

Un tracer representa las mismas etapas como spans: route, parse, validate, middleware, execute, Present y serialize. Los atributos identifican la herramienta y la acción, si era destructiva o de solo lectura y la clase de error semántico. El framework separa un error del agente de un fallo upstream y de un fallo del lado de Vinkius, lo que hace accionable un panel de fiabilidad en vez de dejar un único contador rojo.

Conecta el tracer a tu exportador de OpenTelemetry en el límite. MCP Fusion es dueño del vocabulario de spans; tu exportador decide adónde van.

Telemetría y coste

El colector de telemetría registra los metadatos que necesita el sistema de gobernanza: rutas de redacción, decisiones del firewall, decisiones de rate limit, estado de auditoría, perfil de tokens, resultado del sandbox y transiciones de estado. Token Economics añade inflación estimada de entrada y salida, proporción de overhead y clasificación de riesgo. Son estimaciones basadas en texto con forma JSON, no afirmaciones de facturación del proveedor; el objetivo es comparar un cambio con el contrato anterior.

Seguridad de la observabilidad

Los eventos de auditoría aplican SHA-256 a los argumentos cuando se habilita hashArgs. El framework emite eventos a tu sink; no afirma que el sink OSS sea una cadena Ed25519 resistente a manipulaciones. En Vinkius Cloud, el conector alojado añade la pista de auditoría firmada y la retención de la consola. Ese límite importa en una revisión de cumplimiento.

Nunca registres ctx, credenciales, encabezados de autorización sin procesar ni todos los argumentos de la herramienta. Observa la clase de identidad, el hash del tenant, el nombre de la herramienta, la duración, el estado y un digest. Los eventos integrados siguen ese principio, pero un sink personalizado aún puede filtrar lo que pongas en él.

Configuración de producción

typescript
const observer = createDebugObserver({
  sink: (event) => process.stderr.write(JSON.stringify(event) + '\n'),
});

await registry.attachToServer(server, {
  debug: observer,
  telemetry: (event) => metrics.record(event),
  tracing: otelTracer,
});

Conecta al iniciar, no dentro de un handler. El registry propaga los sinks a builders existentes y a los registrados después. Cuando tracing y debug están activos a la vez, el framework da prioridad al tracing en el camino de diagnóstico compartido.

Próximos pasos

  • Performance: qué se precompila y qué cuesta una solicitud
  • Introspection: metadatos sin una llamada del cliente
  • Contracts: convertir observabilidad en una barrera de release