WordPress Self-Hosted MCP Server
Provides tools to manage WordPress posts, media, categories, and tags via the WordPress REST API, enabling draft creation, publishing, updates, media uploads, and more.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WordPress Self-Hosted MCP ServerCreate a draft post with title 'My New Post'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Verify credentials; returns the authed WP user. Call this first. |
| Create a post as |
| Update any field of a post by ID (e.g. flip a draft to |
| Fetch a post's key fields by ID. |
| List posts, filter by status/search. |
| Trash or permanently delete a post. |
| Upload an image from a URL to the media library; returns the media ID for |
| Resolve names to IDs. |
| Create a category. |
Related MCP server: ItchWPMCP
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
Authorizationheader or block the REST API — allow Basic Auth / Application Passwords ifwhoamireturns 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 xxxx4. 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-mcpThe MCP endpoint is served at: http://<host>:8000/mcp/
Quick health check (container logs should show "Uvicorn running"):
docker logs wp-mcp5. 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.py6. Deploy on a FastMCP host (e.g. Horizon)
This is a standard FastMCP app exposing mcp in server.py.
Entrypoint / start command:
python server.pyThe app listens on
$PORT(defaults to 8000) and$HOST0.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.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mdsakib-dr/wordpress-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server