WordPress MCP Server
Enables AI assistants to interact with a WordPress site, allowing content and taxonomy management (list, create, update, delete) through 17 MCP tools.
README
WordPress MCP Server (using PHP SDK)
A professional WordPress MCP (Model Context Protocol) server that enables AI assistants like Claude to interact with your WordPress site through a standardized protocol.
What is this?
This server exposes your WordPress content, taxonomies, and site information through MCP tools, allowing AI assistants to:
- List, read, create, update, and delete WordPress content (posts, pages, custom post types)
- Manage taxonomies (categories, tags, custom taxonomies) and terms
- Discover content types and taxonomies
- Search content by URL or slug
Features
⨠17 WordPress Tools
- Content Management:
list_content,get_content,create_content,update_content,delete_content - Content Discovery:
discover_content_types,get_content_by_slug,find_content_by_url - Taxonomy Management:
list_terms,get_term,create_term,update_term,delete_term - Taxonomy Discovery:
discover_taxonomies,get_taxonomy - Term Assignment:
assign_terms_to_content,get_content_terms
š Secure & Production Ready
- Built with official PHP MCP SDK
- Comprehensive validation using Respect/Validation
- Proper error handling and logging
- 110+ passing unit tests
š Easy Integration
- HTTP transport via StreamableHTTP (no complicated setup)
- Works with Claude Desktop via mcp-remote
- Simple installation in WordPress root
Installation
Step 1: Install in WordPress
- Download this repository
- Place the entire directory in your WordPress root folder (where
wp-config.phpis located) - Rename the directory to something simple like
mcp-server
Your directory structure should look like:
/your-wordpress-site/
āāā wp-admin/
āāā wp-content/
āāā wp-includes/
āāā wp-config.php
āāā mcp-server/ ā This directory
ā āāā index.php
ā āāā vendor/
ā āāā ...
Step 2: Install Dependencies
Open terminal in the mcp-server directory and run:
composer install --no-dev
Step 3: Configure WordPress Path
The MCP server needs to know where your WordPress installation is located.
-
Copy the configuration template:
cp config.example.php config.php -
Edit
config.phpand set thewordpress_pathto your WordPress installation:If MCP server is in WordPress root subdirectory (recommended):
'wordpress_path' => '../wp-load.php',If WordPress is in a subdirectory (development):
'wordpress_path' => 'wp/wp-load.php',Using absolute path:
// Linux/macOS 'wordpress_path' => '/var/www/html/wp-load.php', // Windows (use forward slashes) 'wordpress_path' => 'C:/xampp/htdocs/mysite/wp-load.php',
Important: The config.php file is git-ignored and specific to your installation. Never commit it to version control.
Step 3.5: (Optional) Enable Safe Mode
Safe mode prevents destructive delete operations, providing an extra layer of protection for your WordPress content.
What Safe Mode Does:
- Blocks:
delete_contentanddelete_termoperations - Allows: All read operations and write operations (create, update)
When to Enable Safe Mode:
- Production environments where accidental deletions must be prevented
- Shared environments with multiple users
- Read-mostly or limited-write access scenarios
- Testing and development where data preservation is important
To Enable Safe Mode:
Edit config.php and set:
'safe_mode' => true,
When a delete operation is attempted with safe mode enabled, the tool will return an error message:
Operation blocked: Safe mode is enabled. Deleting content is not allowed.
Default: Safe mode is OFF (false), allowing all operations including deletions.
Step 4: Verify Access
Make sure your web server (Apache/Nginx) can access the mcp-server directory.
Access URL:
The server will be accessible at: https://your-site.com/mcp-server/index.php
Step 5: Test the Server
Visit https://your-site.com/mcp-server/index.php in your browser. You should see a JSON response indicating the MCP server is running.
Claude Desktop Integration
This server supports two connection methods:
Option 1: HTTP Transport (Recommended for Remote Sites)
Use this method when connecting to a remote WordPress site via HTTP/HTTPS.
Install mcp-remote (optional, Claude Desktop can do this itself):
npm install -g mcp-remote
Configure Claude Desktop:
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"wordpress": {
"command": "npx",
"args": [
"mcp-remote",
"https://your-site.com/mcp-server/index.php"
]
}
}
}
Note: Replace https://your-site.com/mcp-server/index.php with your actual URL.
For local development (HTTP without SSL):
{
"mcpServers": {
"wordpress": {
"command": "npx",
"args": [
"mcp-remote",
"http://your-local-site.test/mcp-server/index.php",
"--allow-http"
]
}
}
}
Option 2: Stdio Transport (Recommended for Local Sites)
Use this method when running WordPress locally on the same machine as Claude Desktop. This is faster and doesn't require HTTP.
Configure Claude Desktop:
{
"mcpServers": {
"wordpress": {
"command": "php",
"args": [
"/absolute/path/to/your-wordpress-site/mcp-server/server.php"
]
}
}
}
Example for macOS/Linux:
{
"mcpServers": {
"wordpress": {
"command": "php",
"args": [
"/Users/yourname/Sites/mywordpress/mcp-server/server.php"
]
}
}
}
Example for Windows:
{
"mcpServers": {
"wordpress": {
"command": "php",
"args": [
"C:\\xampp\\htdocs\\mywordpress\\mcp-server\\server.php"
]
}
}
}
Note:
- Make sure
phpis in your system PATH - Use the absolute path to
server.php - Stdio transport doesn't require a web server to be running
Restart Claude Desktop
After adding the configuration, restart Claude Desktop completely (quit and reopen).
Using with Claude
Once configured, you can ask Claude things like:
- "List all my blog posts"
- "Create a new draft post titled 'Hello World'"
- "What categories do I have?"
- "Update post ID 5 to published status"
- "Find the post with URL https://mysite.com/my-post"
- "Show me all pages on my site"
Claude will use the MCP tools to interact with your WordPress site automatically!
Example Prompts
Content Management:
- "List my latest 5 published posts"
- "Create a new post titled 'My New Article' with some sample content"
- "Update the post titled 'About Us' to change its status to draft"
- "Show me all draft posts"
Taxonomy Management:
- "List all categories"
- "Create a new category called 'Technology'"
- "What tags exist on my site?"
- "Assign the 'Technology' category to post ID 10"
Discovery:
- "What content types does my WordPress site have?"
- "What taxonomies are registered?"
- "Find the post at URL https://mysite.com/2024/hello-world"
Troubleshooting
Server not responding
- Check URL: Make sure the URL in your Claude config is correct and accessible
- Clear sessions: Delete the
sessions/directory contents:rm -rf mcp-server/sessions/* - Check permissions: Ensure the web server can read/write to the
sessions/directory
chmod -R 755 mcp-server/
chmod -R 777 mcp-server/sessions/
"Connection refused" or "Cannot connect"
- Verify the server is running: Visit the URL in your browser
- Check firewall: Ensure your firewall allows access to the web server
- Check SSL: For HTTPS sites, ensure your SSL certificate is valid
Tools not working
-
Check WordPress path: Verify that
config.phphas the correct path to your WordPress installation:'wordpress_path' => '../wp-load.php', // Update this path -
Clear sessions:
rm -rf sessions/* -
Check error logs: Look at
php-errors.login the mcp-server directory
Claude can't see the tools
- Restart Claude Desktop completely (quit and reopen, don't just close the window)
- Check config syntax: Ensure your
claude_desktop_config.jsonis valid JSON - Check logs: Claude Desktop logs are at:
- macOS:
~/Library/Logs/Claude/ - Windows:
%APPDATA%\Claude\logs\
- macOS:
Testing the Server
You can test the MCP server directly using the MCP inspector:
# Install inspector
npm install -g @modelcontextprotocol/inspector
# List all tools
npx @modelcontextprotocol/inspector --cli https://your-site.com/mcp-server/index.php --transport http --method tools/list
# Test a tool
npx @modelcontextprotocol/inspector --cli https://your-site.com/mcp-server/index.php --transport http --method tools/call --tool-name discover_content_types
Security Considerations
ā ļø Important Security Notes:
-
Authentication: This server does NOT include authentication. Make sure to:
- Use HTTPS (SSL/TLS) for all connections
- Restrict access using web server configuration (IP whitelist, Basic Auth, etc.)
- Consider implementing WordPress authentication in production
-
Access Control: The server has full access to your WordPress database through WordPress functions. Only expose it to trusted clients.
-
Firewall: Consider using a firewall or VPN to restrict access to trusted IPs only. You can configure IP restrictions in your web server configuration (Apache VirtualHost or Nginx server block).
Development
For developers who want to extend this server:
- See
CLAUDE.mdfor development documentation - Run tests:
composer test - Run static analysis:
composer analyse - Inspector tests:
./tests/inspector-tests.sh
Requirements
- PHP 8.2 or higher
- WordPress 5.0 or higher
- Composer
- Node.js and npm (for mcp-remote)
Support
For issues, questions, or contributions, please visit the project repository.
License
This project is licensed under the MIT License.
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.