simpli-wordpress-mcp
A remote MCP gateway that securely exposes WordPress site abilities through the Abilities API, enabling natural-language control of posts, WooCommerce, Elementor, ACF, Rank Math, and more.
README
Simpli WordPress MCP
A Railway-hosted, OAuth-protected remote MCP gateway for the WordPress Abilities API. It dynamically mirrors the existing Novamira and Novamira Pro abilities on one configured WordPress site instead of duplicating privileged WordPress code.
Verified scope
The Simpli Cosmetics production site was inspected on 12 August 2026. It currently exposes 187 REST abilities:
| Namespace | Live abilities |
|---|---|
novamira/* |
157 |
rank-math/* |
13 |
wpforms/* |
8 |
woocommerce/* |
7 |
core/* |
2 |
| Total | 187 |
The mirrored surface includes:
- PHP execution in the loaded WordPress runtime;
- file read, write, edit, delete, enable/disable, and directory traversal;
- temporary upload links and one-time administrator access links;
- synchronous and background WP-CLI jobs;
- Gutenberg read/write and pending-change batches;
- WordPress posts, memory, and Markdown skills;
- WooCommerce products, variations, orders, categories, tags, attributes, stock, and store settings;
- Elementor documents, elements, styles, variables, classes, dynamic tags, and interactions;
- ACF field groups, values, post types, taxonomies, and options pages;
- Rank Math metadata, schema, audits, scores, links, keywords, and AI visibility;
- WPForms forms, fields, notifications, confirmations, settings, duplication, and statistics.
The gateway refreshes the catalog from WordPress every five minutes by default. New REST-exposed abilities installed later are automatically added to MCP with their original JSON input schema and safety annotations.
Architecture
flowchart LR
C["ChatGPT / Codex"] -->|"OAuth 2.1 + MCP"| R["Railway gateway"]
R -->|"Dedicated Application Password"| W["WordPress Abilities API"]
W --> N["Novamira + Pro"]
Only the gateway is deployed to Railway. WordPress already contains Novamira, Novamira Pro, the MCP Adapter, and WP-CLI; no second control plugin is required.
Security model
- OAuth 2.1 Authorization Code flow with PKCE, dynamic client registration, protected-resource discovery, short-lived access tokens, and refresh tokens.
- A separate owner authorization password protects OAuth consent.
- A dedicated, revocable WordPress Application Password is stored only as a Railway secret.
- The target WordPress origin is fixed in server configuration; tools cannot redirect the gateway to an arbitrary host.
- WordPress remains the authority for each ability's permission callback and schema validation.
- Read, write, and dangerous scopes are enforced server-side.
- Novamira's PHP, WP-CLI, admin-link, and destructive abilities always require
wordpress:dangerousand an exact_confirmvalue. - MCP safety annotations are generated from the live WordPress annotations so clients can apply approval controls.
- Tool output is capped, request timeouts are enforced, redirects are rejected, credentials are never logged, and OAuth/MCP endpoints are rate-limited.
- Railway's
/healthendpoint is liveness only./readyverifies that the WordPress ability catalog is available.
Local verification
Requirements: Node.js 22 or later.
npm ci
npm run check
npm test
npm run build
Copy .env.example to .env, fill the required values, then run:
npm run dev
Inspect http://localhost:3000/mcp with MCP Inspector using the optional MCP_STATIC_TOKEN as a Bearer token. Leave MCP_STATIC_TOKEN unset in the public production deployment unless a separate API integration specifically needs it.
Railway deployment
-
Create a dedicated WordPress administrator account for the gateway. Generate one Application Password named
Railway Simpli MCP. Do not reuse a human password. -
Create a Railway service from this repository or run
railway upfrom this directory. -
Add the variables shown in
.env.example. Generate secrets locally:openssl rand -base64 48 openssl rand -base64 48 -
Set
PUBLIC_BASE_URLto the final HTTPS origin. If using a Railway-generated domain first, use that origin. If usingmcp.simplicosmetics.co.ke, add it as a Railway custom domain and point the Cloudflare DNS record to the Railway target before changing this variable. -
Confirm Railway reports
/healthas HTTP 200. -
Open
/ready; it must reportready: trueand the expected ability count. -
Add the complete
/mcpURL as a remote MCP connection. The client will discover OAuth, dynamically register, and open the owner authorization page. -
Run the acceptance checks in docs/ACCEPTANCE.md before enabling live write tools.
Railway injects PORT; the service listens on it automatically. The included railway.json configures Docker builds, /health, and restart-on-failure.
Operational rollback
Rollback is immediate and does not change WordPress code:
- revoke the
Railway Simpli MCPApplication Password in WordPress; - pause or remove the Railway service;
- remove its custom DNS record if one was created.
Existing Novamira functionality inside WordPress remains untouched.
Primary technical references
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.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
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.