← Todas las entradas

Explicación

Servidor MCP para Joomla: conectar Joomla con ChatGPT y Claude

Unas manos escribiendo en un portátil, con un circuito y las letras AI iluminadas en la pantalla.

Joomla se puede conectar hoy con ChatGPT o con Claude, y se conecta con un token de API de Joomla, no con una contraseña. Lo que el asistente podrá hacer después lo deciden dos cosas que casi ninguna guía menciona: qué plugins de servicios web de Joomla están activados, y que la API del núcleo de Joomla no expone en absoluto el título de página del navegador de un artículo. Todo lo de abajo salió del código fuente de Joomla, y las listas de capacidades las imprime nuestro adaptador de Joomla en vez de estar escritas a mano.

·

Joomla tiene una API de servicios web en el núcleo desde Joomla 4, y es mejor que su fama. Si la gente concluye lo contrario es porque las partes útiles dependen de plugins, y el error de un plugin apagado es idéntico al error de un token equivocado.

Cómo se hace la conexión

Aquí no hay ninguna contraseña por medio. Joomla emite un token de API asociado a una cuenta de usuario, y los permisos de esa cuenta son el límite de lo que puede hacer quien tenga el token. Por eso lo sensato es crear una cuenta para este trabajo en lugar de usar la tuya.

  1. En el administrador de Joomla, entra en Usuarios → Gestionar y edita la cuenta con la que debe actuar el asistente.
  2. Abre su pestaña Token de la API de Joomla y genera un token. Joomla lo enseña una sola vez.
  3. En Sistema → Plugins, asegúrate de que estén encendidos Servicios web - Contenido y Autenticación de API - Token de Joomla para servicios web. Sin el segundo, cada petición se rechaza antes de que Joomla mire siquiera tu token.
  4. Pega el token. Para la conexión básica no se instala nada en tu web.

Una trampa que merece quedar escrita, porque nos costó una tarde. Los plugins de servicios web de Joomla vienen activados: las rutas de redirecciones en `/api/index.php/v1/redirects` están ahí en un Joomla 4.4 recién instalado, sin nada nuestro, y la afirmación de nuestras propias notas de que Joomla no registraba esas rutas era sencillamente falsa. Pero `plg_system_redirect`, el plugin que *ejecuta* de verdad una redirección y recoge los 404, viene apagado. Así que se pueden crear redirecciones por la API en una instalación de serie y ninguna redirigirá a nadie. Nuestro adaptador no reclama redirecciones en Joomla, y por eso esa fila sale gris más abajo.

Qué puede hacer un asistente con un Joomla conectado

Estas dos listas las imprime el adaptador de Joomla al cargar la página, así que son lo que el software intentará y no lo que un folleto querría decir.

Lo que Joomla nos deja pedir

  • Leer el contenido
  • Crear contenido
  • Editar contenido
  • Publicar contenido
  • Programar publicaciones
  • Gestionar imágenes y archivos
  • Gestionar categorías y etiquetas
  • Editar la información SEO
  • Gestionar los menús
  • Información del sitio
  • Información de administración

Lo que Joomla no tiene forma de hacer

  • Tipos de contenido propios
  • Cambios en lote
  • Gestionar redirecciones

Las dos listas las genera el adaptador de esa plataforma al cargar la página, así que son lo que el software intentará y no lo que nos gustaría decir. El trabajo por lotes es la única fila vacía en todas las plataformas: ningún adaptador lo reclama todavía, y la página de automatización lo dice también.

Tres cosas que encontramos leyendo el código de Joomla

Las notas de capacidades de este proyecto se equivocaban dos veces con Joomla, y las dos correcciones salieron del código y no de la documentación. Ahí está todo el argumento para hacerlo en este orden.

El título de página del navegador, que no está en la API

El título de página del navegador de un artículo vive en el campo `attribs` de Joomla, y `attribs` no está en la vista de API del componente de contenidos: ni entre los campos de la lista ni entre los del artículo. Así que no se puede leer ni escribir por el núcleo de Joomla, y una petición que enviara `attribs` entero borraría el resto de opciones de visualización de ese artículo. Este es el tipo de hueco que convierte un cambio masivo de SEO en algo peligroso en lugar de útil: un programa que no puede leer un campo no tiene forma de distinguir "este está vacío" de "este no lo veo", y la diferencia es si machaca o no un trabajo que ya había hecho alguien. El nuestro rechaza un trabajo por lotes cuyo patrón apunte a un campo que no puede leer, que es una negativa que preferimos dar a tener que explicar después.

Los cuatro huecos, y la extensión que está escrita y sin publicar

Hay cuatro cosas que faltan en la API del núcleo de Joomla se configure como se configure: una forma de demostrar que la web es tuya, el título de página del navegador, qué tiene una actualización pendiente y las cuentas de la propia web en una sola lectura. Tenemos escritas tres extensiones pequeñas que resuelven justo esas cuatro —una etiqueta meta en la cabecera, una sola clave fusionada en las opciones de visualización en vez de sustituir el campo entero, y dos puntos finales de solo lectura— y todavía no están publicadas. La página de producto de Joomla dice que no se instala nada nuestro en tu Joomla, y hoy eso es verdad: la conexión de más arriba funciona por la propia API de Joomla y no instala nada. Cuando la extensión se publique, lo dirá esa página y lo dirá también este párrafo. Todo lo que el núcleo de Joomla ya sabe hacer se queda en el núcleo, porque algo que funciona sin instalar nada no es motivo para pedirle a nadie que instale software.

Límite honesto: una casilla verde de arriba significa que nuestro adaptador de Joomla intentará ese trabajo. Si alguien lo ha visto funcionar en un Joomla real es otra afirmación, anotada capacidad por capacidad con su fecha, y hasta hoy la han alcanzado 9 de las 11 plataformas. La página de Joomla dice en qué estado está cada una de sus capacidades, en lugar de dejarlo en manos de una frase de aquí.

Lo que nos preguntan sobre esto

¿Tengo que instalar algo en mi Joomla?
No. El trabajo lo hace la API de servicios web del propio Joomla y tú solo compruebas que dos plugins estén encendidos. Tenemos escritas tres extensiones pequeñas para las cuatro cosas que Joomla no expone, pero no están publicadas, así que ahora mismo no se instala nada nuestro en tu Joomla.
¿Con qué versiones de Joomla funciona?
Con Joomla 4.4 en adelante. El suelo lo pone un método que necesitan las vistas de API y que llegó en la 4.4. Joomla 5 y 6 piden además MySQL 8, que deja fuera algunos alojamientos compartidos, el nuestro incluido, y por eso la 4.4 es la versión contra la que podemos probar.
¿Puede un asistente publicar un artículo sin mí?
Solo si marcas el permiso de publicación al conectarlo, y esa casilla empieza sin marcar y el asistente no puede marcarla. Con ella apagada, un asistente escribe y cambia borradores y no toca nada que vea un visitante.

Por dónde seguir