MCP WordPress Post Server

Gestiona publicaciones de WordPress y sube imágenes directamente desde rutas de archivo.

Documentación

MCP WordPress Post Server

Servidor MCP (Model Context Protocol) con funciones de carga de imágenes mediante rutas de archivo, especializado en la gestión de publicaciones de WordPress.

Este proyecto se basa en el excelente wordpress-mcp-server de @prathammanocha, con mejoras significativas en el procesamiento de imágenes.

✨ Funciones principales

🖼️ Sistema avanzado de carga de imágenes

  • Método de ruta de archivo: Acceso directo al sistema de archivos (sin codificación Base64)
  • Soporte para archivos grandes: Procesamiento sin pérdida de datos dentro de los límites de WordPress
  • multipart/form-data: Uso de la API estándar de carga de medios de WordPress
  • Optimización automática: Aprovechamiento de las funciones integradas de procesamiento de imágenes de WordPress
  • Imágenes responsivas: Generación automática de srcset para diferentes tamaños de pantalla

📝 Gestión de publicaciones

  • Creación de publicaciones: Soporte para adjuntar múltiples imágenes
  • Actualización de publicaciones: Edición de publicaciones existentes
  • Listado de publicaciones: Compatible con paginación
  • Obtención de detalles de publicación: Visualización de contenido completo
  • Flujo de trabajo de borrador/publicación: Gestión de estados

🔧 Mejoras técnicas

  • Reducción del 33% en el uso de memoria: Eliminación de la codificación Base64
  • Integridad de datos: Solución a la pérdida de datos del 95-98% que ocurría con el método Base64
  • Manejo de errores: Verificación de existencia de archivos y validación de carga mejoradas
  • Registros de depuración: Registros detallados para la resolución de problemas

🚀 Inicio rápido

Requisitos previos

  • Node.js v18 o superior
  • Sitio de WordPress con API REST habilitada
  • Contraseña de aplicación de WordPress

Instalación

  1. Clonar el repositorio:
git clone [your-repo-url]
cd mcp-wordpress-post
  1. Instalar dependencias:
npm install
  1. Configuración del entorno:
cp .env.example .env
# .envファイルを編集してWordPressの認証情報を設定
  1. Compilar:
npm run build
  1. Iniciar el servidor:
npm start

📖 Uso

Configuración de MCP

Agregue lo siguiente al archivo de configuración de su cliente MCP:

{
  "mcpServers": {
    "wordpress-post": {
      "command": "node",
      "args": ["/path/to/mcp-wordpress-post/build/posts-only.js"]
    }
  }
}

Crear una publicación con imágenes

El sistema mejorado de carga de imágenes utiliza rutas de archivo:

// 新しいファイルパス方式(推奨)
{
  "tool": "create-post",
  "title": "画像付きの投稿",
  "content": "この画像をご覧ください: {IMAGE1}",
  "images": [{
    "filePath": "/絶対パス/to/image.png",
    "filename": "カスタム名.png", // 省略可能
    "placeholder": "{IMAGE1}"
  }]
}

Herramientas disponibles

create-post

Crea una nueva publicación de WordPress con soporte para adjuntar imágenes

Parámetros:

  • siteUrl (cadena): URL del sitio de WordPress
  • username (cadena): Nombre de usuario de WordPress
  • password (cadena): Contraseña de aplicación
  • title (cadena): Título de la publicación
  • content (cadena): Contenido de la publicación con marcadores de posición de imágenes
  • status (enumeración): "draft" | "publish" | "private" (predeterminado: "draft")
  • images (matriz, opcional): Objetos de imagen con filePath, placeholder y filename opcional

list-posts

Obtiene publicaciones de WordPress con soporte de paginación

get-post

Obtiene información detallada de una publicación específica

update-post

Actualiza una publicación existente de WordPress

🔄 Migración desde el método Base64

Si está migrando desde un sistema basado en Base64:

Método anterior (Base64 - no recomendado):

images: [{
  data: "iVBORw0KGgoAAAANSUhEUgAAAAE...", // 大きなBase64文字列
  filename: "image.png",
  placeholder: "{IMAGE1}"
}]

Nuevo método (ruta de archivo - actual):

images: [{
  filePath: "/path/to/image.png",              // ファイルシステムパス
  filename: "カスタム名.png",                  // 省略可能なカスタム名
  placeholder: "{IMAGE1}"
}]

🐛 Solución de problemas

Problemas comunes

  1. Error de archivo no encontrado:

    • Verifique que la ruta del archivo sea una ruta absoluta
    • Verifique los permisos de acceso al archivo
  2. Error al cargar archivos grandes:

    • Verifique la configuración de upload_max_filesize en WordPress
    • Verifique post_max_size y memory_limit
  3. Las imágenes no se muestran:

    • Verifique que el formato del marcador de posición coincida exactamente
    • Revise los registros de depuración de /tmp/mcp-debug.log

Modo de depuración

Para habilitar registros detallados:

npm run debug-mcp

📊 Comparación de rendimiento

ElementoMétodo Base64Método de ruta de archivo
Uso de memoriaAlto (+33%)Eficiente
Pérdida de datos95-98% en archivos grandes0%
Velocidad de procesamientoLentoRápido
Límite de tamaño de archivo~100KB en la prácticaHasta el límite de WordPress

🤝 Contribuciones

Este proyecto está construido sobre la base de prathammanocha/wordpress-mcp-server.

Configuración del entorno de desarrollo

  1. Clonar con submódulos:
git clone --recursive [your-repo-url]
  1. Instalar dependencias:
npm install
  1. Modo de desarrollo:
npm run dev

Pruebas

Ejecute los scripts de depuración para probar las funciones:

npm run debug-playwright  # WordPress統合テスト
npm run debug-mcp        # MCPサーバーテスト

📊 Problemas resueltos

Problemas del método Base64

  • 98% de pérdida de datos: Problema grave de 85KB → 1.5KB
  • Mala eficiencia de memoria: 33% de uso innecesario de memoria
  • Velocidad de procesamiento reducida: Sobrecarga de los procesos de codificación/decodificación

Ventajas del método de ruta de archivo

  • Cero pérdida de datos: 85KB → 50KB (optimización normal)
  • Eficiencia de memoria: Eliminación del proceso de codificación Base64
  • Procesamiento rápido: Aceleración mediante lectura directa de archivos
  • Estabilidad: Funcionamiento estable mediante el uso de la API estándar de WordPress

📄 Licencia

Licencia MIT: consulte el archivo LICENSE para obtener más detalles.

🙏 Agradecimientos

🔗 Proyectos relacionados


Creado con ❤️ para una mejor automatización de WordPress