WordPress MCP
Un servidor del Protocolo de Contexto del Modelo (MCP) que otorga a los agentes de IA control total sobre sitios WordPress. 46 herramientas para entradas, páginas, medios, SEO, comentarios, redirecciones, bloques, patrones, TablePress y más.
Documentación
WordPress MCP
Un servidor de Model Context Protocol (MCP) que brinda a los agentes de IA control total sobre sitios WordPress. Administra entradas, páginas, medios, categorías, etiquetas, comentarios, SEO, redirecciones, bloques Gutenberg, patrones reutilizables, tablas TablePress, plugins, usuarios y ajustes del sitio, todo a través de 46 herramientas MCP.
Diseñado para Claude Code. También compatible con el Claude Agent SDK y cualquier cliente compatible con MCP.
Cómo Funciona
┌─────────────┐ JSON-RPC ┌──────────────────┐ HTTP/Auth ┌─────────────────┐
│ Claude / │ ──────────────▶ │ Python MCP │ ──────────────▶ │ WordPress Site │
│ AI Agent │ │ Proxy Server │ │ (MCP Adapter) │
│ │ ◀────────────── │ (server.py) │ ◀────────────── │ (mu-plugin) │
└─────────────┘ MCP Tools └──────────────────┘ JSON-RPC └─────────────────┘
│
sites.json
(multi-site config)
Un único proxy de Python gestiona sitios WordPress ilimitados. Cada llamada a herramienta incluye un parámetro site para apuntar a un sitio específico. La autenticación utiliza Contraseñas de Aplicación de WordPress (integradas en WP 5.6+).
Características
| Categoría | Herramientas | Capacidades |
|---|---|---|
| Entradas y Páginas | 9 herramientas | CRUD, cambio masivo de estado, revisiones, buscar y reemplazar |
| Categorías y Etiquetas | 8 herramientas | CRUD con soporte SEO de Rank Math |
| Medios | 4 herramientas | Subir desde URL, explorar biblioteca, actualizar metadatos, eliminar |
| Comentarios | 3 herramientas | Listar, moderar (aprobar/spam/papelera), responder, eliminar |
| SEO Rank Math | — | Metadatos SEO completos en entradas y categorías (título, descripción, palabra clave principal, Open Graph, Twitter, esquema, robots) |
| Redirecciones | 4 herramientas | CRUD de redirecciones Rank Math (301/302/307/410/451) |
| Bloques Gutenberg | 1 herramienta | Descubrir todos los tipos de bloques registrados con esquemas de atributos |
| Patrones Sincronizados | 5 herramientas | Crear, leer, actualizar, eliminar bloques reutilizables |
| TablePress | 5 herramientas | CRUD completo de tablas con opciones de visualización y visibilidad |
| Plugins | 2 herramientas | Listar plugins instalados, activar/desactivar |
| Usuarios | 1 herramienta | Listar usuarios con filtrado por rol |
| Ajustes | 3 herramientas | Leer/escribir opciones, vaciar cachés, obtener información del sitio |
| Utilidad | 1 herramienta | Listar todos los sitios configurados |
Total: 46 herramientas que cubren toda la superficie de gestión de WordPress.
Inicio Rápido
1. Instala el adaptador de WordPress
# Build PHP dependencies locally
cd wordpress/
composer install
# Upload vendor/ and load-mcp-adapter.php to your WordPress server
# See SETUP.md for detailed instructions
2. Configura el proxy
# Copy the example config
cp sites.json.example sites.json
# Edit with your site details
{
"myblog": {
"url": "https://yourdomain.com/wp-json/mcp/mcp-adapter-default-server",
"username": "YourAdmin",
"password": "xxxx xxxx xxxx xxxx xxxx xxxx"
}
}
3. Conéctate a Claude
Claude Code — añade a ~/.claude.json (o pide a tu agente de Claude Code que lo configure por ti):
{
"mcpServers": {
"wordpress": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--with", "fastmcp",
"--with", "httpx",
"python",
"/path/to/wordpress-mcp/server.py"
]
}
}
}
Luego instala la habilidad para la documentación de herramientas:
npx skills add 5unnykum4r/wordpress-mcp
O crea un enlace simbólico manualmente:
ln -s /path/to/wordpress-mcp/skill/wordpress-mcp ~/.claude/skills/wordpress-mcp
Consulta la guía de configuración completa para instrucciones detalladas, solución de problemas y ejemplos de uso.
Referencia de Herramientas
Todas las herramientas requieren site como primer parámetro.
Entradas y Páginas (9 herramientas)
| Herramienta | Acción |
|---|---|
list_posts | Listar/filtrar entradas y páginas |
read_post | Leer contenido completo, metadatos, SEO |
create_post | Crear con contenido, categorías, etiquetas, SEO |
update_post | Actualización parcial de cualquier campo |
delete_post | Mover a papelera o eliminar permanentemente |
bulk_update_status | Cambiar el estado de múltiples entradas |
list_revisions | Ver historial de revisiones |
restore_revision | Revertir a una revisión anterior |
search_replace | Buscar/reemplazar en contenido (con simulación incluida) |
Categorías y Etiquetas (8 herramientas)
| Herramienta | Acción |
|---|---|
list_categories | Listar con datos SEO de Rank Math |
create_category | Crear con SEO opcional |
update_category | Actualizar nombre, slug, padre, SEO |
delete_category | Eliminar (las entradas pasan a la categoría predeterminada) |
list_tags | Listar y buscar etiquetas |
create_tag | Crear una nueva etiqueta |
update_tag | Actualizar nombre, slug, descripción de etiqueta |
delete_tag | Eliminar una etiqueta (las entradas quedan sin etiquetar) |
Medios (4 herramientas)
| Herramienta | Acción |
|---|---|
upload_image | Descargar desde URL y añadir a la biblioteca de medios |
list_media | Explorar con filtrado por tipo MIME |
update_media | Actualizar título, texto alternativo, pie de foto |
delete_media | Eliminar permanentemente |
Comentarios (3 herramientas)
| Herramienta | Acción |
|---|---|
list_comments | Filtrar por entrada, estado, búsqueda |
update_comment | Aprobar, marcar como spam, mover a papelera o responder |
delete_comment | Eliminar permanentemente |
Redirecciones (4 herramientas)
| Herramienta | Acción |
|---|---|
list_redirections | Listar redirecciones de Rank Math |
create_redirection | Crear redirección 301/302/307/410/451 |
update_redirection | Modificar origen, destino, tipo |
delete_redirection | Eliminar una regla de redirección |
Gutenberg y Patrones (6 herramientas)
| Herramienta | Acción |
|---|---|
list_block_types | Descubrir bloques registrados + esquemas |
list_patterns | Listar patrones reutilizables/sincronizados |
read_pattern | Leer contenido de bloques de patrón |
create_pattern | Crear patrón sincronizado |
update_pattern | Actualizar contenido de patrón |
delete_pattern | Eliminar un patrón |
TablePress (5 herramientas)
| Herramienta | Acción |
|---|---|
list_tablepress_tables | Listar todas las tablas |
read_tablepress_table | Leer datos, opciones, visibilidad |
create_tablepress_table | Crear con matriz de datos 2D |
update_tablepress_table | Actualizar datos, opciones, visibilidad |
delete_tablepress_table | Eliminar permanentemente |
Administración (7 herramientas)
| Herramienta | Acción |
|---|---|
list_plugins | Listar plugins instalados + estado |
toggle_plugin | Activar o desactivar |
list_users | Listar usuarios por rol |
manage_options | Leer/escribir ajustes de WordPress |
clear_cache | Vaciar todas las cachés |
get_info | Información del sitio, versiones, tema |
list_sites | Mostrar sitios configurados |
Estructura del Proyecto
wordpress-mcp/
├── README.md ← This file
├── SETUP.md ← Full setup guide + troubleshooting
├── LICENSE ← MIT license
├── server.py ← Python MCP proxy (FastMCP + httpx)
├── sites.json.example ← Site configuration template
├── wordpress/
│ ├── load-mcp-adapter.php ← WordPress MU-plugin (server-side)
│ ├── composer.json ← PHP dependencies
│ └── composer.lock
└── skill/
└── wordpress-mcp/ ← Claude Code skill
├── SKILL.md
└── references/ ← Tool documentation (7 files)
Requisitos
Local (servidor proxy):
- Python 3.10+
- Gestor de paquetes uv
- FastMCP y httpx (instalados automáticamente por
uv run)
Servidor WordPress:
- WordPress 5.6+ (para Contraseñas de Aplicación)
- PHP 7.4+
- Paquetes Composer:
wordpress/abilities-apiywordpress/mcp-adapter
Gestión Multi-Sitio
Añade tantos sitios WordPress como necesites a sites.json:
{
"blog": {
"url": "https://blog.example.com/wp-json/mcp/mcp-adapter-default-server",
"username": "admin",
"password": "xxxx xxxx xxxx xxxx xxxx xxxx"
},
"shop": {
"url": "https://shop.example.com/wp-json/mcp/mcp-adapter-default-server",
"username": "admin",
"password": "yyyy yyyy yyyy yyyy yyyy yyyy"
},
"docs": {
"url": "https://docs.example.com/wp-json/mcp/mcp-adapter-default-server",
"username": "editor",
"password": "zzzz zzzz zzzz zzzz zzzz zzzz"
}
}
Cada sitio recibe su propio alias. Apunta a cualquier sitio con site="blog", site="shop", etc. No se necesita reiniciar el proxy al añadir nuevos sitios.
Contribuciones
Las contribuciones son bienvenidas. Por favor, abre un issue o una pull request.