Connect AI Assistants (MCP)

Members 3.3.0 lets an AI assistant manage your site’s permissions for you. Instead of clicking through screens, you ask in plain words:

  • “Why can’t Jane see the Members Area page?”
  • “Create a Course Manager role that can edit pages but not publish them.”
  • “Restrict the posts in my Premium category to Subscribers.”
  • “Make jane@example.com an Editor.”
  • “Which roles can publish pages?”
  • “Keep Subscribers out of wp-admin.” (with the Admin Access add-on on)

It works through MCP (the Model Context Protocol), the standard way AI apps talk to other software. Everything happens on your own site, using the permissions of the WordPress account the assistant signs in as. It’s free, with no extra accounts.

What you need

  • WordPress 6.9 or newer. AI connections use the Abilities API that arrived in 6.9. On older versions the AI (MCP) tab asks you to update.
  • The free official MCP Adapter plugin from WordPress.org. Members can install it for you in one click.
  • An AI app that can run local MCP servers: Claude Desktop, Claude Code, Cursor, VS Code or OpenAI Codex.
  • Node.js 18 or newer on the computer where that app runs. The connection runs a small helper with npx.
  • Application Passwords turned on for your WordPress account. WordPress offers them on sites served over HTTPS. Some security plugins turn them off.

On multisite, only a Super Admin can install the MCP Adapter, and the assistant works on one site at a time, using that site’s roles. See Multisite.

ChatGPT and Claude on the web don’t work yet. Their custom connectors only connect to remote servers that use OAuth sign-in, which WordPress doesn’t offer yet.

Already connected an assistant to your site?

If you’ve already connected Claude or another assistant to your site through the MCP Adapter plugin, there’s nothing to set up. Members’ tools show up there automatically. Try asking “What roles does my site have?”

Set it up

Go to Members → Settings → AI (MCP).

  1. Install the MCP Adapter. Click Install & activate. If your host blocks plugin installs, download it from WordPress.org and install it under Plugins → Add New Plugin.
  2. Create a password for your assistant. Click Create password & fill it in. Members creates an Application Password for the account you’re logged in as, so the assistant will sign in as that account (see Keep the password private below). Copy it now: WordPress only shows it once. You can revoke it any time under Users → Profile → Application Passwords.
  3. Copy the setup into your app. Click Copy and add it to your app as shown below, then restart the app. Claude Desktop and Cursor take it as is; Claude Code, VS Code and Codex use their own format, shown in their sections.

The setup you copy looks like this:

{
  "mcpServers": {
    "members": {
      "command": "npx",
      "args": [ "-y", "@automattic/mcp-wordpress-remote@latest" ],
      "env": {
        "WP_API_URL": "https://yoursite.com/wp-json/mcp/mcp-adapter-default-server",
        "WP_API_USERNAME": "your-username",
        "WP_API_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
      }
    }
  }
}

The server address, your username and the password are filled in for you on the AI (MCP) tab.

Keep the password private

The Application Password signs in as your WordPress account, for the whole REST API and every MCP tool on your site, not just Members. Read-only mode, the switches and the activity log only cover Members’ own tools. Anyone who gets the password can do whatever your account can, so:

  • Treat it like your admin password. Don’t share the setup or paste it anywhere public.
  • The setup hands the password to the @automattic/mcp-wordpress-remote helper, which npx downloads from npm (@latest gets the newest version each time the app starts). That helper signs in with it, so only use the official package. To stay on a version you’ve checked, replace @latest with a version number.
  • Keep it in your app’s own settings, not in a project file you might commit (see the VS Code and Cursor notes below).
  • Revoke it under Users → Profile → Application Passwords when you stop using the assistant, or if it might have leaked.
  • To keep the assistant separate from your own login, create a separate account just for it. Log in as that account, create an Application Password under Users → Profile → Application Passwords, and put that account’s username and password in the setup. (Only accounts that can manage options, like Administrators, can open the AI (MCP) tab. If the Admin Access add-on keeps that account’s role out of wp-admin, it can’t reach its profile either, so create the password first or allow that role into wp-admin.) The assistant can never do more than that account’s role allows. Managing roles and Members settings needs Administrator-level capabilities.

Claude Desktop

Open Settings → Developer → Edit Config. Paste the members entry inside mcpServers in claude_desktop_config.json (or paste the whole thing if the file is empty), save, and restart Claude Desktop.

Claude Code

Run this in a terminal, with your own values:

claude mcp add members \
  -e WP_API_URL="https://yoursite.com/wp-json/mcp/mcp-adapter-default-server" \
  -e WP_API_USERNAME="your-username" \
  -e WP_API_PASSWORD="xxxx xxxx xxxx xxxx xxxx xxxx" \
  -- npx -y @automattic/mcp-wordpress-remote@latest

That’s for Mac, Linux and WSL terminals. In Windows PowerShell or Command Prompt, put it on one line without the \ characters.

Cursor

Edit mcp.json in the .cursor folder in your home folder (~/.cursor/mcp.json on Mac and Linux, %USERPROFILE%\.cursor\mcp.json on Windows). Paste the members entry inside mcpServers, save, and check that the server shows as connected. Don’t put it in a project’s .cursor/mcp.json if that project is shared or committed.

VS Code

Run MCP: Open User Configuration from the Command Palette. Use this rather than a project’s .vscode/mcp.json, which is often committed and would share your password. VS Code calls the list servers instead of mcpServers:

{
  "servers": {
    "members": {
      "type": "stdio",
      "command": "npx",
      "args": [ "-y", "@automattic/mcp-wordpress-remote@latest" ],
      "env": {
        "WP_API_URL": "https://yoursite.com/wp-json/mcp/mcp-adapter-default-server",
        "WP_API_USERNAME": "your-username",
        "WP_API_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
      }
    }
  }
}

Use it from Copilot Chat in Agent mode.

OpenAI Codex

Add this to config.toml in the .codex folder in your home folder (~/.codex/config.toml on Mac and Linux, %USERPROFILE%\.codex\config.toml on Windows):

[mcp_servers.members]
command = "npx"
args = ["-y", "@automattic/mcp-wordpress-remote@latest"]

[mcp_servers.members.env]
WP_API_URL = "https://yoursite.com/wp-json/mcp/mcp-adapter-default-server"
WP_API_USERNAME = "your-username"
WP_API_PASSWORD = "xxxx xxxx xxxx xxxx xxxx xxxx"

You stay in charge

  • Read-only to start. Out of the box, Members’ tools can only look things up, not change anything. This covers Members’ tools, not everything the password can do; see Keep the password private. To allow changes, turn off Read-only mode on the AI (MCP) tab. You can turn it back on any time, and it takes effect immediately.

  • Switch areas on or off. Under Advanced mode → Show actions, each group of actions has its own switch. A switched-off group is hidden from assistants and refuses to run.

  • “Are you really sure?” for risky changes. These include:

    • taking capabilities away from a role that has users, or giving it powerful ones;
    • deleting a role;
    • changing someone’s roles;
    • making restricted content public;
    • bulk changes;
    • turning on Private Site;
    • switching add-ons on or off.

    The assistant first gets a plain-words warning of exactly what will happen, and the change is only made if you say yes.

  • It won’t lock you out. Any change that would cost the account the assistant signs in as its admin access, wp-admin access, or the ability to edit roles (so it could be undone) is always refused. Make that kind of change in wp-admin if you really mean it.

  • It can only do what its account can. The assistant acts as the WordPress account its password belongs to. If that account can’t edit a post or assign a role, neither can the assistant.

  • You can see what it did. The Activity list at the bottom of the tab shows every action from the last 90 days: which assistant, which account, what it did, and the result. Changes record the old values under Details, so you can change them back by hand (or ask the assistant to). There’s no one-click undo. Turn on Include look-ups to see read-only requests too.

What assistants can do

Switch What it covers Changes things?
View roles & capabilities List roles, see a role’s capabilities, list every capability by group No
View users’ roles See a user’s roles and capabilities, list users in a role, explain why someone can or can’t do something or see a page No
View content restrictions See who can view a post (including restrictions inherited from a parent page), list restricted content, list content types that can be restricted No
View settings & add-ons Read Members settings and which add-ons are on No
Manage roles Create, clone, change and delete roles Yes
Manage users’ roles Add or remove roles on a user Yes
Protect content Restrict or unrestrict a post, page or other content item, and bulk-restrict up to 50 existing items at once (with a preview first). Bulk changes are one-time: posts published later aren’t covered, because Members has no category-wide rule. See Content Permissions. Yes
Change settings Change any Members setting Yes
Turn add-ons on/off Switch bundled add-ons on or off Yes

When these add-ons are on, their settings appear too:

Add-on What assistants can do
Admin Access See and change which roles can reach wp-admin, where others are sent, and the toolbar
Role Hierarchy See and change role positions
Role Levels See and change a role’s user level
Block Permissions See and change who each block in a post is shown to or hidden from

Troubleshooting

“Needs WordPress 6.9 or newer”

Update WordPress under Dashboard → Updates.

“Application Passwords are turned off for your account”

WordPress only offers Application Passwords on sites served over HTTPS (local development sites are the exception). Some security plugins also turn them off; look for an Application Passwords or REST API setting in yours.

The MCP Adapter won’t install

Some hosts don’t allow plugin installs from the dashboard. Download the MCP Adapter and upload it under Plugins → Add New Plugin → Upload Plugin, or ask your host.

The assistant doesn’t see Members’ tools

  • Restart the AI app after changing its settings.
  • Check the switches under Advanced mode on the AI (MCP) tab. A switched-off group is hidden.
  • Make sure Node.js 18 or newer is installed. If npx isn’t found, install Node.js from nodejs.org and restart the app.

The assistant says Members is in read-only mode

That’s the default. Turn off Read-only mode on the AI (MCP) tab to allow changes.

The assistant gets a 401 error

The password or username is wrong, or something is blocking the sign-in.

  • Check the username in the setup is the WordPress username, not an email address.
  • Make a new password and paste it into the setup, then restart the app. Create password & fill it in on the AI (MCP) tab makes it for the account you’re logged in as, so the assistant will sign in as that account. If the assistant uses a separate account, log in as that account and create the password on its profile instead.
  • Security plugins that block the REST API can also block MCP. Allow /wp-json/mcp/ for logged-in users.

The assistant says it isn’t allowed to do something

Sign-in worked, but the request was refused. The assistant’s message says why:

  • Read-only mode or a switched-off group on the AI (MCP) tab is blocking it.
  • The account it signs in as doesn’t have the capability (for example, an Editor can’t change roles).
  • The change would lock that account out, which is always refused.

For developers

Abilities are registered under the members/ namespace with the WordPress Abilities API, for example members/list-roles and members/restrict-content. Two hooks let you extend them:

  • members_register_abilities (action): register more Members abilities with Members\Abilities\Ability::args().
  • members_ability_args (filter): change any Members ability’s registration arguments.

Members-registered abilities always respect the read-only mode, switches and activity log on the AI (MCP) tab.