Proxies requests to multiple WordPress sites running the MCP Expose Abilities plugin, enabling discovery and execution of custom abilities/capabilities exposed by WordPress sites through their MCP endpoints.
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 MCP Proxylist all posts on my-site from last week"
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 Proxy
MCP server that proxies requests to multiple WordPress sites running the MCP Expose Abilities plugin.
About
Learn more about MCP Expose Abilities: https://devenia.com/plugins/mcp-expose-abilities/
Requirements
Node.js 18+
WordPress sites with MCP Expose Abilities plugin installed
Application passwords for authentication
Setup
Clone the repository
Copy
sites.example.jsontosites.jsonConfigure your sites with their MCP endpoints and Basic auth credentials
Install dependencies:
npm installRun:
node index.js(stdio default) or enable HTTP mode (see below)
Configuration
Edit sites.json to add your WordPress sites:
{
"my-site": {
"url": "https://example.com/wp-json/mcp/mcp-adapter-default-server",
"auth": "Basic <base64_encoded_username:app_password>"
}
}To generate the auth value:
echo -n "username:application_password" | base64Transports
The proxy supports two transports:
stdio(default): local process or SSH-based connectionhttp: streamable HTTP server for remote clients
HTTP Mode
Run the proxy as an HTTP server:
MCP_PROXY_TRANSPORT=http \
MCP_PROXY_HOST=0.0.0.0 \
MCP_PROXY_PORT=8787 \
MCP_PROXY_TOKEN="replace-with-strong-token" \
node index.jsOptional environment variables:
MCP_PROXY_ALLOWED_HOSTS(comma-separated list of allowed hostnames)MCP_PROXY_JSON_LIMITto raise or lower the accepted JSON request size in HTTP mode (default:96mb)MCP_PROXY_LOG=1to emit startup logs
Notes:
HTTP mode must accept large JSON bodies if you use
execute_abilitywithplugins/upload-base64.The SDK
createMcpExpressApp()helper uses Express' default JSON parser limit (100kb), which is too small for many plugin ZIPs once base64-encoded.This proxy now owns the JSON parser and defaults to
96mbso plugin uploads are not truncated or rejected by the proxy's HTTP layer.
Client Configuration (HTTP recommended)
Claude Code
~/.config/claude-code/mcp_settings.json:
{
"mcpServers": {
"wordpress-proxy": {
"type": "http",
"url": "http://YOUR_HOST:8787/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}Codex
~/.codex/config.toml:
[mcp_servers.wordpress-proxy]
type = "http"
url = "http://YOUR_HOST:8787/mcp"
headers = { Authorization = "Bearer YOUR_TOKEN" }cc-switch (single source of truth)
Add wordpress-proxy as an HTTP MCP server in cc-switch and enable it for both
Claude and Codex. Then remove per-app overrides so cc-switch remains the source
of truth.
Stdio Integration (optional)
Add to your global MCP config:
claude mcp add wordpress-proxy -s user -- node /path/to/index.jsOr via SSH to a remote server:
claude mcp add wordpress-proxy -s user -- ssh myserver "node /opt/wordpress-mcp-proxy/index.js"Available Tools
list_sites- List all configured WordPress sitesdiscover_abilities- Discover available abilities on a siteget_ability_info- Get details about a specific abilityexecute_ability- Execute an ability with parameters
License
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.