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
-
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
-
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
-
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
-
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:
-
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
- Ve a tu administrador de WordPress:
-
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
-
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:
- Preguntará por la URL de tu sitio de WordPress y tus credenciales
- Ayudará a elegir una personalidad predeterminada (Colaborador/Autor/Administrador)
- Creará tu archivo de configuración
.env - 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
- Descripción General de la Arquitectura - Detalles técnicos sobre el motor de operaciones semánticas
- Guía de Personalización - Crea personalidades personalizadas y mapeos de herramientas
- Ejemplos de Creación de Páginas - Guía completa para crear y gestionar páginas
- Análisis de WordPress MCP - Por qué lo construimos de manera diferente
- Documentación de Pruebas - Ejecutar y entender el conjunto de pruebas
Cómo Funciona
- Las características se definen como módulos independientes en
src/features/ - Las personalidades se mapean a conjuntos específicos de características en
config/personalities.json - Al iniciar, especifica una personalidad para exponer solo sus herramientas mapeadas
- 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:
- Variables de entorno (
WORDPRESS_URL,WORDPRESS_USERNAME,WORDPRESS_APP_PASSWORD) - Archivo
.enven~/.wordpress-mcp/(recomendado para uso global) - Archivo
.enven 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
.envautomá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 contenidoauthor- 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→ sugierepull-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-pageocreate-pagecon 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-editingcontype: "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 modificarintent: "review"→ Muestra entradas pendientes que esperan aprobaciónintent: "publish"→ Encuentra borradores listos para publicarintent: "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íneaedit-document-line- Reemplazar líneas específicas por númeroinsert-at-line- Insertar contenido en posiciones precisasreplace-lines- Reemplazar bloques de varias líneassearch-replace- Búsqueda contextual con proximidad de líneasedit-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 entradasdraft-page- Crear borradores de páginas para contenido estáticoedit-draft- Editar borradores existentessubmit-for-review- Enviar borradores para revisión editorialview-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ónread-document- Leer documentos con números de líneaedit-document-line- Reemplazar líneas específicas por númeroinsert-at-line- Insertar contenido en posiciones de líneareplace-lines- Reemplazar rangos de líneassearch-replace- Búsqueda y reemplazo contextualedit-document- Reemplazo de cadenas (alternativa)sync-to-wordpress- Enviar todos los cambios de vueltalist-editing-sessions- Ver sesiones activasclose-editing-session- Limpieza manual de sesiones
Autor
- Todas las herramientas de Colaborador, más:
Publicación:
create-article- Crear y publicar entradas inmediatamentecreate-page- Crear y publicar páginas con jerarquíapublish-workflow- Publicar o programar entradasmanage-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 entradasreview-content- Revisar entradas y comentarios pendientesmoderate-comments- Aprobar, rechazar o gestionar comentariosmanage-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 pendientesmoderate-comments- Aprobar, rechazar o gestionar comentariosmanage-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
- Sin roles codificados - Toda la lógica de personalidad vive en la configuración
- Personalización fácil - Modifica JSON para cambiar la disponibilidad de herramientas
- Autoridad de WordPress - La API aplica los permisos reales
- Separación limpia - Las funciones no conocen las personalidades
- 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