Pascal Editor
Seguridad MCP de Pascal: loopback, token compartido y escritura de escenas
Examina controles HTTP, orígenes, límites y versiones sin confundir autenticación de transporte, aislamiento de usuarios o seguridad geométrica.
Qué aprenderás
- El token administrado protege un servicio local
- Orígenes y límites tienen alcance concreto
- Protege modificaciones e importaciones por separado
Antes de empezar
- Conceptos básicos de grafos, JavaScript y HTTP
- Una escena propia pequeña con dimensiones y relaciones esperadas
Explica el límite y reproduce la lista o el ejercicio acotado del capítulo.
Conclusiones clave
- Un token MCP compartido no autoriza por inquilino.
- Orígenes, límites y sesiones tienen ámbitos distintos.
- Versiones evitan escrituras obsoletas, no las autorizan.
El token administrado protege un servicio local
La CLI genera 32 bytes aleatorios, solicita modo 0600 para el archivo y pasa el token a MCP. El conector lo lee y adjunta a su transporte HTTP. El modo de archivo debe verificarse en el sistema operativo objetivo; una cifra no demuestra controles equivalentes en todas las plataformas.
connectHttp usa loopback por defecto y rechaza otras interfaces sin token. Si hay token, comprueba bearer o la cabecera alternativa Pascal con buffers de igual longitud y timingSafeEqual. La ruta de salud también atraviesa el control. Un token compartido válido no es un sistema de autorización por usuario o inquilino.
Orígenes y límites tienen alcance concreto
El control comprueba Origin si existe, aplica CORS y procesa OPTIONS antes del token. Puede aceptar orígenes loopback, coincidentes con Host y configurados; es más amplio que permitir únicamente un origen configurado exacto. Sin Origin sigue siendo necesario el token configurado. La política del navegador no autentica clientes no navegador.
El límite inicial de 120 solicitudes por minuto se aplica a /mcp y utiliza la dirección remota del socket. No es presupuesto por herramienta ni cuota por usuario; clientes detrás de un proxy pueden compartir dirección. Los IDs administrados identifican sesiones de protocolo, no propiedad de todas las escenas accesibles por las herramientas.
Protege modificaciones e importaciones por separado
Para sobrescribir una escena existente nombrada, save exige expectedVersion y lo comprueba en una transacción. Evita que un escritor obsoleto sustituya silenciosamente el estado actual, pero no decide si tiene derecho a escribir. Mantén privadas las credenciales locales y diseña autorización por recurso antes de adaptar el servicio a alojamiento compartido.
Trata archivos importados, plugins y URLs de recursos como entradas no confiables. Valida estructura, revisa advertencias, limita orígenes de recursos y conserva exportaciones recuperables. Reparar grafos no sanea cualquier plugin ni evalúa profesionalmente un edificio. Inspeccionamos código y funciones aisladas, no un servicio autenticado ni una prueba de seguridad completa.
Pasos de implementación
- 1
Conserva loopback y protege los archivos de token.
- 2
Revisa orígenes y direcciones compartidas por proxy.
- 3
Usa versiones observadas y maneja conflictos.
- 4
Revisa importaciones, plugins y recursos antes de permitir escritura.
Ejemplo para copiar
{"loopbackOnly":true,"sharedTokenIsTenantAuthorization":false,"overwriteNeedsExpectedVersion":true,"importsRequireReview":true,"publicMcpExposure":false,"securityIntegrationExecuted":false}Preguntas frecuentes
¿El límite es 120 herramientas por usuario y minuto?
No. Cuenta peticiones HTTP a /mcp por dirección remota del socket, no herramientas ni usuarios autenticados.
¿expectedVersion autoriza escribir?
No. Comprueba concurrencia; la autorización por recurso pertenece a la integración que aloja el servicio.
Fuentes
- README.mdFuente verificada 2026-09-08
- LICENSEFuente verificada 2026-09-08
- packages/cli/package.jsonFuente verificada 2026-09-08
- packages/core/package.jsonFuente verificada 2026-09-08
- packages/viewer/README.mdFuente verificada 2026-09-08
- packages/cli/src/runtime.tsFuente verificada 2026-09-08
- packages/cli/src/editor-process.tsFuente verificada 2026-09-08
- packages/cli/src/mcp-connector.tsFuente verificada 2026-09-08
- packages/mcp/src/transports/http.tsFuente verificada 2026-09-08
- packages/mcp/src/storage/sqlite-scene-store.tsFuente verificada 2026-09-08
- packages/core/src/store/use-scene.tsFuente verificada 2026-09-08
- packages/viewer/src/components/renderers/node-renderer.tsxFuente verificada 2026-09-08
- packages/viewer/src/lib/renderer-capability.tsFuente verificada 2026-09-08
- packages/core/src/validation/validate-build-json.tsFuente verificada 2026-09-08
- packages/core/src/utils/heal-scene-graph.tsFuente verificada 2026-09-08
- packages/mcp/src/storage/slug.tsFuente verificada 2026-09-08