Payload CMS MCP Server

MIT License
82
21
  • Linux
  • Apple

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Includes ESLint configuration when scaffolding Payload CMS projects for code quality and consistency.

  • Supports using MongoDB as a database option when scaffolding Payload CMS projects.

  • Supports Node.js environment for running Payload CMS projects, with specific version requirements (Node.js 18+).

Servidor MCP de Payload CMS 3.0

📋 Descripción general

El servidor MCP de Payload CMS 3.0 es un servidor especializado del Protocolo de Contexto de Modelo (MPP), diseñado para optimizar su experiencia de desarrollo en Payload CMS. Ayuda a los desarrolladores a crear mejores aplicaciones de Payload CMS al proporcionar validación de código, generación de plantillas y funcionalidades de andamiaje de proyectos que siguen las mejores prácticas.

✨ Características

🔧 Capacidades de Payload CMS 3.0

Herramientas de validación

  • validate : validar código para colecciones, campos, globales y configuración.
  • query - Reglas de validación de consultas y mejores prácticas
  • mcp_query - Ejecuta consultas similares a SQL para estructuras de Payload CMS

Generación de código

  • generate_template - Genera plantillas de código para varios componentes
  • generate_collection - Crea definiciones de colección completas
  • generate_field - Generar definiciones de campos con la tipificación adecuada

Configuración del proyecto

  • scaffold_project : crea estructuras completas del proyecto Payload CMS
  • validate_scaffold_options : garantiza que las opciones de andamiaje sigan las mejores prácticas (usado internamente por scaffold_project)

Referencia detallada de herramientas

Herramientas de validación

validate

Valida el código de Payload CMS para verificar la sintaxis y las mejores prácticas.

Parámetros:

  • code (cadena): El código a validar
  • fileType (enum): Tipo de archivo: "colección", "campo", "global" o "configuración"

Ejemplo de mensaje:

Can you validate this Payload CMS collection code? ```typescript export const Posts = { slug: 'posts', fields: [ { name: 'title', type: 'text', required: true, }, { name: 'content', type: 'richText', } ], admin: { useAsTitle: 'title', } }

query

Consulta reglas de validación y mejores prácticas para Payload CMS.

Parámetros:

  • query (cadena): La cadena de consulta
  • fileType (enumeración opcional): tipo de archivo: "colección", "campo", "global" o "configuración"

Ejemplo de mensaje:

What are the best practices for implementing access control in Payload CMS collections?

mcp_query

Ejecuta consultas similares a SQL contra estructuras de Payload CMS.

Parámetros:

  • sql (cadena): cadena de consulta similar a SQL

Ejemplo de mensaje:

Can you execute this query to find all valid field types in Payload CMS? SELECT field_types FROM payload_schema WHERE version = '3.0'

Generación de código

generate_template

Genera plantillas de código para varios componentes de Payload CMS.

Parámetros:

  • templateType (enum): Tipo de plantilla: "colección", "campo", "global", "configuración", "control de acceso", "gancho", "punto final", "complemento", "bloque", "migración"
  • options (registro): Opciones de configuración para la plantilla

Ejemplo de mensaje:

Generate a template for a Payload CMS hook that logs when a document is created.

generate_collection

Genera una definición completa de colección de Payload CMS.

Parámetros:

  • slug (cadena): babosa de colección
  • fields (matriz opcional): Matriz de objetos de campo
  • auth (booleano opcional): si se trata de una colección de autenticación
  • timestamps (booleano opcional): si se deben incluir marcas de tiempo
  • admin (objeto opcional): Configuración del panel de administración
  • hooks (booleano opcional): si se deben incluir ganchos
  • access (booleano opcional): si se debe incluir el control de acceso
  • versions (booleano opcional): si se debe habilitar el control de versiones

Ejemplo de mensaje:

Generate a Payload CMS collection for a blog with title, content, author, and published date fields. Include timestamps and versioning.

generate_field

Genera una definición de campo CMS de carga útil.

Parámetros:

  • name (cadena): nombre del campo
  • type (cadena): Tipo de campo
  • required (booleano opcional): si el campo es obligatorio
  • unique (booleano opcional): si el campo debe ser único
  • localized (booleano opcional): si el campo debe estar localizado
  • access (booleano opcional): si se debe incluir el control de acceso
  • admin (objeto opcional): Configuración del panel de administración
  • validation (booleano opcional): si se debe incluir la validación
  • defaultValue (opcional cualquiera): valor predeterminado para el campo

Ejemplo de mensaje:

Generate a Payload CMS image field with validation that requires alt text and has a description in the admin panel.

Configuración del proyecto

scaffold_project

Andamiaje de una estructura de proyecto completa de Payload CMS.

Parámetros:

  • projectName (cadena): Nombre del proyecto
  • description (cadena opcional): Descripción del proyecto
  • serverUrl (cadena opcional): URL del servidor
  • database (enumeración opcional): tipo de base de datos: "mongodb" o "postgres"
  • auth (booleano opcional): si se debe incluir la autenticación
  • admin (objeto opcional): Configuración del panel de administración
  • collections (matriz opcional): Matriz de objetos de colección
  • globals (matriz opcional): Matriz de objetos globales
  • blocks (matriz opcional): Matriz de objetos de bloque
  • plugins (matriz opcional): Matriz de cadenas de complementos
  • typescript (booleano opcional): si se debe utilizar TypeScript

Ejemplo de mensaje:

Scaffold a Payload CMS project called "blog-platform" with MongoDB, authentication, and collections for posts, categories, and users. Include a global for site settings.

🚀 Primeros pasos

1. Requisitos previos

Antes de comenzar, asegúrese de tener:

  • Node.js 18+ (requerido para Payload CMS 3.0)
  • Una cuenta ferroviaria activa
  • Un token de API ferroviaria (crea uno en railway.app/account/tokens )
  • Familiaridad básica con los conceptos de Payload CMS 3.0

2. Configurar el cursor

Para utilizar con Cursor IDE:

  1. Abrir configuración del cursor
  2. Ir a la sección Servidores MCP
  3. Agregar un nuevo servidor MCP
  4. Llámalo "Payload CMS 3.0 MCP"
  5. Establezca el tipo de transporte en "Comando"
  6. Establezca el comando en: railway run --service=YOUR_SERVICE_ID
  7. Guardar la configuración

3. Uso del servidor MCP

Una vez configurado, puede utilizar estas herramientas en sus indicaciones de IA:

  • Validación de código: "Validar este código de recopilación de Payload CMS"
  • Generación de plantillas: "Generar una plantilla para una colección de medios"
  • Reglas de consulta: "Reglas de validación de consultas para el control de acceso"
  • Consultas tipo SQL: "Ejecutar una consulta para encontrar tipos de campos para colecciones"

4. Ejemplo de flujo de trabajo

Un flujo de trabajo típico con el servidor MCP de Payload CMS:

  1. Generar una plantilla de colección con campos específicos
  2. Validar el código generado para las mejores prácticas
  3. Consulta de reglas de validación específicas para mejorar el código
  4. Generar componentes adicionales como ganchos o puntos finales
  5. Andamiar una estructura de proyecto completa cuando esté listo

5. Ejemplo de flujo de trabajo completo

A continuación se muestra un ejemplo completo de cómo podría utilizar el servidor MCP en una conversación:

User: I need to create a Payload CMS collection for a product catalog. AI: I'll help you create a product catalog collection. Let me generate a template for you. [Uses generate_collection tool] Here's a collection template for your product catalog: ```typescript import { CollectionConfig } from 'payload/types'; export const Products: CollectionConfig = { slug: 'products', admin: { useAsTitle: 'name', defaultColumns: ['name', 'price', 'category', 'inStock'], group: 'Shop', }, access: { read: () => true, }, fields: [ { name: 'name', type: 'text', required: true, }, { name: 'description', type: 'richText', }, { name: 'price', type: 'number', required: true, }, { name: 'category', type: 'relationship', relationTo: 'categories', required: true, }, { name: 'images', type: 'array', fields: [ { name: 'image', type: 'upload', relationTo: 'media', required: true, }, { name: 'altText', type: 'text', required: true, } ] }, { name: 'inStock', type: 'checkbox', defaultValue: true, }, ], timestamps: true, }

Usuario: ¿Puedes validar este código para asegurarte de que sigue las mejores prácticas?

IA: Validaré el código para ti.

[Utiliza la herramienta de validación]

Los resultados de la validación muestran que su código es válido y cumple con las mejores prácticas. Aquí tiene algunas sugerencias:

  1. Considere agregar una profundidad máxima a su campo de relación de categoría para evitar consultas profundas
  2. Es posible que desee agregar control de acceso para operaciones de creación, actualización y eliminación.
  3. Considere agregar ganchos para la gestión de inventario cuando se actualicen los productos

Usuario: ¿Cuáles son las mejores prácticas para el control de acceso en Payload CMS?

IA: Permítame consultar las reglas de validación para el control de acceso.

[Utiliza la herramienta de consulta]

Estas son las mejores prácticas para el control de acceso en Payload CMS:

  1. Defina siempre funciones de control de acceso explícitas para operaciones de creación, lectura, actualización y eliminación.
  2. Utilice el control de acceso basado en roles para usuarios administradores
  3. Implementar control de acceso a nivel de campo para datos confidenciales
  4. Utilice el control de acceso a nivel de colección para permisos amplios
  5. Considere usar ganchos junto con el control de acceso para una lógica compleja

Usuario: Ahora necesito armar un proyecto completo con esta colección de productos y una colección de categorías.

IA: Haré un andamiaje para tu proyecto completo.

[Utiliza la herramienta scaffold_project]

He generado una estructura de proyecto Payload CMS completa con lo siguiente:

  • Recolección de productos según lo especificado
  • Colección de categorías con campos de nombre y descripción
  • Recopilación de medios para imágenes de productos
  • Autenticación para usuarios administradores
  • Configuración de TypeScript
  • Configuración de la base de datos MongoDB
  • Todos los archivos y configuraciones necesarios

El proyecto está listo para ser inicializado con npm install y npm run dev .

Ejemplos de andamiaje y indicaciones detalladas

Ejemplos de andamiaje de proyectos

Al estructurar un proyecto con el servidor MCP, recibirá una estructura completa. Así es como podría verse un proyecto de comercio electrónico estructurado:

e-commerce-platform/ ├── .env ├── .eslintrc.js ├── .gitignore ├── README.md ├── package.json ├── tsconfig.json ├── src/ │ ├── payload.config.ts │ ├── server.ts │ ├── collections/ │ │ ├── Products.ts │ │ ├── Categories.ts │ │ ├── Orders.ts │ │ ├── Customers.ts │ │ ├── Media.ts │ │ └── Users.ts │ ├── globals/ │ │ ├── Settings.ts │ │ └── Footer.ts │ ├── blocks/ │ │ ├── Hero.ts │ │ ├── ProductGrid.ts │ │ └── CallToAction.ts │ ├── fields/ │ │ ├── richText/ │ │ ├── metaImage.ts │ │ └── slug.ts │ ├── hooks/ │ │ ├── beforeChange.ts │ │ └── afterChange.ts │ ├── access/ │ │ ├── isAdmin.ts │ │ └── isAdminOrSelf.ts │ └── utilities/ │ ├── formatSlug.ts │ └── sendEmail.ts

Ejemplo de propuesta de proyecto de andamiaje (básico)

Scaffold a Payload CMS project for a blog platform with the following: - Project name: blog-platform - Database: MongoDB - Authentication: Yes - Collections: Posts, Categories, Authors, Media - Globals: SiteSettings - TypeScript: Yes

Ejemplo de propuesta de proyecto de andamiaje (detallada)

Scaffold a comprehensive Payload CMS project for an e-commerce platform with the following specifications: Project details: - Name: luxury-watches-store - Description: "An e-commerce platform for luxury watches" - Database: PostgreSQL - TypeScript: Yes Collections needed: 1. Products collection with: - Name (text, required) - Description (rich text) - Price (number, required) - SKU (text, unique) - Brand (relationship to Brands collection) - Categories (relationship to Categories, multiple) - Features (array of text fields) - Specifications (array of key-value pairs) - Images (array of media uploads with alt text) - Stock quantity (number) - Status (select: available, out of stock, discontinued) 2. Categories collection with: - Name (text, required) - Description (rich text) - Parent category (self-relationship) - Image (media upload) 3. Brands collection with: - Name (text, required) - Logo (media upload) - Description (rich text) - Founded year (number) - Country of origin (text) 4. Orders collection with: - Order number (text, generated) - Customer (relationship to Users) - Products (array of relationships to Products with quantity) - Status (select: pending, processing, shipped, delivered, cancelled) - Shipping address (group of fields) - Billing address (group of fields) - Payment method (select) - Total amount (number, calculated) - Notes (text) 5. Users collection (auth enabled) with: - Email (email, required) - Name (text, required) - Shipping addresses (array of address groups) - Order history (relationship to Orders) - Wishlist (relationship to Products) - Role (select: customer, admin) Globals: 1. SiteSettings with: - Site name - Logo - Contact information - Social media links - SEO defaults 2. ShippingMethods with: - Array of shipping options with prices Include access control for: - Admin-only access to manage products, categories, brands - Customer access to their own orders and profile - Public read access to products and categories Add hooks for: - Updating stock when orders are placed - Generating order numbers - Sending email notifications on order status changes

Ejemplo de solicitud de creación de colección (básica)

Generate a Payload CMS collection for blog posts with title, content, author, and published date fields.

Ejemplo de solicitud de creación de colección (detallada)

Generate a Payload CMS collection for a real estate property listing with the following specifications: Collection name: Properties Admin configuration: - Use "title" as the display field - Group under "Listings" in the admin panel - Default columns: title, price, location, status, createdAt Fields: 1. Title (text, required) 2. Slug (text, unique, generated from title) 3. Description (rich text with basic formatting options) 4. Price (number, required) 5. Location (group) with: - Address (text) - City (text, required) - State/Province (text, required) - Postal code (text) - Country (select from predefined list) - Coordinates (point) for map display 6. Property details (group) with: - Property type (select: house, apartment, condo, land, commercial) - Bedrooms (number) - Bathrooms (number) - Square footage (number) - Lot size (number) - Year built (number) - Parking spaces (number) 7. Features (array of checkboxes) including: - Air conditioning - Swimming pool - Garden - Garage - Fireplace - Security system - Elevator - Furnished 8. Images (array of media uploads with alt text and caption) 9. Documents (array of file uploads for floor plans, certificates, etc.) 10. Status (select: available, under contract, sold, off market) 11. Featured (checkbox to highlight on homepage) 12. Agent (relationship to Users collection, required) 13. Related properties (relationship to self, multiple) Access control: - Public read access - Agent can create and edit their own listings - Admin can manage all listings Hooks: - Before change: Format slug from title - After change: Notify agent of status changes Versioning: Enabled Timestamps: Enabled

Nivel de detalle en las indicaciones

El servidor MCP puede gestionar indicaciones con distintos niveles de detalle:

Detalle mínimo (la IA rellena los espacios vacíos)

Generate a collection for blog posts.

Detalle moderado (requisitos específicos)

Generate a collection for blog posts with title, content, featured image, categories, and author fields. Make title and content required.

Alto detalle (especificaciones completas)

Generate a collection for blog posts with: - Slug: posts - Fields: - Title (text, required) - Content (rich text with custom formatting options) - Featured image (upload with alt text) - Categories (relationship to categories collection, multiple) - Author (relationship to users collection) - Status (select: draft, published, archived) - Published date (date) - SEO (group with title, description, and keywords) - Admin configuration: - Use title as display field - Group under "Content" - Default columns: title, author, status, publishedDate - Access control for different user roles - Hooks for slug generation and notification - Enable versioning and timestamps

Consejos para indicaciones efectivas

  1. Sea específico acerca de los requisitos : cuanto más detalles proporcione, más personalizado será el resultado.
  2. Especificar relaciones : indique claramente cómo se relacionan las colecciones entre sí.
  3. Incluir necesidades de validación : mencione cualquier regla de validación o restricción para los campos.
  4. Describe las preferencias de la interfaz de usuario de administración : especifica cómo quieres que aparezca la colección en el panel de administración.
  5. Mencione ganchos y control de acceso : si necesita lógica de negocios o reglas de seguridad específicas, inclúyalas en su solicitud.
  6. Utilice terminología específica del dominio : describa su proyecto utilizando términos relevantes para su industria o caso de uso.

📄 Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

🌍 Acerca de MATMAX WORLDWIDE

Creemos en la tecnología para el bien: herramientas que mejoran nuestras vidas respetando nuestra humanidad.

Únete a nosotros para construir un futuro donde la tecnología sirva al bienestar, la conexión y el propósito. Juntos, podemos crear experiencias digitales que saquen lo mejor de cada uno.

Visita matmax.world para obtener más información sobre nuestra visión de la tecnología centrada en el ser humano.

🖥️ Ejecución local

Puede ejecutar el servidor MCP de Payload CMS localmente usando npm:

Opción 1: Instalar desde npm

# Install globally npm install -g payload-cms-mcp # Run the server payload-cms-mcp

Opción 2: Clonar el repositorio

  1. Clonar el repositorio:
git clone https://github.com/Matmax-Worldwide/payloadcmsmcp.git cd payloadcmsmcp
  1. Instalar dependencias:
npm install
  1. Ejecute el servidor localmente:
npm run dev

O alternativamente:

npm run local

Su servidor MCP ahora funcionará localmente y será accesible para desarrollo y pruebas sin necesidad de un token de API ferroviaria.

🚀 Opciones de implementación

Implementar en el ferrocarril (recomendado)

La forma más sencilla de implementar el servidor MCP es mediante la implementación con un solo clic de Railway:

Después de hacer clic en el botón:

  1. Seleccione "Implementar desde el repositorio de GitHub".
  2. Buscar "Matmax-Worldwide/payloadcmsmcp"
  3. Haga clic en "Implementar ahora"

Configuración rápida del IDE del cursor

Después de la implementación:

  1. Instalar Railway CLI: npm install -g @railway/cli
  2. Iniciar sesión en Ferrocarril: railway login
  3. Enlace a su proyecto: railway link
  4. En Configuración del cursor > Servidores MCP, configure el Comando en: railway run
ID: g6zzhp2xr8