Skip to main content
Glama

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/

Related MCP server: AgentLinkWP

Requirements

  • Node.js 18+

  • WordPress sites with MCP Expose Abilities plugin installed

  • Application passwords for authentication

Setup

  1. Clone the repository

  2. Copy sites.example.json to sites.json

  3. Configure your sites with their MCP endpoints and Basic auth credentials

  4. Install dependencies: npm install

  5. Run: 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" | base64

Transports

The proxy supports two transports:

  • stdio (default): local process or SSH-based connection

  • http: 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.js

Optional environment variables:

  • MCP_PROXY_ALLOWED_HOSTS (comma-separated list of allowed hostnames)

  • MCP_PROXY_JSON_LIMIT to raise or lower the accepted JSON request size in HTTP mode (default: 96mb)

  • MCP_PROXY_LOG=1 to emit startup logs

Notes:

  • HTTP mode must accept large JSON bodies if you use execute_ability with plugins/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 96mb so plugin uploads are not truncated or rejected by the proxy's HTTP layer.

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.js

Or 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 sites

  • discover_abilities - Discover available abilities on a site

  • get_ability_info - Get details about a specific ability

  • execute_ability - Execute an ability with parameters

License

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with WordPress sites through the WordPress REST API, dynamically exposing all routes as MCP tools for content management and site configuration.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP-compatible AI agents to securely manage multiple self-hosted WordPress sites, including content editing, theme management, and maintenance operations with fine-grained permission controls.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Manages WordPress sites over the REST API, enabling users, posts/pages, media, ACF fields, and Elementor page operations through MCP-compatible clients.
    MIT