Que la IA ha venido para quedarse es un hecho. Aunque ahora mismo hay un montón de información, agentes, CLI, etc. hasta el punto de llegar a ser extenuante, hay algo claro y es que las herramientas (SKILL.md) y los MCP son la mejor manera de comunicar un proyecto con las herramientas de Inteligencia Artificial. En posts anteriores se ha escrito sobre como traducir contenido en Drupal automáticamente. (Aunque faltaría complementarlo con el módulo Auto translation), pero ahora es turno de ver como hacer que el portal en el que se está trabajando se sincronice y mejore el trabajo con las herramientas de Inteligencia Artificial que se estén usando actualmente. Para ello se va a usar el módulo mcp_tools.
Recuerda que este módulo está actualmente en fase Beta ni cumple con las security advisory policy de Drupal. Se recomienda el uso en entornos de desarrollo locales.
Herramientas
En este caso se usará OpenCode con los agentes Plan y Build, usando Codex como modelo. El módulo genera el .mcp para ser implementado con Claude, se incluirá en este mismo artículo un ejemplo de como integrarlo con OpenCode. Del mismo modo, al ser un entorno de pruebas se usará ddev y por supuesto se usará drush.
- Opencode
- Modelo Codex (OpenAI)
- Módulo mcp_tools
- ddev
- drush
- Core de drupal ^ 11.2
Instalación y configuración del módulo
Para instalar el módulo en el portal habrá que seguir los comunes pasos para instalar un módulo de drupal: requerirlo con composer y activarlo con drush.
composer require drupal/mcp_toolsdrush en mcp_tools -y
drush en mcp_tools_stdio -y
# Ahora sería el momento de exportar la configuración, en este caso el módulo lo genera para claude.
drush mcp-tools:client-config > .mcp.jsonEn caso de Claude el archivo .mcp.json se vería así.
{
"mcpServers": {
"drupal": {
"command": "ddev",
"args": [
"drush",
"mcp-tools:serve",
"--quiet",
"--uid=1",
"--scope=read,write"
],
"cwd": "/var/www/html"
}
}
}En caso de Opencode se traduciría a un archivo opencode.json (es interesante guardar este archivo a nivel local y no a nivel global):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"drupal": {
"type": "local",
"command": [
"ddev",
"drush",
"mcp-tools:serve",
"--quiet",
"--uid=1",
"--scope=read,write"
],
"enabled": true
}
}
}Configurar el módulo
Para acceder a la configuración del módulo hay que visitar la ruta /admin/config/services/mcp-tools.
Lo recomendado actualmente es trabajar simplemente en Desarrollo y entornos locales, al menos de momento, pero si fuera necesario la opción de Configuration Mode permite cambiar el preset al que afectarán las opciones.
- Global read-only mode: Cuando se activa se bloquean todas las operaciones de escritura en todo el sitio. Recomendado para entornos de producción.
-
- Config-only mode: Cuando se activa esta opción las herramientas de escritura se limitan a cambios de configuración. Las operaciones que muten los tipos de contenido, media, etc. serán bloqueadas a no ser que se especifique lo contrario.
- Default connection scopes: Ámbitos permitidos cuando no hay una opción que anule ninguna de las operaciones.
- Allowed scopes (maximum): Alcances máximos que se pueden conceder a una conexión MCP. Cómo el propio módulo dice, no se recomienda la opción de admin.
- Trust X-MCP-Scope header: Permitir solicitudes al MCP mediante encabezado HTTP.
- Trust mcp_scope query parameter: Permitir solicitudes / peticiones MCP mediante parámetros en la URL. Evidentemente esto solo habilitarlo en caso de de desarrollo local.
- Trust MCP_SCOPE environment variable: Permitir la selección de alcance a través de la variable de entorno MCP_SCOPE.
- Enable audit logging: Meter en el log watchdog todas las operaciones MCP.
- Enable rate limiting: Si se activa, las operaciones de escrituras estarán limitadas por cliente.
- Read operations Limit: En esta sección se podrán establecer los límites de lectura.
- Output settings. Maximum items in list operations: Máximo de elementos retornados en al solicitar listados.
- Include sensitive information: Incluir información sensible del portal.
- Server-Side Request Forgery protection for URL fetching operations: Servidores permitidos a la hora de realizar operaciones fetch contra el MCP.
- Webhook Notifications: Esta opción es muy interesante, ya que permite enviar notificaciones a Slack, Sistemas de auditoría, etc. cuando el MCP realice alguna operación.
Estado del MCP y activar funcionalidades
Para ver el estado del MCP existen dos opciones:
- Ir a la página de administración de /admin/config/services/mcp-tools/status
- Lanzar el comando drush mcp:status
Aquí se listan todas herramientas disponibles como submódulos. Es importante dedicar un rato a analizar y habilitar que herramientas van a ser necesarias. Una vez activadas es recomendable exportar configuración para no sobreescribirla.
Una vez habilitados todos los todas las tools necesarias lo recomendable ahora es probar. Ten en cuenta trabajar con el agente plan, y que siempre que proponga algo lo haga consultando el MCP (siempre que sea posible). Aquí ya intervienen las configuraciones previas en base a SKILLs y Agent.md que se hayan aplicado.
Con todo esto explicado ahora se va a mostrar un pequeño ejemplo, con un Prompt muy vago para que se vea el potencial.
Ejemplo
El prompt que le he enviado era sencillo: Crea un tipo de contenido inventado por ti. Como se puede ver en la imagen se está usando el MCP, en este caso drupal_mcp_structure_create_content_type. Recuerda siempre trabajar en un agente que planifique y en caso de no usar el MCP, corregir al modelo. Hay que recordar que los modelos son muy dependientes de la sesión y, como se ha indicado antes, de la configuración realizada previamente.
Como se puede observas los resultados son bastantes prometedores y, gracias a herramientas como esta, el tiempo de desarrollo se verá bastante reducido. Es importante destacar que estas herramientas conllevan una revisión constante, comunicación con el modelo y el agente y por supuesto, una gran planificación y trabajo en la arquitectura.