WordPress MCP Server
# WordPress MCP Server
> Manage your WordPress site with AI. Create posts, update content, and query your site—all through natural conversation.
[](https://www.python.org/downloads/)
[](https://modelcontextprotocol.io/)
[](https://opensource.org/licenses/MIT)
## What is this?
WordPress MCP is a [Model Context Protocol](https://modelcontextprotocol.io/) server that connects AI assistants like **Claude Code** and **Cursor** to your WordPress site via the REST API.
Instead of switching between your terminal and WordPress admin, just ask:
```
You: "Create a draft post about our new product launch"
You: "Show me all posts from last week"
You: "Update post 42 to published status"
You: "What plugins are installed on my site?"
```
## Demo
Here's a real conversation showing the draft-to-publish workflow:
```
You: Create a draft post titled "Why AI Tools Matter for Content Creators"
Claude: I'll create that draft post for you.
✓ Created draft post:
ID: 142
Title: Why AI Tools Matter for Content Creators
Status: draft
Link: https://your-site.com/?p=142
You: Add some content about productivity and automation
Claude: I'll update the post with content about productivity and automation.
✓ Updated post 142 with new content.
You: Show me my draft posts
Claude: Here are your draft posts:
| ID | Title | Date |
|-----|-------------------------------------------|------------|
| 142 | Why AI Tools Matter for Content Creators | 2026-01-03 |
| 138 | Upcoming Features Preview | 2026-01-02 |
| 135 | Team Update Q1 | 2025-12-28 |
You: Publish post 142
Claude: ✓ Published! Your post is now live at:
https://your-site.com/2026/01/03/why-ai-tools-matter-for-content-creators/
```
## Features
- **Full CRUD for Posts** - Create, read, update, and delete posts
- **Content Management** - List pages, media, and plugins
- **Search & Filter** - Find posts by status, keyword, or date
- **Draft Workflow** - Create drafts, review, then publish
- **Secure Auth** - Uses WordPress Application Passwords
## Quick Start
### 1. Install
```bash
git clone https://github.com/gaupoit/wordpress-mcp.git
cd wordpress-mcp
uv sync
```
### 2. Create a WordPress Application Password
1. Go to **WordPress Admin → Users → Profile**
2. Scroll to **Application Passwords**
3. Enter a name (e.g., "Claude Code") and click **Add New**
4. Copy the generated password (you won't see it again!)
### 3. Configure Claude Code
Add to your Claude Code MCP config (`~/.claude.json`):
```json
{
"mcpServers": {
"wordpress": {
"command": "uv",
"args": ["run", "--directory", "/path/to/wordpress-mcp", "wordpress-mcp"],
"env": {
"WORDPRESS_URL": "https://your-site.com",
"WORDPRESS_USER": "your-username",
"WORDPRESS_APP_PASSWORD": "xxxx-xxxx-xxxx-xxxx"
}
}
}
}
```
### 4. Restart Claude Code
```bash
# Quit and restart
claude
```
Verify with `/mcp` - you should see "wordpress" listed.
## Available Tools
### Reading Content
| Tool | Description |
|------|-------------|
| `wp_site_info` | Get site name, URL, timezone |
| `wp_get_posts` | List posts (filter by status, search) |
| `wp_get_post` | Get single post with full content |
| `wp_get_pages` | List all pages |
| `wp_get_media` | List media library items |
| `wp_get_plugins` | List installed plugins |
### Writing Content
| Tool | Description |
|------|-------------|
| `wp_create_post` | Create a new post (draft or published) |
| `wp_update_post` | Update title, content, status, or excerpt |
| `wp_delete_post` | Move to trash or permanently delete |
## Example Workflows
### Blog Publishing
```
You: "Create a draft post titled 'Getting Started with AI' with an intro paragraph"
You: "Show me my draft posts"
You: "Update post 123 - add a conclusion section"
You: "Publish post 123"
```
### Content Audit
```
You: "List all draft posts"
You: "Search posts for 'outdated'"
You: "What plugins are currently active?"
```
### Bulk Operations
```
You: "Show me all posts with 'beta' in the title"
You: "Get the full content of post 45, 46, and 47"
You: "Move posts 45 and 46 to trash"
```
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `WORDPRESS_URL` | Yes | Your WordPress site URL (e.g., `https://example.com`) |
| `WORDPRESS_USER` | Yes | WordPress username |
| `WORDPRESS_APP_PASSWORD` | Yes | Application password (not your login password!) |
## Requirements
- Python 3.10+
- WordPress 5.6+ (for Application Passwords)
- WordPress REST API enabled (default on most sites)
## Troubleshooting
### "Authentication failed"
- Verify your Application Password is correct (no spaces)
- Ensure the user has permission to access REST API
- Check if a security plugin is blocking REST API
### "Connection refused"
- Verify `WORDPRESS_URL` includes `https://`
- Check if your site is behind a firewall/VPN
### Server not appearing in Claude Code
- Run `/mcp` to see error messages
- Test manually: `cd wordpress-mcp && uv run wordpress-mcp`
- Restart Claude Code completely (`/quit` then `claude`)
## Roadmap
- [ ] Categories and tags management
- [ ] User management
- [ ] Custom post types support
- [ ] Media upload
- [ ] Comments management
- [ ] WooCommerce integration
## Contributing
Contributions welcome! Please open an issue first to discuss what you'd like to change.
## License
MIT
---
Built with [FastMCP](https://github.com/jlowin/fastmcp) and the [WordPress REST API](https://developer.wordpress.org/rest-api/).
TDQS
Scored across 9 tools
Every tool has a clearly distinct purpose targeting specific WordPress resources and actions. There is no ambiguity between tools like wp_get_post (single post retrieval), wp_get_posts (multiple posts listing), wp_get_pages (pages listing), and wp_get_media (media library access). Each tool's name and description make its unique function immediately apparent.
All tools follow a perfect wp_verb_noun naming pattern throughout the entire set. The structure is consistently snake_case with clear action verbs (create, delete, get, update) followed by specific nouns (post, media, pages, plugins, site_info). This predictable naming convention makes the tool set highly readable and discoverable.
With 9 tools, this server is well-scoped for WordPress content management. Each tool earns its place by covering essential WordPress operations: post CRUD (create, get, update, delete), content listing (posts, pages, media), plugin management, and site information. The count is neither too sparse nor bloated, providing comprehensive coverage without overwhelming complexity.
The tool set provides excellent coverage for WordPress content management with complete post lifecycle operations and key content retrieval functions. Minor gaps exist: there's no media upload/creation tool, no page creation/update/delete operations, and no user management tools. However, the core post workflow is fully covered, and agents can work effectively with the provided surface.