WordPress Author MCP Server

Un servidor MCP basado en personalidad para WordPress, que proporciona herramientas adecuadas al rol para la gestión de contenido.

Documentación

WordPress Author MCP Server

Un servidor de Protocolo de Contexto de Modelo (MCP) para WordPress basado en personalidades que proporciona herramientas apropiadas para cada rol en la gestión de contenido. Este servidor permite que asistentes de IA como Claude creen, editen y gestionen contenido de WordPress mediante interacciones en lenguaje natural.

Propósito y Características

  • 🎭 Mapeo de Herramientas por Personalidad: Tres modos (Colaborador/Autor/Administrador) con herramientas apropiadas para cada rol
  • 🔧 Operaciones Semánticas: Acciones de WordPress de alto nivel sin complejidad de API
  • 📁 Flujo de Trabajo de Sesiones de Documento: Edición de archivos temporales abstraída con identificadores opacos (sin exposición del sistema de archivos)
  • 🔄 Conversión de Formato Transparente: La IA edita Markdown limpio → WordPress recibe HTML formateado
  • ✏️ Edición Flexible Basada en Líneas: Operaciones precisas por línea + búsqueda y reemplazo contextual
  • 🛡️ Permisos Nativos de WordPress: Deja que WordPress maneje toda la aplicación de permisos
  • 📝 Gestión de Contenido: Crear borradores, publicar entradas/páginas, programar contenido, gestionar medios
  • ⚡ Arquitectura Basada en Mapas: Configuración JSON para asignaciones de herramientas, sin roles codificados

Arquitectura Semántica

Este servidor MCP no es solo un envoltorio de API. Proporciona operaciones semánticas inteligentes que mapean flujos de trabajo humanos a acciones de WordPress, con gestión de estado sofisticada y conversión de formato.

Flujo de Estado de Sesión de Documento

flowchart TB
    WP[WordPress HTML Post]:::wordpress
    PFE[pull-for-editing]:::operation
    H2M[HTML→Markdown Conversion]:::converter
    DS[Document Session<br/>Handle: abc123]:::session
    LES[Local Edit State<br/>• Clean Markdown<br/>• Line Numbers<br/>• No HTML Entities]:::state
    
    EDL[edit-document-line]:::edit
    IAL[insert-at-line]:::edit
    SR[search-replace]:::edit
    
    MLS[Modified Local State<br/>Multiple Edits Applied]:::state
    STW[sync-to-wordpress]:::operation
    M2H[Markdown→HTML Conversion]:::converter
    WPU[WordPress Update<br/>Single API Call]:::wordpress
    
    WP -->|1| PFE
    PFE --> H2M
    H2M --> DS
    DS --> LES
    LES --> EDL
    LES --> IAL
    LES --> SR
    EDL --> MLS
    IAL --> MLS
    SR --> MLS
    MLS -->|2| STW
    STW --> M2H
    M2H --> WPU
    
    classDef wordpress fill:#1e40af,stroke:#3730a3,color:#ffffff
    classDef operation fill:#059669,stroke:#047857,color:#ffffff
    classDef converter fill:#7c3aed,stroke:#6d28d9,color:#ffffff
    classDef session fill:#ea580c,stroke:#dc2626,color:#ffffff
    classDef state fill:#0891b2,stroke:#0e7490,color:#ffffff
    classDef edit fill:#64748b,stroke:#475569,color:#ffffff

Mapeo de Operaciones Semánticas

flowchart LR
    subgraph "Human Intent"
        H1[I want to write about MCP servers]:::human
        H2[Fix that typo in my article]:::human
        H3[What do people think of my post?]:::human
    end
    
    subgraph "AI Intent"
        AI1[Create article]:::intent
        AI2[Edit my post]:::intent
        AI3[Review feedback]:::intent
    end
    
    subgraph "Semantic Operations"
        SO1[draft-article]:::semantic
        SO2[pull-for-editing<br/>+ edit-document<br/>+ sync-to-wordpress]:::semantic
        SO3[view-editorial-feedback]:::semantic
    end
    
    subgraph "WordPress API"
        API1[POST /wp/v2/posts<br/>+ Category lookups<br/>+ Tag creation<br/>+ Status setting]:::api
        API2[GET /wp/v2/posts/:id<br/>+ GET categories<br/>+ GET tags<br/>+ PUT /wp/v2/posts/:id]:::api
        API3[GET /wp/v2/comments<br/>+ Filter by post_author<br/>+ Parse editorial notes]:::api
    end
    
    H1 --> AI1
    H2 --> AI2
    H3 --> AI3
    
    AI1 --> SO1
    AI2 --> SO2
    AI3 --> SO3
    
    SO1 --> API1
    SO2 --> API2
    SO3 --> API3
    
    classDef human fill:#ec4899,stroke:#db2777,color:#ffffff
    classDef intent fill:#10b981,stroke:#059669,color:#ffffff
    classDef semantic fill:#f59e0b,stroke:#d97706,color:#000000
    classDef api fill:#6366f1,stroke:#4f46e5,color:#ffffff

Componentes Arquitectónicos Clave

  1. Gestor de Sesiones de Documento

    • Mantiene sesiones de edición con identificadores opacos
    • Sin rutas del sistema de archivos expuestas a la IA
    • Limpieza automática al sincronizar
  2. Capa de Conversión de Formato

    • Turndown: HTML → Markdown (con alternativas)
    • Marked: Markdown → HTML (con alternativas)
    • Maneja las entidades HTML de WordPress de forma transparente
  3. Motor de Operaciones Semánticas

    • Mapea intenciones de alto nivel a flujos de trabajo de WordPress
    • Agrupa llamadas de API relacionadas
    • Proporciona operaciones similares a transacciones
  4. Sistema de Edición Basado en Líneas

    • Operaciones precisas por número de línea
    • Búsqueda contextual dentro de rangos de líneas
    • Evita la coincidencia frágil de cadenas

Flujo de Permisos

flowchart TD
    subgraph "MCP Configuration"
        P1[Contributor Personality]:::personality
        P2[Author Personality]:::personality
        P3[Admin Personality]:::personality
    end
    
    subgraph "Available Tools"
        T1[Limited Tools<br/>draft, edit, submit]:::tools
        T2[Extended Tools<br/>+ publish, media]:::tools
        T3[All Tools<br/>+ bulk ops, categories]:::tools
    end
    
    subgraph "WordPress User"
        U1[Contributor Account]:::user
        U2[Author Account]:::user
        U3[Admin Account]:::user
    end
    
    subgraph "Actual Capabilities"
        C1[Can only draft]:::capability
        C2[Can publish own]:::capability
        C3[Full control]:::capability
    end
    
    P1 --> T1
    P2 --> T2
    P3 --> T3
    
    T1 --> |Filtered by| U1
    T1 --> |Filtered by| U2
    T1 --> |Filtered by| U3
    
    T2 --> |Filtered by| U1
    T2 --> |Filtered by| U2
    T2 --> |Filtered by| U3
    
    T3 --> |Filtered by| U1
    T3 --> |Filtered by| U2
    T3 --> |Filtered by| U3
    
    U1 --> C1
    U2 --> C2
    U3 --> C3
    
    WP[WordPress Always Has<br/>Final Authority]:::wordpress
    C1 --> WP
    C2 --> WP
    C3 --> WP
    
    classDef personality fill:#8b5cf6,stroke:#7c3aed,color:#ffffff
    classDef tools fill:#0ea5e9,stroke:#0284c7,color:#ffffff
    classDef user fill:#f97316,stroke:#ea580c,color:#ffffff
    classDef capability fill:#22c55e,stroke:#16a34a,color:#000000
    classDef wordpress fill:#dc2626,stroke:#b91c1c,color:#ffffff

Requisitos Previos

Antes de usar este servidor MCP, necesitas:

  1. Contraseña de Aplicación de WordPress

    • Ve a tu administrador de WordPress: Users > Your Profile > Application Passwords
    • Crea una nueva contraseña de aplicación
    • Guarda esta contraseña: la necesitarás para la configuración
  2. Plugin de API de Características de WordPress

    • Instala el plugin WordPress Feature API
    • Activa el plugin en tu administrador de WordPress
    • Esto habilita operaciones semánticas más allá de la API REST básica
  3. Permisos de Usuario de WordPress Apropiados

    • El servidor MCP respeta los permisos reales de tu usuario de WordPress
    • Personalidad de Colaborador + cuenta de Administrador = capacidades de Administrador
    • Personalidad de Administrador + cuenta de Colaborador = solo capacidades de Colaborador
    • WordPress siempre tiene la autoridad final sobre los permisos

Inicio Rápido

Una vez que se cumplan los requisitos previos:

# Clone and install
git clone https://github.com/aaronsb/wordpress-mcp
cd wordpress-mcp
npm install

# Run interactive setup
npm run setup

El asistente de configuración:

  1. Preguntará por la URL de tu sitio de WordPress y tus credenciales
  2. Ayudará a elegir una personalidad predeterminada (Colaborador/Autor/Administrador)
  3. Creará tu archivo de configuración .env
  4. Generará configuraciones listas para pegar para Claude Desktop y Claude Code

Importante: La personalidad que elijas determina qué herramientas están disponibles, pero tus permisos reales de usuario de WordPress siempre tienen prioridad.

Documentación

Cómo Funciona

  1. Las características se definen como módulos independientes en src/features/
  2. Las personalidades se mapean a conjuntos específicos de características en config/personalities.json
  3. Al iniciar, especifica una personalidad para exponer solo sus herramientas mapeadas
  4. WordPress maneja toda la aplicación real de permisos

Instalación

git clone https://github.com/aaronsb/wordpress-mcp
cd wordpress-mcp
npm install

Configuración

1. Configuración de WordPress

El servidor busca credenciales en este orden:

  1. Variables de entorno (WORDPRESS_URL, WORDPRESS_USERNAME, WORDPRESS_APP_PASSWORD)
  2. Archivo .env en ~/.wordpress-mcp/ (recomendado para uso global)
  3. Archivo .env en el directorio del servidor (para desarrollo)

Opción A: Usar el Asistente de Configuración (Recomendado)

Ejecuta la configuración interactiva:

npm run setup

Esto:

  • Preguntará dónde guardar tus credenciales (global o local)
  • Recopilará los detalles de tu sitio de WordPress
  • Creará el archivo .env automáticamente
  • Mostrará configuraciones listas para pegar

Opción B: Configuración Manual

Crea un archivo .env en ~/.wordpress-mcp/:

mkdir -p ~/.wordpress-mcp
cat > ~/.wordpress-mcp/.env << EOF
WORDPRESS_URL=https://your-site.com
WORDPRESS_USERNAME=your-username
WORDPRESS_APP_PASSWORD=your-app-password
EOF

Nota: Usa Contraseñas de Aplicación para mayor seguridad. Genera una en: Users > Your Profile > Application Passwords en tu administrador de WordPress.

2. Configuración de Claude Desktop

Primero, asegúrate de que tus credenciales estén configuradas (ejecuta npm run setup si es necesario).

Añade a tu archivo de configuración de Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "wordpress-author": {
      "command": "node",
      "args": [
        "/path/to/wordpress-mcp/src/server.js",
        "--personality=author"
      ]
    }
  }
}

El servidor leerá las credenciales de su archivo .env.

3. Configuración de Claude Code

Opción A: Usando la CLI (Recomendado)

Primero, asegúrate de que tu archivo .env esté configurado (ejecuta npm run setup si es necesario).

Luego, en el directorio de tu proyecto, ejecuta:

claude mcp add wordpress-author \
  node /path/to/wordpress-mcp/src/server.js -- \
  --personality=author

El servidor leerá las credenciales del archivo .env en el directorio wordpress-mcp.

Opción B: Configuración Manual

Alternativamente, añade a .claude/settings.json de tu proyecto:

{
  "mcpServers": {
    "wordpress-author": {
      "command": "node",
      "args": [
        "/path/to/wordpress-mcp/src/server.js",
        "--personality=author"
      ]
    }
  }
}

Nota: El servidor lee las credenciales de su archivo .env, no de la configuración de Claude.

Nota: Ajusta el parámetro de personalidad (--personality=) a uno de:

  • contributor - Herramientas limitadas para creación de contenido
  • author - Capacidades completas de autoría (recomendado)
  • administrator - Gestión completa del sitio

Uso

Una vez configurado, las herramientas de WordPress estarán disponibles en Claude. Puedes:

  • Crear y editar borradores de entradas y páginas
  • Publicar artículos y páginas con opciones de programación
  • Crear estructuras de páginas jerárquicas con relaciones padre-hijo
  • Buscar entradas usando lenguaje natural
  • Extraer entradas/páginas para edición con sesiones de documento
  • Editar contenido usando operaciones basadas en líneas
  • Sincronizar cambios en una sola llamada de API
  • Gestionar archivos multimedia
  • Realizar operaciones masivas (solo administrador)

Flujos de Trabajo de Descubrimiento y Edición de Contenido

Ejemplos de Búsqueda Semántica:

  • "Encuentra mi artículo sobre patatas publicado ayer"
  • "Busca borradores que mencionen servidores MCP"
  • "Muéstrame entradas sobre IA que necesiten edición"
  • "Encuentra artículos publicados con comentarios para revisar"

Flujos de Trabajo en Lenguaje Natural:

  • "Encuentra mi artículo sobre patatas y actualiza la sección de cocina" → La IA usa find-posts → sugiere pull-for-editing → te guía a través de las ediciones
  • "Revisa los comentarios sobre mi tutorial de WordPress" → La IA busca entradas publicadas → usa view-editorial-feedback
  • "Edita mi último borrador sobre APIs semánticas" → La IA encuentra borradores recientes → los extrae para edición → ayuda con los cambios

Flujos de Trabajo Específicos de Páginas:

  • "Crea una página Acerca de Nosotros" → La IA usa draft-page o create-page con contexto semántico claro
  • "Haz una página de Servicios bajo la sección principal de Servicios" → La IA crea una página jerárquica con relación padre
  • "Edita la página de Contacto para añadir nuevos horarios de oficina" → La IA usa pull-for-editing con type: "page"

Operaciones Directas Basadas en ID (cuando conoces el ID):

  • "Extrae la entrada 42 para edición"
  • "Extrae la página 15 para edición"
  • "Publica el borrador con ID 30"
  • "Programa la entrada 55 para el próximo lunes a las 9 AM"

Búsqueda Inteligente con Intención

La operación find-posts entiende lo que quieres hacer:

Filtrado basado en intención:

  • intent: "edit" → Prioriza borradores que puedes modificar
  • intent: "review" → Muestra entradas pendientes que esperan aprobación
  • intent: "publish" → Encuentra borradores listos para publicar
  • intent: "comment" → Muestra entradas publicadas con comentarios

Orientación del flujo de trabajo: Cada resultado de búsqueda incluye:

  • Próximas acciones sugeridas según el estado de la entrada
  • Instrucciones claras para el siguiente paso
  • Recomendaciones de herramientas apropiadas para el rol

Ejemplo:

"Find posts about baking I can edit"
→ Returns drafts with suggested actions: ["pull-for-editing", "submit-for-review"]
→ Guidance: "📝 Use 'pull-for-editing' with a post ID to start editing..."

Características de Edición de Documentos

🔄 Conversión de Formato Transparente:

  • HTML de WordPress → Markdown limpio para edición por IA
  • La IA edita en Markdown → WordPress recibe HTML formateado
  • Preserva negrita, cursiva, encabezados, listas y más
  • Sin entidades HTML ni problemas de codificación

✏️ Herramientas de Edición Flexibles:

  • read-document - Ver contenido con números de línea
  • edit-document-line - Reemplazar líneas específicas por número
  • insert-at-line - Insertar contenido en posiciones precisas
  • replace-lines - Reemplazar bloques de varias líneas
  • search-replace - Búsqueda contextual con proximidad de líneas
  • edit-document - Reemplazo tradicional de cadenas (alternativa)

Ejemplo de Flujo de Trabajo de Sesión de Documento

1. Pull for editing: pull-for-editing postId=42
   → Returns documentHandle="wp-session-abc123" (no filesystem paths!)

2. Read and edit using various methods:
   → read-document documentHandle="wp-session-abc123"
   → edit-document-line lineNumber=5 newLine="Better content"
   → insert-at-line lineNumber=10 content="New paragraph"
   → search-replace searchTerm="old" replacement="new" nearLine=15

3. Sync back:
   → sync-to-wordpress documentHandle="wp-session-abc123"
   → Single WordPress update with all formatting preserved

Beneficios Clave:

  • La IA nunca ve rutas del sistema de archivos (seguridad + abstracción)
  • Edita en Markdown limpio sin problemas de codificación HTML
  • WordPress recibe HTML correctamente formateado automáticamente
  • La edición basada en líneas evita fallos de coincidencia de cadenas
  • Una extracción → múltiples ediciones → una inserción (eficiencia de API)

Mapeos de Personalidad

Los mapeos de herramientas se definen en config/personalities.json:

Colaborador

Creación de Contenido:

  • draft-article - Crear borradores de entradas
  • draft-page - Crear borradores de páginas para contenido estático
  • edit-draft - Editar borradores existentes
  • submit-for-review - Enviar borradores para revisión editorial
  • view-editorial-feedback - Ver comentarios del editor

Flujo de Trabajo de Sesión de Documento:

  • pull-for-editing - Obtener entradas/páginas en sesiones de edición
  • read-document - Leer documentos con números de línea
  • edit-document-line - Reemplazar líneas específicas por número
  • insert-at-line - Insertar contenido en posiciones de línea
  • replace-lines - Reemplazar rangos de líneas
  • search-replace - Búsqueda y reemplazo contextual
  • edit-document - Reemplazo de cadenas (alternativa)
  • sync-to-wordpress - Enviar todos los cambios de vuelta
  • list-editing-sessions - Ver sesiones activas
  • close-editing-session - Limpieza manual de sesiones

Autor

  • Todas las herramientas de Colaborador, más:

Publicación:

  • create-article - Crear y publicar entradas inmediatamente
  • create-page - Crear y publicar páginas con jerarquía
  • publish-workflow - Publicar o programar entradas
  • manage-media - Subir y gestionar archivos multimedia

Gestión de Contenido:

  • trash-own-content - Mover tus propias entradas o páginas a la papelera

Administrador

  • Todas las herramientas de Autor, más:

Gestión del Sitio:

  • bulk-content-operations - Acciones masivas en entradas/páginas (papelera, restaurar, eliminar, cambiar estado)
  • manage-all-content - Ver y gestionar todas las entradas
  • review-content - Revisar entradas y comentarios pendientes
  • moderate-comments - Aprobar, rechazar o gestionar comentarios
  • manage-categories - Crear, actualizar y organizar categorías

Editor

  • Todas las herramientas de Autor, más:

Gestión Editorial:

  • bulk-content-operations - Acciones masivas en entradas/páginas (papelera, restaurar, eliminar, cambiar estado)
  • review-content - Revisar entradas y comentarios pendientes
  • moderate-comments - Aprobar, rechazar o gestionar comentarios
  • manage-categories - Crear, actualizar y organizar categorías

Añadir Personalidades Personalizadas

Edita config/personalities.json para crear mapeos de roles personalizados:

{
  "custom-editor": {
    "name": "Custom Editor",
    "description": "Custom editorial team member",
    "features": ["manage-all-content", "edit-draft", "publish-workflow", "bulk-content-operations"],
    "context": {
      "can_publish": true,
      "can_edit_others": true
    }
  }
}

Luego inicia con:

npx wordpress-author-mcp --personality=editor

Personalización

Consulta CUSTOMIZATION.md para instrucciones detalladas sobre:

  • Crear personalidades personalizadas
  • Añadir nuevas características
  • Configurar mapeos de herramientas basados en roles
  • Ejemplos del mundo real (Editor, Revisor, Gestor de Redes Sociales)

Beneficios de la Arquitectura

  1. Sin roles codificados - Toda la lógica de personalidad vive en la configuración
  2. Personalización fácil - Modifica JSON para cambiar la disponibilidad de herramientas
  3. Autoridad de WordPress - La API aplica los permisos reales
  4. Separación limpia - Las funciones no conocen las personalidades
  5. Extensible - Agrega funciones y mapealas sin tocar el código central

Manejo de Permisos de WordPress

El servidor MCP presenta herramientas según la personalidad, pero WordPress siempre tiene la autoridad final:

  • Si un colaborador intenta publicar (mediante manipulación de la API), WordPress devuelve 403
  • Si un autor intenta editar publicaciones de otros, WordPress lo deniega
  • El servidor MCP maneja estos errores con elegancia y mensajes útiles

Desarrollo

# Run in development mode with auto-reload
npm run dev

Licencia

MIT