WordPress Self-Hosted MCP Server

WordPress Self-Hosted MCP Server

A small FastMCP server that lets an AI client create drafts, publish/update posts, upload media, set featured images, and manage categories/tags on a self-hosted WordPress.org site via the REST API + Application Passwords.

Category
Visit Server

README

WordPress Self-Hosted MCP Server

A small FastMCP server that lets an AI client create drafts, publish/update posts, upload media, set featured images, and manage categories/tags on a self-hosted WordPress.org site via the REST API + Application Passwords.

Runs over streamable-HTTP (for Docker / Horizon / remote hosting) or stdio.

Tools

Tool What it does
whoami Verify credentials; returns the authed WP user. Call this first.
create_post Create a post as draft or publish (title, HTML content, slug, excerpt, categories, tags, featured image).
update_post Update any field of a post by ID (e.g. flip a draft to publish).
get_post Fetch a post's key fields by ID.
list_posts List posts, filter by status/search.
delete_post Trash or permanently delete a post.
upload_media_from_url Upload an image from a URL to the media library; returns the media ID for featured_media.
list_categories / list_tags Resolve names to IDs.
create_category Create a category.

1. Prerequisites

  • WordPress 5.6+ on HTTPS, REST API enabled (visit https://your-site.com/wp-json/ — you should see JSON).
  • An admin/editor/author user.
  • Some security plugins/hosts strip the HTTP Authorization header or block the REST API — allow Basic Auth / Application Passwords if whoami returns 401/403.

2. Create an Application Password

In wp-admin: Users → Profile → Application Passwords → enter a name (e.g. mcp) → Add New. Copy the generated password (looks like xxxx xxxx xxxx xxxx xxxx xxxx). This is NOT your login password.

3. Configure

Copy .env.example to .env and fill in:

WP_BASE_URL=https://your-site.com     # no trailing slash
WP_USERNAME=your_wp_username          # login name, not email
WP_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx

4. Run with Docker

# build + run via compose (reads .env)
docker compose up -d --build

# OR plain docker
docker build -t wp-selfhosted-mcp .
docker run -d --name wp-mcp -p 8000:8000 --env-file .env wp-selfhosted-mcp

The MCP endpoint is served at: http://<host>:8000/mcp/

Quick health check (container logs should show "Uvicorn running"):

docker logs wp-mcp

5. Run locally without Docker

pip install -r requirements.txt
# HTTP (default):
python server.py
# or stdio (for a desktop client that launches the process):
MCP_TRANSPORT=stdio python server.py

6. Deploy on a FastMCP host (e.g. Horizon)

This is a standard FastMCP app exposing mcp in server.py.

  • Entrypoint / start command: python server.py
  • The app listens on $PORT (defaults to 8000) and $HOST 0.0.0.0.
  • Required env vars: WP_BASE_URL, WP_USERNAME, WP_APP_PASSWORD.
  • Keep MCP_TRANSPORT=http.
  • Public MCP URL will be https://<your-deployment-domain>/mcp/.

FASTMCP_CHECK_FOR_UPDATES=off is set in code so startup never blocks on an outbound PyPI call in locked-down networks.

7. Connect it to Claude

Add it as a custom/remote MCP connector pointing at your deployed URL:

https://<your-deployment-domain>/mcp/

In the Claude desktop/Cowork connector settings, add a custom MCP server with that URL. Once connected, tools like create_post become available and you can say "publish the WooCommerce post as a draft" and it will run create_post with status="draft".

Security notes

  • Never commit .env; it's gitignored/dockerignored.
  • The Application Password can be revoked anytime from the same wp-admin screen.
  • Prefer an Editor/Author account over a full Admin if you only need publishing.
  • Always serve WordPress over HTTPS so the Basic Auth header isn't sent in clear text.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured