Search by

dbravoan / dbcms-module-mcp

dbravoan

Servidor MCP estándar con transporte Streamable HTTP / JSON-RPC 2.0 y autenticación mediante Laravel Passport para agentes externos.

Package info

github.com/dbravoan/dbcms-module-mcp

Type:dbcms-module

pkg:composer/dbravoan/dbcms-module-mcp

Statistics

Installs: 13

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-11-05 15:41 UTC

This package is auto-updated.

Last update: 2026-11-06 08:06:32 UTC


README

Qué hace

dbravoan/dbcms-module-mcp expone capacidades CMS registradas mediante Streamable HTTP en /mcp/cms. Instala/activa mcp y habilita sus ajustes. Conecta un cliente compatible por HTTPS; el endpoint no es un recurso REST JSON convencional.

La autenticación usa Bearer Passport. Se exige mcp:access y el scope apropiado mcp:read, mcp:write o mcp:destructive, además de permisos del actor CMS. Emite tokens humanos con usuario y scopes mínimos explícitos:

./vendor/bin/sail artisan cms:issue-mcp-token --user=USER_ID --scopes=mcp:access,mcp:read

Los clientes de servicio usan cms:create-m2m-client --role=EXISTING_ROLE con scopes explícitos y asociación real de cuenta de servicio. Conserva credenciales solo en el almacén de secretos del cliente y protege las claves Passport.

Inicializa, inspecciona tools/list y descubre el catálogo vivo mediante cms_capabilities, cms_entity_types y cms_resource_types cuando existan. Descubre IDs, idiomas y mercados reales antes de mutar. Los módulos opcionales determinan las operaciones disponibles.

Para componer secciones, consulta cms_block_types con entity_type, locale y market reales; opcionalmente entity_id y block_type. El catálogo del núcleo incluye esquemas anidados, opciones, campos de medios y referencias contextuales, filtrados por disponibilidad y permiso de entidad. Las páginas Blade no admiten edición de secciones. tools/list conserva el JSON Schema de las capacidades, incluidas uniones, restricciones y estructuras anidadas.

Un agente con su propio modelo puede usar el catálogo, guardar borradores y subir imágenes sin AiAssistant. cms_media_upload recibe filename y content_base64; cms_media_import recibe url pública, title y alt_text opcionales. Requieren mcp:write y manage:media. Las imágenes admiten hasta 50 MB y se guardan en la biblioteca con el almacenamiento configurado. El selector del panel ofrece las mismas vías de subida e importación. Consulta o modifica metadatos mediante el recurso media autorizado.

cms_ai_generate_image utiliza el proveedor de imagen configurado en AiAssistant, con use:ai y manage:media, además de permisos del destino si se asocia contenido. Un proveedor de texto no acredita generación de imágenes. Reutiliza el ID y la URL del medio almacenado; no vuelvas a generar si solo falló su asociación. Si una acción responde status: needs_input, solicita lo indicado antes de continuar; no lo interpretes como contenido completado. Generar o subir no publica.

HTTP 200 puede incluir una herramienta rechazada: inspecciona el resultado antes de afirmar éxito. Las operaciones sensibles devuelven ejecución revisable; confirm:true no concede aprobación y el agente no se aprueba a sí mismo. Muestra la URL de revisión a la persona autorizada. La revisión editorial es independiente. Verifica estado final de la entidad y su versión pública. Consulta el contrato de extensiones.

Requisitos y dependencias

  • dbravoan/dbcms-core ^1.0
  • laravel/mcp ^1.0
  • Identificador CMS: mcp

Instalación y activación

Instala el paquete con Composer e instálalo/actívalo en el CMS (mcp). Habilita además sus ajustes (is_enabled, etc.).

Configuración

Ajustes del módulo (claves por nombre):

  • is_enabled
  • rate_limit_per_minute

Rutas

  • Endpoint Streamable HTTP: POST /mcp/cms (y variantes documentadas en Routes/native.php)
  • Panel: prefijo {admin_path}/modules/mcp (guía / generate-token en Routes/web.php)

Comandos Artisan

Este módulo no define comandos Artisan propios en su árbol.

Los siguientes comandos viven en el núcleo (packages/core/src/Console/Commands/); consulta el README del núcleo:

  • cms:issue-mcp-token — IssueMcpTokenCommand
  • cms:create-m2m-client — CreateM2mClientCommand

Ejemplo de uso (comando de core):

./vendor/bin/sail artisan cms:issue-mcp-token --user=USER_ID --scopes=mcp:access,mcp:read

Permisos

Permisos/scopes relevantes:

  • scope Passport mcp:access
  • scope Passport mcp:read
  • scope Passport mcp:write
  • scope Passport mcp:destructive
  • access:admin (panel/ajustes)
  • manage:modules (panel/ajustes)

Privacidad y datos

Las ejecuciones/revisiones sensibles las posee el núcleo (executions) u otros módulos. Emite tokens con scopes mínimos. No hay comando privacy propio del módulo MCP.

Enlaces