Enabling MCP
Open VX → AI. The Setup tab walks through four steps; the first two are covered here, and the last two in Connecting MCP clients.
1. Enable MCP
Enable MCP is the master switch, and it starts off. Until it's on and saved, the connection address doesn't exist at all: requests to it get a 404, not a login prompt.
2. Choose abilities
Pick how much an assistant can do:
| Level | What it allows |
|---|---|
| Level 1 (default) | Read-only: every VX ability that can't change anything, plus checks that validate a change without saving it |
| Level 2 | Every VX ability, including changes |
| Level 3 | Every VX ability, plus the abilities WordPress itself provides |
| Full access | Everything, including abilities other plugins and your theme register |
| Custom | Exactly the abilities you tick on the Abilities tab |
Level 1 is read-only, but not blind: reading includes your content, meaning posts, terms, users, their field values and your pages' markup. If an assistant should see the site's structure but not its content, choose Custom and untick Read on the Content and Documents topics.
The named levels update themselves: when a VX update adds a new read ability, Level 1 includes it automatically. Changing any individual ability switches you to Custom.
Nothing takes effect until you save. If MCP is on but nothing is exposed, the address still answers 404.
The Abilities tab
The Abilities tab lists every ability in groups: Structure (post types, fieldsets, fields and other configuration), Content (posts, terms and users), Block editor (pages and templates), WordPress (abilities WordPress core registers) and 3rd-party (abilities from other plugins and themes). Each topic has Read, Write and All checkboxes, so ticking reads never hands over a delete by accident.
Abilities from other plugins
Abilities registered by WordPress core, other plugins and your theme are listed, but never exposed by default, even if the plugin asks to be. VX can't vouch for them:
- They use their own permission checks, not VX's.
- Their changes aren't recorded in VX's activity log, and can't be undone through VX.
- Their read or write labels are the plugin's own claims. Anything marked Unstated may change the site.
Turn them on one at a time, and only when you know what they do.
Keep connected clients in sync
When you change the exposed abilities, clients that are already connected keep their old list of tools until you reconnect them. Settle the list before you connect, or reconnect afterwards:
| Client | To pick up changes |
|---|---|
| Cursor | Quit and reopen Cursor (reloading the server keeps the cached list) |
| Claude Code | Run /mcp and reconnect vx, or start a new session |
| VS Code | MCP: Restart Server, then choose vx |
| Windsurf | Manage MCPs → Refresh |
| Codex | Start a new session |
Turning MCP off takes effect immediately, with no reconnect: the address simply stops existing.
If the MCP Adapter plugin is installed
VX's connection works the same with or without the MCP Adapter plugin. The two don't share a connection: VX keeps its own address, and the settings on this page only control that address.
The plugin adds its own address, and the settings here don't reach it. On that address an administrator can run VX's read abilities, including content reads, even while Enable MCP is off here. Writes never run there. If you don't use the plugin's address, a developer can switch it off (see the technical details below).
Warning
An assistant with write abilities can change your data model and content through a web request. Anyone who obtains the credential it uses can do the same. On production sites, keep writes off unless you need them, connect with a dedicated account you can revoke, and prefer config as code for reviewed structural changes.
Technical details for LLMs
- Presets:
vx-readonly(Level 1, default),vx-all,vx-wp,full,custom. Named presets resolve live against the catalog. Per-ability deviations are stored when switching tocustom. - Endpoint:
https://example.com/wp-json/vx-framework/mcp(Streamable HTTP, POST only; GET → 405). Registered only when enabled and at least one ability is exposed; otherwise 404. Served by VX's own copy of the MCP Adapter library whether or not the MCP Adapter plugin is active; neither changes the other's servers or hooks. - MCP Adapter plugin's address:
https://example.com/wp-json/mcp/mcp-adapter-default-server, outside these settings. Itsmcp-adapter/execute-abilitytool runs any ability whosemeta.mcp.publicistrue, which every VX read ability has; each ability's own permission check (manage_options) still applies. To remove that server:add_filter( 'mcp_adapter_create_default_server', '__return_false' );. - Never exposed: the MCP Adapter's own
mcp-adapter/*meta-tools (they would run any ability by name). - Check from the shell:
wp vx-framework abilities mcp(enabled state, endpoint, exposed tools). - Not a site-wide switch: VX abilities are also registered with
show_in_rest, so WordPress core'shttps://example.com/wp-json/wp-abilities/v1can list and run them (writes included) for anymanage_optionsuser, whether or not MCP is enabled. To remove an ability from every surface,wp_unregister_ability( 'vx-framework/…' )onwp_abilities_api_init(priority 20). - Requires the WordPress Abilities API (WordPress 6.9+).