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 MCP Server (for Prefect Horizon)
An MCP server that lets an AI client draft, publish, update, and search posts on your self-hosted WordPress site (the kind hosted on Hostinger). It uses the built-in WordPress REST API and authenticates with an Application Password — no plugins to install on WordPress.
Built with the standalone fastmcp package so it deploys
cleanly on Prefect Horizon (fastmcp.app). Horizon serves the HTTP transport
for you; you just point it at the mcp object.
Entrypoint:
main.py:mcp
Tools
Tool | What it does |
| Create a new post saved as a draft (private, for review) |
| Create a new post and publish it immediately (live) |
| Edit an existing post by ID, or change its status (draft → publish) |
| List / search posts to find IDs, review drafts, or check content |
Related MCP server: ItchWPMCP
Step 1 — Create a WordPress Application Password
Application Passwords are built into WordPress 5.6+ and let an app authenticate without your real password.
Log in to WordPress admin (
https://yoursite.com/wp-admin).Go to Users → Profile (or Users → All Users → your user → Edit).
Scroll to Application Passwords.
Enter a name like
Horizon MCPand click Add New Application Password.Copy the generated password (e.g.
abcd EFGH ijkl MNOP qrst UVWX). You only see it once. Spaces are fine — the server strips them.
Your account needs the Editor or Administrator role to publish.
If the Application Passwords section is missing on Hostinger: it's usually
because the site isn't on HTTPS, or a security plugin (Wordfence, iThemes, etc.)
disabled the feature or the REST API. Make sure the site loads over https://
and check the plugin's REST API / Application Password settings.
Step 2 — Put this repo on GitHub
Horizon deploys from a GitHub repository.
cd wordpress-mcp
git init
git add main.py requirements.txt pyproject.toml README.md .gitignore
git commit -m "WordPress MCP server for Horizon"
# create a repo on GitHub, then:
git remote add origin https://github.com/<you>/wordpress-mcp.git
git push -u origin mainDo not commit real credentials. There are none in the repo — they're supplied as environment variables in Horizon (Step 3). The included
.gitignorekeeps.envand the local virtualenv out.
Step 3 — Deploy on Prefect Horizon
Go to https://horizon.prefect.io and sign in with GitHub.
Click to create/deploy a new server and select this repository.
Configure:
Name: e.g.
wordpress(your URL becomeshttps://wordpress.fastmcp.app/mcp)Entrypoint:
main.py:mcpAuthentication: toggle on if you want only your org's authenticated users to be able to connect (recommended).
Environment variables / secrets:
Key
Value
WORDPRESS_URLhttps://yoursite.comWORDPRESS_USERNAMEyour WordPress login name (not the email)
WORDPRESS_APP_PASSWORDthe Application Password from Step 1
Click Deploy. Horizon clones the repo, installs
requirements.txt, and brings the server up (~1 minute).Test it with Horizon's built-in Inspector (call
wordpress_list_posts) or ChatMCP before wiring up other clients.
Your MCP endpoint will be https://<name>.fastmcp.app/mcp. Add that URL as a
remote MCP server in any client that supports remote MCP (including Claude).
Run it locally (optional)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
export WORDPRESS_URL="https://yoursite.com"
export WORDPRESS_USERNAME="your_wp_login"
export WORDPRESS_APP_PASSWORD="abcd EFGH ijkl MNOP qrst UVWX"
python main.py # runs over stdio for a local clientNotes
Content accepts HTML.
<h2>…</h2><p>…</p>produces formatted posts; plain text works too.Categories and tags are numeric IDs, not names. (Adding name→ID lookup is an easy future addition.)
Publishing vs. drafting:
wordpress_create_draftstages content; flip a draft live later withwordpress_update_post(status: "publish").Security: the Application Password lives only in Horizon's env/secrets, never in the repo. Revoke it anytime under Users → Profile without affecting login.
Troubleshooting
Symptom | Likely cause / fix |
| Wrong username, or you used your login password instead of an Application Password. |
| User role too low to publish, or a security plugin blocks the REST API. |
|
|
| One of the three env vars isn't set in Horizon's server settings. |
Build fails on Horizon | Confirm the entrypoint is exactly |
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.
Related MCP Servers
- Flicense-qualityDmaintenanceAn MCP server that enables ChatGPT to manage WordPress content by creating, updating, retrieving, and deleting posts via the WordPress REST API. It uses FastAPI and Cloudflare Tunnels to provide a secure interface for natural language site administration.
- FlicenseBqualityCmaintenanceLocal MCP server for Codex/Claude to query and edit WordPress content through the WordPress REST API.26
- Alicense-qualityBmaintenanceA local server that enables Claude or other MCP tools to manage WordPress posts and media via REST API.22MIT
- Alicense-qualityDmaintenanceA lightweight MCP server that connects to WordPress via REST API, enabling content management (posts, pages, categories, etc.) and site configuration through natural language commands.Apache 2.0
Related MCP Connectors
WordPress MCP server: generate SEO posts, AI images, autoblog & WooCommerce on your self-hosted site
WordPress MCP server: publish posts, AI images, SEO and full site management, self-hosted
FastMCP server for posting formatted content to X (Twitter) — Tollbooth-monetized, DPYC-native
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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