Architecture
Three pieces: a plugin on each WordPress site, an MCP server on your computer, and a desktop app that manages both. Here is what each one does and exactly what travels between them.
On this page
The path of a request
- You“Fix the meta description of post 482.”
- AI clientClaude Code, Claude Desktop or ChatGPT Desktop picks the tool
wp_set_seo. - MCP server
claude-wp-mcpon your computer turns the call into one HTTPS request, signed with your token. - PluginChecks HTTPS, token, scope, capability and rate limit, then runs the change.
- WordPressThe change is saved and written to the audit log.
Nothing sits in between: no Xaflo cloud, no relay, no account. The request goes from your computer to your site.
The WordPress plugin
Xaflo WP Connect runs on each site you want to manage. It adds a REST API under /wp-json/wpcb/v1 with 94 routes, and everything that keeps that API safe:
- token authentication (signed with a secret in
wp-config.php), scopes and WordPress capability checks; - an HTTPS requirement, per-token rate limits and a confirmation step for destructive operations;
- an audit log of every call, backups, a SQL guard and a sandbox for file writes;
- an admin area under Xaflo: Dashboard, Connect, Audit Log, Tokens, Settings, Maintenance and About.
The folder is still called wp-claude-bridge and the namespace wpcb/v1, from the project’s first name. The plugin is MIT-licensed.
The MCP server
claude-wp-mcp is a small Node.js program that speaks the Model Context Protocol to your AI client and HTTPS to your site. It registers 84 tools, all named wp_*; the Tools reference groups them by job, and the tools catalogue describes each one.
Your AI client starts one copy per site, over standard input and output, with the site and the token as two arguments or, better, as the environment variables WPCB_SITE and WPCB_TOKEN:
claude-wp-mcp --site https://your-site.example --token YOUR_TOKENThe package (1.3.0) ships inside the plugin, at wp-content/plugins/wp-claude-bridge/mcp/, and inside Xaflo Desktop, so you never fetch it from a third party.
Xaflo Desktop
Xaflo Desktop is an app for Windows & Linux that keeps your sites and their tokens in one place. Since 2.0.1 it carries the MCP server and its own Node, so nothing else needs installing. Version 2.0 (Windows) has five places in the sidebar:
- Sites: add, test and switch sites; each site’s sheet has Set up Claude and ChatGPT, Instructions for the AI and Open wp-admin (signed in, with
admin:login). - Remote: Plugins, Files, Deploy (one plugin
.zipto several sites), Maintenance and Console (debug.log). - Library: prompts and tools in one searchable place.
- Licence and Settings.
Whenever a site asks for confirmation, Desktop shows what will change and waits for your click. The Linux build is still 1.1.1, with the earlier layout.
The app updates itself. Some of its features use REST routes that have no MCP tool, such as the file explorer and maintenance mode; see the REST API reference.
What leaves your computer, and what doesn’t
- Your token stays in your AI client’s configuration on your computer. It is sent only to your site, in the
Authorizationheader, over HTTPS. - Your content travels between your site and your AI client, because the assistant has to read it to work on it. What your AI provider does with conversation content is governed by your agreement with them.
- Xaflo receives nothing: telemetry sent to Xaflo is 0. The plugin makes no outbound requests of its own, apart from the update check against this site in the self-hosted build, and downloads you ask for (media from a URL, a plugin zip), which go through an SSRF guard.
Where things live
| What | Where |
|---|---|
| Signing secret | WPCB_JWT_SECRET in wp-config.php |
| Tokens and revocations | The wpcb_tokens and wpcb_revoked tables, with your site’s table prefix |
| Audit log | The wpcb_audit table, kept 90 days by default |
| Backups | wp-content/wpcb-backups/, one zip per backup |
| MCP server package | wp-content/plugins/wp-claude-bridge/mcp/ |
| MCP configuration | Your AI client, for example ~/.claude.json for Claude Code or claude_desktop_config.json for Claude Desktop |