# Connect Wordpress MCP

> Use when the user wants Claude to publish posts, edit pages, or manage a self-hosted WordPress site directly — connecting Claude Code (or any MCP client) to a WordPress blog via an MCP server, especially when "connect Claude to my WordPress/blog", "let Claude publish articles", or "manage my site with AI" comes up.

- Skill: `cleudersons/connect-wordpress-mcp` (Agent Skill)
- Install (CLI): `npx skillmds@latest add cleudersons/connect-wordpress-mcp`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cleudersons/connect-wordpress-mcp/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: cleudersons (https://skillmd.com/u/cleudersons)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/cleudersons/connect-wordpress-mcp

---


# Connecting Claude to a WordPress Site via MCP

## Overview

WordPress has no first-party MCP server, but the **EMCP Tools** plugin (free,
WordPress.org-style install) turns any self-hosted WP install into one — exposing
posts, media, pages, users, plugins/themes, and (if Elementor is installed) full
page-building as MCP tools, reachable over HTTP with OAuth. This skill covers the
one-time connection; once connected, Claude uses the exposed tools normally.

Two sides to this: something a **site owner with wp-admin access** does once in the
browser, and something you (the agent) do in a **real interactive terminal** — not a
chat window, because the OAuth step needs an interactive picker.

## When to Use

- User asks to publish/edit a WordPress site and no WordPress MCP tool is connected yet
- "Connect Claude to my blog/WordPress" or similar
- NOT for wordpress.com-hosted sites without plugin install access — EMCP Tools needs
  to be installed as a plugin, which requires a self-hosted (or Business-tier
  wordpress.com) site

## Steps

### 1. Site owner installs EMCP Tools (wp-admin, in the browser)

1. Download the packaged plugin ZIP from the
   [EMCP Tools releases page](https://github.com/msrbuilds/elementor-mcp/releases) —
   the asset named `emcp-tools-X.Y.Z.zip`. **Not** "Source code (zip)" — that's the
   raw repo, not an installable plugin.
2. `wp-admin → Plugins → Adicionar novo/Add New → Enviar plugin/Upload Plugin` → pick
   the ZIP → Install → Activate.
3. If a banner says something like "Complete EMCP Tools Activation Now", click it —
   the plugin isn't fully wired up until that finishes.
4. Open the **EMCP Tools** menu item → **Connection** tab. Note the **Server URL**,
   shown in the form `https://SITE/wp-json/mcp/emcp-tools-server`.
5. Leave **OAuth sign-in for AI clients** enabled (it's the default) — this lets the
   agent authenticate by signing in, with no static password/token to copy or store.
   Destructive operations (delete content, change plugins/themes) default to
   disabled; leave that off until there's a real need.

### 2. Register the server (agent side)

```
claude mcp add --scope user --transport http <name> https://SITE/wp-json/mcp/emcp-tools-server
```

`--scope user` makes it available in every project, not just the current one. Confirm
it was added:

```
claude mcp list
```

It shows up as `! Needs authentication` — expected, next step fixes that.

### 3. Authenticate (must be an interactive terminal — chat UI can't do this)

This step needs a real terminal window (PowerShell, Terminal.app, etc.) running
`claude` interactively — a non-interactive session (like a chat-only agent surface)
can register the server but cannot complete OAuth, since it requires an interactive
picker and a browser popup.

1. In that terminal, run `claude`, then type `/mcp` — **wait for the autocomplete
   suggestion box to appear before pressing Enter.** Typing it and hitting Enter too
   fast sends `/mcp` as a plain chat message instead of running the command (the
   agent will just reply conversationally — that's the tell something went wrong).
2. Arrow down to the server's name, Enter.
3. Select **"1. Authenticate"**, Enter. A browser window opens to the site's login
   page.
4. Sign in and authorize. The browser redirects to a `localhost` URL and may show a
   **connection error page — this is expected**, not a failure; it's the OAuth
   loopback redirect completing, and there's nothing listening on that port to serve
   a nice page. Look for "Authentication successful" on the authorize page itself
   before the redirect, or just check status in the next step.
5. Back in the terminal, confirm:

```
claude mcp list
```

Now shows `✔ Connected`.

## Common Mistakes

| Symptom | Cause | Fix |
|---|---|---|
| `/mcp` gets a conversational reply instead of a menu | Typed too fast, sent as chat message | Retype, pause until the autocomplete dropdown shows, then Enter |
| Terminal closed mid-flow | Accidental close | Reopen, run `claude`, `/mcp` again — the server registration persists, just re-select it and Authenticate again |
| Browser shows a connection error after login | Normal OAuth loopback redirect to `localhost` with nothing serving it | Ignore it, go back to the terminal and check `claude mcp list` |
| Downloaded the wrong ZIP from GitHub releases | Grabbed "Source code (zip)" instead of the packaged `emcp-tools-X.Y.Z.zip` asset | Re-download the correctly named asset — source-code zips aren't installable plugins |
| Still shows `needs authentication` after login | OAuth didn't complete, or session expired | Run `/mcp` → select server → Authenticate again |

## Notes

- This works for any MCP-exposing WordPress plugin with a Connection/Server URL
  screen, not just EMCP Tools specifically — the registration and OAuth steps are
  the same shape.
- If OAuth isn't offered and only a static token/API key is available, treat it like
  any other secret: don't paste it into chat, register it as a header/env var, and
  prefer a scoped WordPress user role over the site's main admin account.

