Para conectar WordPress a ChatGPT y a Claude hace falta un servidor OAuth, y el MCP Adapter, el plugin oficial que convierte WordPress en servidor MCP, no lo trae. Nosotros lo resolvimos con un puente fino en un Worker de Cloudflare, que usa tu usuario y una contraseña de aplicación de WordPress como inicio de sesión, sin secretos guardados en el Worker.

Este texto es un extracto de nuestra guía en español, escrita contra la especificación MCP 2026-07-28. Lo que cuenta vale a 9 de noviembre de 2026 y puede cambiar pronto: el MCP Adapter sigue en la versión 0.7.1 y hay una propuesta abierta, aún sin fusionar, para que traiga su propio servidor OAuth. El código del puente es público, con licencia MIT, en mcp-bridge-wordpress.

¿Por qué ChatGPT y claude.ai no se conectan a mi WordPress?

Porque esas apps solo añaden conectores con OAuth, y el MCP Adapter solo entiende usuario y contraseña de aplicación. No tienen ningún campo donde escribir esa contraseña ni forma de enviarla en una cabecera.

OAuth es el mecanismo de «iniciar sesión con…»: la app te manda a una página de inicio de sesión y recibe un token, un permiso temporal, sin ver tu contraseña. Una contraseña de aplicación es otra cosa: una contraseña aparte que creas en tu perfil de WordPress para un programa concreto y que puedes borrar sin cambiar la tuya.

Claude Code no tiene ese problema, porque acepta una cabecera Authorization con la contraseña. ChatGPT y claude.ai, en cambio, llaman a tu web desde los servidores de OpenAI y de Anthropic, y ahí solo cabe OAuth. Lo reconocen la guía del adaptador para propietarios de sitios y el issue #436.

La propuesta oficial (PR #437 y PR #448) sigue sin fusionar, y el proxy local @automattic/mcp-wordpress-remote solo funciona en el ordenador donde lo configuras.

La idea: tu contraseña de aplicación como inicio de sesión

El puente no tiene usuarios propios. Cuando ChatGPT o Claude te mandan a iniciar sesión, escribes tu usuario de WordPress y una contraseña de aplicación, el puente pregunta a tu propia web si valen y, si valen, emite el token OAuth. Tiene cuatro consecuencias:

  • No hay ningún secreto fijo en el Worker. La credencial viaja cifrada dentro de los datos del token.
  • El asistente tiene los permisos de tu cuenta de WordPress, y ninguno más.
  • Revocar el acceso es borrar la contraseña de aplicación en tu perfil.
  • Sirve para cualquier WordPress con el adaptador, porque la dirección de la web es una variable.

El flujo, paso a paso:

  1. El cliente hace una petición MCP sin token y el puente responde 401 con WWW-Authenticate.
  2. El cliente se registra (DCR) y llama a /authorize con PKCE.
  3. El puente te muestra la página «Conectar con WordPress», donde escribes usuario y contraseña de aplicación.
  4. El puente consulta a WordPress con autenticación Basic. Si responde 200 y la cuenta tiene el permiso edit_posts, aprueba.
  5. El puente devuelve un código de autorización, el cliente lo cambia en /token y recibe un token de acceso de una hora y uno de renovación de 30 días.
  6. En cada tools/call, el puente reenvía la misma llamada a WordPress con la credencial en lugar del token.

Para comprobar la contraseña, el puente hace una sola petición: GET {WP_URL}/wp-json/wp/v2/users/me?context=edit&_fields=id,username,name,capabilities, con la cabecera Authorization: Basic <usuario:contraseña en base64>.

Es un solo Worker con la librería @cloudflare/workers-oauth-provider 1.2.4 y un KV propio enlazado como OAUTH_KV. Dentro de WordPress no hace falta nada además del MCP Adapter. El puente comprueba la contraseña antes de aprobar el consentimiento, porque su identificador (handle) sirve una sola vez, y admite 5 intentos fallidos cada 15 minutos por IP antes de responder 429.

Mcp-Method: el fallo que no vimos con Claude Code

ChatGPT llegó con la versión 2026-07-28 del protocolo y WordPress le respondió 400 «Header mismatch». El puente filtraba las cabeceras con una lista blanca y no reenviaba Mcp-Method, que esa versión exige en todas las peticiones.

Esa versión añade cabeceras que repiten datos del cuerpo: Mcp-Method lleva el método, como server/discover, y Mcp-Name el nombre de la herramienta en tools/call. Si no coinciden con el cuerpo, el servidor responde HTTP 400 con el error -32020.

Nuestras pruebas no lo detectaron: Claude Code hablaba la versión 2025-11-25 y nuestro script de prueba tampoco dio con el fallo. ChatGPT sí usaba 2026-07-28, y entró con server/discover.

El arreglo fue reenviar todas las cabeceras que empiezan por Mcp-, a la ida y a la vuelta. Así pasa también MCP-Protocol-Version, que el adaptador exige después de initialize. Si escribes un proxy MCP, nuestra recomendación es no filtrar las cabeceras con una lista cerrada.

La guía completa añade lo que aquí queda fuera: el estado de las propuestas oficiales y de CIMD frente al registro dinámico (deprecado en 2026-07-28), cómo añadir el conector paso a paso en ChatGPT y en claude.ai, los tropiezos de despliegue, por qué Claude puede decir que tu cuenta se autorizó pero no encuentra el servidor, la subida de imágenes desde ChatGPT con subir_imagen, qué escala y qué no, recomendaciones de seguridad y los casos en que no te hace falta el puente. DesarrolloMCP: puente OAuth para WordPress

Si quieres aprender MCP desde cero, está el curso de DesarrolloMCP, con el nivel Básico gratis (14 lecciones, sin tarjeta), en español.