=== AcrossAI MCP Manager === Contributors: raftaar1191 Tags: mcp, ai, copilot, vscode, claude Requires at least: 7.0 Requires PHP: 8.1 Tested up to: 7.0 Stable tag: 0.2.2 License: GPL-2.0-or-later License URI: https://www.gnu.org/licenses/gpl-2.0.html Connect WordPress to MCP clients like VS Code, Claude, and Copilot using secure application passwords. == Description == MCP Manager uses the standard `@automattic/mcp-wordpress-remote@latest` package with WordPress Application Passwords for the default remote flow. It also includes an optional experimental direct Claude Connectors mode backed by a WordPress-hosted OAuth approval flow. MCP Manager is a WordPress plugin that enables seamless integration with Model Context Protocol (MCP) servers, allowing AI assistants and code editors to safely access your WordPress instance through secure application passwords. = Key Features = * **Multi-Client Support**: Configure MCP for: - VS Code with Copilot - Claude Desktop App - GitHub Copilot & Codex - OpenAI ChatGPT Codex - Custom MCP Clients * **Secure Authentication**: Uses WordPress native Application Passwords system - One-click password generation - Secure credential management - Password revocation support - Per-server Access Control still enforced after authentication * **Easy Configuration**: - Copy-paste ready JSON configurations - Per-provider configuration file paths - Automatic top-level key detection * **Format #1 Standard**: Uses the Automattic-recommended MCP configuration format - npx command execution - @automattic/mcp-wordpress-remote@latest package - Full environment variable support = How It Works = 1. Navigate to Settings → MCP Manager 2. Select your MCP client (VS Code, Claude, GitHub Copilot, ChatGPT, or Custom) 3. Click "Generate New Application Password" 4. Copy the ready-to-use JSON configuration 5. Paste into your client's configuration file 6. Restart your MCP client All application passwords are managed through WordPress's native Application Passwords system and appear in your profile under Account Management. = CLI Connection and Authorization Flow = MCP Manager also supports a browser-assisted CLI connection flow for local MCP clients. Typical command: `npx -y @acrossai/mcp-manager --siteurl=https://example.com --server=default-mcp-server` Flow summary: 1. The CLI checks `/wp-json/acrossai-mcp-manager/v1/health` 2. The CLI starts auth with `/wp-json/acrossai-mcp-manager/v1/auth/start` 3. WordPress returns an `auth_code` and frontend `auth_url` 4. The CLI opens the frontend approval page at `/acrossai-mcp-manager/` 5. If needed, the user signs in through normal WordPress login 6. The signed-in user approves access in the browser 7. The CLI polls `/auth/status` until the request is approved 8. The CLI fetches the approved user's accessible servers from `/servers` 9. The CLI exchanges the approved code at `/auth/exchange` 10. WordPress creates a one-time Application Password and the CLI writes the MCP client config Terminology: * **Sign in / Log in** = WordPress account authentication * **Connect** = starting the CLI-to-site linking flow * **Authorize / Approve access** = granting the CLI permission in the browser Important notes: * The frontend authorization page must never be cached * Auth codes are single-use * `/servers` and `/auth/exchange` respect per-server access control * User-facing copy should say **CLI Connections** rather than **npm Login** * Generated remote MCP configs use Application Passwords and explicitly disable OAuth discovery in `@automattic/mcp-wordpress-remote` = Experimental Direct Claude Connectors = An optional **Claude Connectors Screen (Experimental)** setting can enable a direct OAuth flow for Claude's hosted connectors. When the global feature toggle is enabled and a specific server is configured in its **Claude Connector** tab, the plugin exposes: * `/.well-known/oauth-authorization-server` * `/.well-known/oauth-protected-resource?resource=` * `/acrossai-mcp-connectors/oauth/authorize/` * `/wp-json/acrossai-mcp-manager/v1/connector/oauth/token` Important notes: * Disabled by default * The Application Password flow remains available and supported * The master experimental toggle is global, but OAuth client settings are stored per server * Direct connector approval signs Claude in as a WordPress user * Per-server Access Control still applies to every MCP request after OAuth * Public HTTPS is recommended for hosted connector usage = Provider Configuration Paths = * **VS Code**: ~/.config/Code/User/globalStorage/Copilot.copilot-chat/mcp.json (top-level key: "servers") * **Claude**: ~/Library/Application Support/Claude/claude_desktop_config.json (top-level key: "mcpServers") * **GitHub Copilot**: ~/.gh-copilot/config.json (top-level key: "servers") * **OpenAI ChatGPT**: ~/.config/chatgpt/config.json (top-level key: "servers") * **Custom**: ./your-project/.mcp/config.json (top-level key: configurable) = Requirements = * WordPress 5.9 or higher * PHP 7.4 or higher * WordPress Application Passwords support (built-in since WP 5.6) == Installation == 1. Upload the plugin directory to `/wp-content/plugins/` 2. Activate the plugin through the 'Plugins' menu in WordPress 3. Navigate to Settings → MCP Manager to configure Or: 1. Go to Admin → Plugins → Add New 2. Search for "MCP Manager" 3. Click "Install Now" then "Activate" == Frequently Asked Questions == = Is my password secure? = Yes! MCP Manager uses WordPress's native Application Passwords system. Each password is: - Generated using WordPress's secure methods - Associated with your user account - Visible in your profile for management - Revocable at any time = Can I use this with multiple MCP clients? = Yes! You can generate separate passwords for each client (VS Code, Claude, GitHub Copilot, ChatGPT, and any custom client). = Where are my application passwords saved? = All application passwords are managed through WordPress's native Application Passwords system. View and manage them at: User Profile → Account Management → Application Passwords = What MCP clients are supported? = - Visual Studio Code (with Copilot) - Anthropic Claude Desktop App - GitHub Copilot - OpenAI ChatGPT Codex - Any custom MCP client supporting the standard format = Can I revoke a password? = Yes! You can revoke any application password from your profile page under Account Management → Application Passwords. = Is this compatible with multisite? = Yes! MCP Manager works with WordPress multisite installations. Each site can be configured independently. = Do I need to install additional software? = No additional software is needed on the WordPress side. Your MCP clients (VS Code extension, Claude app, etc.) handle the integration. == Screenshots == 1. Settings page with client tabs for easy configuration 2. Copy-paste ready JSON configuration 3. One-click password generation 4. Per-provider configuration file locations and top-level keys == Changelog == = 0.2.2 = * **Notices — migrated persistent-condition banners to the cross-plugin `acrossai_notices` filter.** The "MCP adapter package missing" and "wpb-access-control library missing" warnings no longer render as inline `admin_notices` banners on every screen. They're pushed into the shared collection introduced in `acrossai-co/main-menu` 0.0.30, which surfaces them in two consolidated places: (1) a **Notices submenu** under the AcrossAI parent menu (with a count bubble; the page also stays reachable when the count is zero and renders an "All clear" empty state per the 0.0.31 fix) and (2) a **single WP-native dismissible summary** on every other admin page. Dismissal is now fingerprint-based (per-user meta `_acrossai_notices_summary_fp`) — adding, resolving, or renaming a notice re-shows the summary automatically. **Deletions**: `Notices::render_missing_adapter_notice`, `Notices::handle_adapter_notice_dismissal`, `ADAPTER_DISMISS_META_KEY`, `ADAPTER_DISMISS_NONCE_ACTION`, `AcrossAI_MCP_Access_Control::maybe_show_library_notice`, and the US4 dismiss-persistence handler in `src/js/backend.js` — all obsoleted by the shared summary. **Additions**: `Notices::register_shared_notices()` returns records with ids `acrossai_mcp_manager_adapter_missing` (type `error`) and `acrossai_mcp_manager_wpb_access_control_missing` (type `warning`), both scoped with `source: 'MCP Manager'`. One-shot action-result flashes (`?notice=`) stay on the standard `admin_notices` hook — page-scoped transient messages don't fit the shared collection model. * **UI — Redesigned the AI Connectors placeholder tab as a centered sales card.** When the `acrossai-ai-connectors` companion add-on is not installed or not active, the AI Connectors tab on the server-edit page (`?page=acrossai_mcp_manager&action=edit&server=&tab=ai-connectors`) now renders a vertically-centered polished card sourced from https://acrossai.co/ai-connectors/ — headline ("Connect WordPress to Claude, ChatGPT & Grok in one click"), supported-client pills (Claude · ChatGPT · Grok), four benefit bullets, a purple CTA ("Install add-on" / "Activate add-on" depending on companion state), a "Learn more" link, and a 14-day money-back trust line. State resolution unchanged — Registry's last-wins dedup at priority 35 still swaps the placeholder out for the companion's real `AIConnectorsTab` the moment the add-on activates. * **Dependencies: bump `acrossai-co/main-menu` `0.0.29` → `0.0.31`.** 0.0.30 shipped the shared `acrossai_notices` filter + Notices submenu + `SummaryNoticeEmitter`. 0.0.31 fixed a "Sorry, you are not allowed to access this page." error on direct visits to `admin.php?page=acrossai-notices` when the notice count was zero (page callback is now always wired; empty-state sidebar row is hidden via inline `