IA y MCP

La IA es un módulo core — cada proyecto lo tiene. Es bring-your-own-key: cada proyecto posee un catálogo de proveedores, y las claves se sellan en reposo con AES-256-GCM (SVITRIO_SECRETS_KEY); los listados las enmascaran a una pista de sk…abcd.

Proveedores

Un proveedor lleva un kind, una clave de API, un model opcional y un base_url, y las capacidades para las que está habilitado. Tipos integrados y sus valores por defecto:

  • anthropic / claude/v1/messages nativo, por defecto claude-sonnet-4-6.

  • openaigpt-4o-mini; deepseekdeepseek-chat; mistralmistral-large-latest.

  • qwenqwen-plus; zaiglm-4.6.

  • Cualquier endpoint compatible con OpenAI a través de base_url (vLLM, Ollama, gateways).

Un proveedor por proyecto puede ser is_default (aplicado transaccionalmente — nunca dos a la vez).

Traducción en línea

El botón «Traducir con IA» del editor llama al proveedor por defecto (o al elegido). El prompt del sistema está acotado para devolver solo la cadena traducida y preservar los marcadores de posición ({var}, %s), el HTML y el markdown; 1024 tokens máximo, 30 s de timeout, los errores de upstream se muestran textualmente.

El servidor MCP

Cualquier cliente MCP (Claude Desktop, Cursor, claude.ai) puede conectarse por JSON-RPC en POST /mcp, autenticado mediante un token MCP o el flujo OAuth 2.1 (Dynamic Client Registration + PKCE S256). Cada llamada vuelve a resolver el alcance de proyecto del token. Herramientas:

  • list_pages, list_locales, get_page (devuelve los datos de cada bloque, su catálogo de campos traducibles y las sobrescrituras existentes).

  • set_translation_meta (título/slug por idioma) y set_translation_block (sobrescrituras de campos por bloque).

Prompts: translate_page, summarize_page, generate_alt_text. Así, un agente puede traducir todo un sitio, o tu equipo puede hacer clic en botones — desde la misma configuración.