wp-ssh MCP server
Commit Oct 27, 2026Enables AI agents to manage self-hosted WordPress sites including posts, WooCommerce, and Elementor without requiring SSH access.
Also known as MSSOFTPC/wp-ssh-mcp
- Stars
- 0
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- —
- Last commit
- Oct 27, 2026
- License
- GPL-2.0
What is wp-ssh MCP?
wp-ssh enables AI agents to manage self-hosted WordPress sites including posts, WooCommerce, and Elementor without requiring SSH access.
Summary generated from the project's README
About wp-ssh MCP server
Managing self-hosted WordPress sites through AI clients like Claude Desktop, Cursor, or Claude Code is possible without using SSH access. This local MCP server acts as a bridge between your AI agent and the WP SSH plugin installed on your WordPress site. By running on your own computer, it ensures your secret keys remain on your machine rather than being sent to a hosted relay.
Users can control the level of access by setting the mode to read, write, or full. In the default read mode, the AI can perform tasks like listing posts, checking WooCommerce orders, or running site diagnostics. Switching to write or full modes enables content creation, media uploads, and more advanced operations like plugin management or file writes. The server uses HTTPS and a secret key for secure communication with your site's endpoint.
What you can do with it
- 1Perform site health checksAsk your AI agent to run diagnostics to identify what might be slowing down your WordPress website.
- 2Manage WooCommerce sales dataRequest a summary of your recent customer orders categorized by their current status.
- 3Transfer Elementor designs between sitesInstruct the AI to export a specific Elementor page design from one site and import it as a draft on another.
- 4Preview database search and replaceUse the AI to check how a URL replacement would look before actually applying any changes to the database.
Written from the project's README. Every use case is checked against a quote from it.
How to install wp-ssh MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall wp-ssh MCP in Claude Code
$ claude mcp add wp-ssh-mcp -- npx -y wp-ssh-mcpInstall wp-ssh MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"wp-ssh-mcp": {
"command": "npx",
"args": [
"-y",
"wp-ssh-mcp"
]
}
}
}Install wp-ssh MCP in VS Code
.vscode/mcp.json
{
"servers": {
"wp-ssh-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"wp-ssh-mcp"
]
}
}
}Install wp-ssh MCP in VS Code CLI
$ code --add-mcp '{"name":"wp-ssh-mcp","type":"stdio","command":"npx","args":["-y","wp-ssh-mcp"]}'Install wp-ssh MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"wp-ssh-mcp": {
"command": "npx",
"args": [
"-y",
"wp-ssh-mcp"
]
}
}
}Install wp-ssh MCP in Codex
$ codex mcp add wp-ssh-mcp -- npx -y wp-ssh-mcpInstall wp-ssh MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.wp-ssh-mcp] command = "npx" args = ["-y", "wp-ssh-mcp"]
Install wp-ssh MCP in Gemini CLI
$ gemini mcp add -s user wp-ssh-mcp npx -- -y wp-ssh-mcpInstall wp-ssh MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"wp-ssh-mcp": {
"command": "npx",
"args": [
"-y",
"wp-ssh-mcp"
]
}
}
}Configuration
WPSSH_KEYWPSSH_MODEWPSSH_SITESWPSSH_URL
| Name | Description | |
|---|---|---|
| WPSSH_KEY | — | |
| WPSSH_MODE | — | |
| WPSSH_SITES | — | |
| WPSSH_URL | — |
Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachablemssoftpc/wp-ssh-mcp is public and reachablegithub.com/mssoftpc/wp-ssh-mcp ↗Pass
- Package names this repository as its sourcewp-ssh-mcp names mssoftpc/wp-ssh-mcp as sourcenpmjs.com/package/wp-ssh-mcp ↗Pass
- Build provenance (Sigstore attestation)No build attestation published for this releaseNot checked
- Open source license (OSI)GPL-2.0spdx.org/licenses/GPL-2.0.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-10-27github.com/mssoftpc/wp-ssh-mcp ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from wp-ssh-mcpPass
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubwp-ssh-mcp: WordPress MCP server for the WP SSH plugin

Let Claude, Cursor, Claude Code and other MCP clients manage your self-hosted WordPress site (posts, WooCommerce, Elementor, diagnostics, files) without SSH access.
wp-ssh-mcp is a small program that runs on your own computer. It turns the WP SSH plugin's HTTPS endpoint into MCP tools, so your AI sees post_list, order_get, elementor_data_set and so on, with proper parameter schemas. No hosted relay, no accounts: your key stays on your machine.
This needs two pieces. The WordPress plugin does the real work on your site;
wp-ssh-mcponly connects your AI app to it.
Claude Desktop / Cursor / Claude Code
│ MCP (local, stdio)
▼
wp-ssh-mcp ← this repo, runs on your computer
│ HTTPS + X-WPSSH-Key
▼
your WordPress site ← WP SSH plugin (separate repo)
Quick start
Step 1: install the plugin on your WordPress site (once per site)
- Get it from MSSOFTPC/wp-ssh (Releases →
wp-ssh.zip). - WordPress admin: Plugins → Add New → Upload Plugin → Activate.
- Tools → WP SSH: tick Enable bridge, copy the Secret key.
Step 2: connect your AI app (see Install for Claude Desktop, Claude Code and Cursor)
claude mcp add my-site -e WPSSH_URL=https://yoursite.com -e WPSSH_KEY=your-key -- npx -y wp-ssh-mcp
Then ask: "Run diagnostics on my site."
Safe by default
The server starts in read mode. Write tools are not even shown to the AI until you opt in.
WPSSH_MODE |
What the AI can do | Action tools |
|---|---|---|
read (default) |
Look, never touch: site info, diagnostics, posts, orders, options, file reads, SELECT queries, dry-run search-replace, Elementor export | 21 |
write |
+ content changes: create/update posts, order status, Elementor data/import, product attributes, cache clear, media upload, menus | 34 |
full |
+ risky: file writes/restore, write SQL, permanent delete, real search-replace, plugin activate/deactivate | 41 |
More safety built in:
- Risky tools are marked destructive, so MCP clients show an approval prompt.
db_queryaccepts one read-only statement only. Writes need the separatedb_query_writetool (full mode).search_replace_previewalways sendsdry_run: true; the model cannot override it.confirm: trueis never added automatically. The model must pass it, and tool descriptions tell it to do so only after your approval.- The plugin's own protections still apply (Read-only mode, IP allowlist, lockout, auto-backups, activity log).
- Refuses plain
http://(except localhost), refuses to follow redirects (the key is never forwarded), and never prints your key.
Install
Requires Node.js 18+ and the WP SSH plugin active on your site (Tools → WP SSH → copy the secret key, tick Enable bridge).
Claude Desktop
Edit claude_desktop_config.json
(macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"my-site": {
"command": "npx",
"args": ["-y", "wp-ssh-mcp"],
"env": {
"WPSSH_URL": "https://yoursite.com",
"WPSSH_KEY": "your-64-char-secret-key",
"WPSSH_MODE": "read"
}
}
}
}
Restart Claude Desktop.
Claude Code
claude mcp add my-site -e WPSSH_URL=https://yoursite.com -e WPSSH_KEY=your-key -- npx -y wp-ssh-mcp
Cursor
~/.cursor/mcp.json (or project .cursor/mcp.json): same mcpServers block as above.
Several sites
"env": {
"WPSSH_SITES": "[{\"name\":\"shop\",\"url\":\"https://shop.com\",\"key\":\"...\"},{\"name\":\"blog\",\"url\":\"https://blog.com\",\"key\":\"...\"}]",
"WPSSH_MODE": "read"
}
Every tool then gets a required site parameter (shop or blog).
Run from source
git clone https://github.com/MSSOFTPC/wp-ssh-mcp
cd wp-ssh-mcp
npm install && npm run build
# then use "command": "node", "args": ["/full/path/to/wp-ssh-mcp/dist/index.js"]
Configuration
| Variable | Meaning |
|---|---|
WPSSH_URL, WPSSH_KEY |
One site. URL like https://example.com, key from Tools → WP SSH |
WPSSH_NAME |
Optional name for the single site (default default) |
WPSSH_SITES |
JSON array for several sites (see above) |
WPSSH_MODE |
read (default), write, full |
WPSSH_ALLOW_HTTP |
1 to allow http:// on a trusted private network |
WPSSH_TIMEOUT_MS |
Request timeout, default 30000 |
WPSSH_MAX_CHARS |
Max characters returned per call (default 60000). Big Elementor pages are truncated with a hint |
Example prompts
- "Run diagnostics on my site and tell me what is slowing it down."
- "List draft posts tagged ready and show me before publishing any."
- "Preview a search-replace from
http://old.comtohttps://new.com. Don't apply it." - "Export the Elementor design of page 120 from
shopand import it as a draft onblog." - "Show today's WooCommerce orders and summarise by status."
ChatGPT, n8n, Make, Zapier (no MCP needed)
This repo also ships OpenAPI 3.1 files generated from the same action list:
openapi.json: read + content-write actions (use this one)openapi.full.json: everything, including risky actions (only for agents you fully trust)
Custom GPT: Configure → Actions → Import the file → set the server URL to your site → Authentication: API Key, Custom, header name X-WPSSH-Key.
Note that ChatGPT calls your site from OpenAI's servers, so an IP allowlist is not practical there; keep the plugin in Read-only mode unless you are actively making changes.
Regenerate after changing src/spec.ts: npm run build && npm run gen:openapi.
Privacy
wp-ssh-mcp talks only to the site URLs you configure. No telemetry, no analytics, no third-party servers. What the AI sees is the output of the tools you allow, and it is handled under your AI provider's terms.
Troubleshooting
| Symptom | Fix |
|---|---|
| "wrong or missing secret key" | Re-copy the key from Tools → WP SSH (regenerating invalidates the old one) |
| 403 | Bridge disabled, Read-only mode on in the plugin, or your IP is not on the allowlist |
| 404 | Plugin inactive, or permalinks/REST API blocked by a security plugin or server rule |
| "redirect" error | Use the exact final URL (https vs http, www vs non-www) |
| Tools missing | You are in read mode; set WPSSH_MODE=write or full and restart the client |
| Nothing shows in Claude Desktop | Check JSON syntax, fully restart the app, run npx wp-ssh-mcp --help in a terminal |
Development
npm install
npm test # builds and runs the end-to-end smoke test against a mock endpoint
npm run gen:openapi
src/spec.ts is the single list of actions. Add an action there and both the MCP tool and the OpenAPI schema appear.
License
GPL-2.0-or-later, same as the plugin.
wp-ssh MCP questions
How do I add wp-ssh MCP to Claude Code?
Run claude mcp add wp-ssh-mcp -- npx -y wp-ssh-mcp in your terminal. Add --scope user to make it available in every project.
How do I add wp-ssh MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
Does this require SSH access?
No, it allows AI agents to manage your WordPress site without SSH access by using the WP SSH plugin's HTTPS endpoint.