Servidor Ghost MCP
Este proyecto ( ghost-mcp-server ) implementa un servidor de protocolo de contexto de modelo (MCP) que permite a un cliente MCP (como Cursor o Claude Desktop) interactuar con una instancia de Ghost CMS a través de herramientas definidas.
Requisitos
Node.js 14.0.0 o superior
URL y clave de la API de administración de Ghost
Related MCP server: WordPress MCP Server
Detalles del servidor Ghost MCP
Este servidor expone las funciones de administración de Ghost CMS como herramientas MCP, lo que permite que un cliente de IA como Cursor o Claude Desktop administre un blog de Ghost.
Un cliente MCP puede descubrir estos recursos y herramientas consultando al servidor MCP en ejecución (que normalmente escucha en el puerto 3001 por defecto) en su punto final raíz (p. ej., http://localhost:3001/ ). El servidor responde con sus capacidades según la especificación del Protocolo de Contexto de Modelo.
Recursos definidos
ghost/tag: Representa una etiqueta en Ghost CMS. Contieneid,name,slugydescription.ghost/post: Representa una publicación en Ghost CMS. Contieneid,title,slug,html,status,feature_image,published_at,tags(matriz deghost/tag), campos de metadatos, etc.
(Consulte
Herramientas definidas
A continuación se muestra una guía para utilizar las herramientas MCP disponibles:
ghost_create_tagPropósito : Crea una nueva etiqueta.
Entradas :
name(cadena, obligatoria): el nombre de la nueva etiqueta.description(cadena, opcional): una descripción para la etiqueta.slug(cadena, opcional): un slug compatible con URL (generado automáticamente si se omite).
Salida : El recurso
ghost/tagcreado.
ghost_get_tagsPropósito : Recupera etiquetas existentes. Se puede usar para encontrar el ID de una etiqueta o comprobar si una etiqueta existía antes de su creación.
Entradas :
name(cadena, opcional): filtra etiquetas por nombre exacto.
Salida : una matriz de recursos
ghost/tagque coinciden con el filtro (o todas las etiquetas si no se proporciona ningún nombre).
ghost_upload_imagePropósito : carga una imagen en Ghost para usarla, generalmente como imagen destacada de una publicación.
Entradas :
imageUrl(cadena URL, obligatoria): una URL de acceso público de la imagen que se cargará.alt(cadena, opcional): texto alternativo para la imagen (se genera un valor predeterminado si se omite).
Salida : un objeto que contiene la
urlfinal (la URL de Ghost para la imagen cargada) y el textoaltdeterminado.Nota de uso : llame a esta herramienta primero para obtener una URL de imagen fantasma antes de crear una publicación que necesite una imagen destacada.
ghost_create_postPropósito : Crea una nueva publicación.
Entradas :
title(cadena, obligatoria): el título de la publicación.html(cadena, obligatoria): El contenido principal de la publicación en formato HTML.status(cadena, opcional, predeterminado: 'borrador'): establece el estado en 'borrador', 'publicado' o 'programado'.tags(matriz de cadenas, opcional): Lista de nombres de etiquetas para asociar. Las etiquetas se buscarán o crearán automáticamente.published_at(cadena ISO date, opcional): Fecha y hora de publicación o programación. Obligatorio si el estado es "programado".custom_excerpt(cadena, opcional): un breve resumen.feature_image(cadena URL, opcional): la URL de la imagen destacada (use laurlde salida deghost_upload_image).feature_image_alt(cadena, opcional): texto alternativo para la imagen destacada.feature_image_caption(cadena, opcional): título para la imagen destacada.meta_title(cadena, opcional): título SEO personalizado.meta_description(cadena, opcional): descripción SEO personalizada.
Salida : El recurso
ghost/postcreado.
Instalación y funcionamiento
Clonar el repositorio :
git clone <repository_url> cd ghost-mcp-serverInstalar dependencias :
npm installConfigurar variables de entorno : cree un archivo
.enven la raíz del proyecto y agregue sus credenciales de API de administración de Ghost:# Required: GHOST_ADMIN_API_URL=https://your-ghost-site.com GHOST_ADMIN_API_KEY=your_admin_api_key # Optional: # PORT=3000 # Port for the (optional) Express REST API server # MCP_PORT=3001 # Port for the MCP server # NODE_ENV=development # Set to 'production' for production deployments # LOG_LEVEL=info # Set logging level (debug, info, warn, error) # If using 1Password CLI for secrets: # You might store the API key in 1Password and use `op run --env-file=.env -- ...`Encuentre la URL y la clave de API de Ghost Admin en su configuración de Ghost Admin en Integraciones -> Integraciones personalizadas.
Ejecutar el servidor :
npm start # OR directly: # node src/index.jsEste comando iniciará tanto el servidor Express (si las rutas aún están montadas) como el servidor MCP.
El servidor MCP normalmente estará disponible en
http://localhost:3001(o elMCP_PORTque usted especificó).Un cliente MCP puede conectarse a esta dirección para descubrir y utilizar las herramientas.
Modo de desarrollo (usando nodemon) : para desarrollo con reinicio automático:
npm run dev
Solución de problemas
Error 401 no autorizado de Ghost: Verifique que
GHOST_ADMIN_API_URLyGHOST_ADMIN_API_KEYen el archivo.envsean correctos y que la integración personalizada en Ghost esté habilitada.Problemas de conexión del servidor MCP: Asegúrese de que el servidor MCP esté en funcionamiento (revise los registros de la consola). Verifique que el puerto (
MCP_PORT, predeterminado 3001) no esté bloqueado por un firewall. Compruebe que el cliente se esté conectando a la dirección y el puerto correctos.Errores de ejecución de la herramienta: Consulte los registros de la consola del servidor para ver los mensajes de error detallados de la implementación de la herramienta (p. ej.,
ghost_create_post,ghost_upload_image). Entre los problemas comunes se incluyen entradas no válidas (verifique los esquemas de la herramienta ensrc/mcp_server.jsy el archivo README), problemas al descargar desdeimageUrl, fallos en el procesamiento de imágenes o errores de subida de la API de Ghost.Problemas de instalación de dependencias: Asegúrese de tener instalada una versión compatible de Node.js (consulte la sección Requisitos). Intente eliminar
node_modulesypackage-lock.jsony vuelva a ejecutarnpm install.