easyMCP
Exposes a Model Context Protocol (MCP) server endpoint for WordPress.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/mem212/easymcp/archive/refs/heads/main.zipReadme
easyMCP
Connect any AI assistant to your WordPress site via the Model Context Protocol (MCP).
easyMCP turns your WordPress site into a fully-featured MCP server. Any MCP-compatible AI client — Claude Code, Claude Desktop, Cursor, Windsurf, Cline, and others — can connect to it and manage your site through natural language.
Features
- MCP server over HTTP (Streamable HTTP transport, MCP spec 2025-06-18)
- OAuth 2.1 with PKCE — one-click browser-based login for any MCP client
- Static API keys — paste a Bearer token for scripts, CLI tools, and manual configs
- Per-credential permission control — 22 granular checkboxes per key or OAuth client
- Full site management — posts, pages, media, users, categories, tags, comments, plugins, themes, and settings
- Activity log — every tool call is logged with credential name, status, and timestamp
- Auto-registration — AI clients that generate their own client ID connect without pre-setup
Requirements
- WordPress 6.0 or higher
- PHP 7.4 or higher
- Pretty permalinks enabled (Settings → Permalinks → any option except Plain)
Installation
- Download
easymcp.zip - In your WordPress admin, go to Plugins → Add New → Upload Plugin
- Upload the zip and click Install Now
- Click Activate Plugin
A new easyMCP menu item appears in your WordPress admin sidebar.
Quick Start
Connect an AI client (OAuth — recommended)
- Go to easyMCP → Connect in your WordPress admin
- Copy your MCP Server URL — it looks like:
https://yoursite.com/wp-json/easymcp/v1/mcp - In your AI client, add a new MCP server and paste that URL
- Your browser opens your WordPress site — log in if needed
- Check the permissions you want to grant, click Allow Access
- Done — the AI client is connected
Connect via API Key (manual)
- Go to easyMCP → API Keys → create a new key
- Choose permissions with the checkboxes
- Copy the token (shown once only)
- Add to your client config:
{
"mcpServers": {
"my-wordpress": {
"type": "http",
"url": "https://yoursite.com/wp-json/easymcp/v1/mcp",
"headers": {
"Authorization": "Bearer emcp_your_token_here"
}
}
}
}
Permissions
Each API key or OAuth connection has its own set of permissions. Grant only what each client needs.
| Permission | What it allows |
|---|---|
posts_read |
View posts |
posts_write |
Create and edit posts |
posts_delete |
Delete or trash posts |
pages_read |
View pages |
pages_write |
Create and edit pages |
pages_delete |
Delete or trash pages |
media_read |
View media library |
media_write |
Upload media |
media_delete |
Delete media |
users_read |
View users |
users_write |
Create and edit users |
users_delete |
Delete users |
taxonomy_read |
View categories and tags |
taxonomy_write |
Create and edit categories and tags |
comments_read |
View comments |
comments_write |
Moderate and delete comments |
plugins_read |
View installed plugins |
plugins_manage |
Activate, deactivate, install, and delete plugins |
themes_read |
View installed themes |
themes_manage |
Switch and install themes |
settings_read |
Read general site settings |
settings_write |
Update general site settings |
Tip:
plugins_manageandthemes_manageare powerful — only grant them to clients you fully trust.
Available Tools
Once connected, the AI client has access to these tools:
| Tool | Description |
|---|---|
posts_list |
List posts |
posts_get |
Get a single post |
posts_create |
Create a post |
posts_update |
Update a post |
posts_delete |
Delete or trash a post |
pages_list |
List pages |
pages_get |
Get a single page |
pages_create |
Create a page |
pages_update |
Update a page |
pages_delete |
Delete or trash a page |
media_list |
List media library items |
media_upload |
Upload a file (base64) |
media_delete |
Delete a media item |
users_list |
List users |
users_get |
Get a single user |
users_create |
Create a user |
users_update |
Update a user |
users_delete |
Delete a user |
taxonomy_list_terms |
List categories or tags |
taxonomy_create_term |
Create a category or tag |
taxonomy_delete_term |
Delete a category or tag |
comments_list |
List comments |
comments_moderate |
Approve, hold, spam, or trash a comment |
comments_delete |
Permanently delete a comment |
plugins_list |
List installed plugins |
plugins_activate |
Activate a plugin |
plugins_deactivate |
Deactivate a plugin |
plugins_install |
Install a plugin from WordPress.org |
plugins_delete |
Delete a plugin |
themes_list |
List installed themes |
themes_activate |
Switch the active theme |
settings_get |
Read site settings |
settings_update |
Update site settings |
Security
- API key tokens are stored as SHA-256 hashes — the raw token cannot be recovered
- Every tool call is logged in easyMCP → Activity Log with credential, tool, status, and timestamp
- Logs are automatically pruned after 90 days
- Revoked keys stop working immediately
- OAuth access tokens expire after 1 hour; refresh tokens rotate every use and expire after 30 days
- Any localhost redirect URI is accepted for OAuth (supports Claude Code's random-port callback)
- Non-localhost redirect URIs must be pre-registered
OAuth Technical Details
- Protocol: OAuth 2.1 with PKCE (S256)
- Discovery:
https://yoursite.com/.well-known/oauth-authorization-server - Authorization endpoint:
https://yoursite.com/wp-json/easymcp/v1/oauth/authorize - Token endpoint:
https://yoursite.com/wp-json/easymcp/v1/oauth/token - Registration endpoint:
https://yoursite.com/wp-json/easymcp/v1/oauth/register - Supported grant types:
authorization_code,refresh_token - Access token lifetime: 1 hour
- Refresh token lifetime: 30 days (rotated on each use)
Uninstalling
Go to Plugins → easyMCP → Delete. The uninstall script removes all database tables and options cleanly.
Changelog
1.0.0
- OAuth 2.1 with PKCE authorization server
- Auto-registration for clients that generate their own client ID
- Permissive localhost redirect URI handling for random-port clients (Claude Code)
- Step-based connect page with copy buttons
- Tool name validation enforced at registration time (MCP spec compliance)
- Added OAuth 2.1 support alongside static API keys
- Admin consent screen with permission checkboxes
- OAuth Apps management page
- Activity log
- Initial release
- MCP server over HTTP (Streamable HTTP transport)
- Static API keys with per-key permission matrix
- Full site management: posts, pages, media, users, taxonomies, comments, plugins, themes, settings
License
GPL-2.0-or-later — https://www.gnu.org/licenses/gpl-2.0.html
Author
Mahdi El Masaoudi — elmasaoudimahdi@gmail.com
https://github.com/mem212/easymcp
Read the full README on GitHub →
Releases
| Tag | Published |
|---|---|
| v1.0.0 | Jul 18, 2026 |
These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.