WEBO MCP
WEBO MCP is a WordPress MCP server — a complete Model Context Protocol gateway for WordPress. It lets AI agents and MCP-compatible clients (Claude Desktop, Cursor, Windsurf, n8n, and more) call well-defined tools over REST using JSON-RPC, instead of scraping the admin or sharing broad credentials. Why use WEBO MCP as your WordPress MCP server? Token-optimized unified tools: every domain exposes two abilities — *-query (all reads) and *-mutate (all writes) — with a single action discriminator. tools/list payload is up to 70% smaller than per-operation APIs, which means less of the model’s context window is consumed by tool schemas, lower cost per session, and fewer hallucinated tool names. Primary router endpoint: POST /wp-json/mcp/v1/router Standard MCP-style flow: initialize → tools/list → tools/call Session lifecycle for clients (pass session_id or Mcp-Session-Id after initialize) Built-in tool registry for common WordPress operations (posts, media, terms, menus, options, and more) Bundled Abilities API + MCP Adapter integration, with automatic bridging from registered abilities to MCP tools (configurable) WordPress 7.0/Core-aware bridge mode that uses Core Abilities/API surfaces when available and falls back only when needed Public tool policy controls (category filters and optional allowlists) plus optional internal tool exposure for private environments Bounded MCP audit log, optional per-user/role/client tool allowlists, and a read-only administrator health/status tool Security model (high level) MCP access requires a real WordPress user context: Application Password over HTTP Basic, or an existing logged-in session. Optional site-wide or per-user API key and HMAC can be enabled in Settings as an additional gate (they do not replace WordPress authentication). Do not put the normal WEBO API key in URLs. For clients that cannot send headers, create a short-lived scoped mcp_token URL connector token in Settings -> WEBO MCP. Default access expectations for the router and GET /wp-json/webo-mcp/v1/tools: users who are super admins, can manage_options, or can edit_posts, consistent with typical site operator and editor workflows (filterable). Client guidance Always discover tools before calling them: run tools/list, pick an exact tool name from the response, validate required arguments, then call tools/call. This reduces mistakes and keeps automation predictable in production. Further documentation and optional integrations Project documentation and ecosystem notes: https://webomcp.com Optional n8n community node (separate package): https://www.npmjs.com/package/n8n-nodes-webo-mcp Release notes and migration map: see docs/RELEASE_NOTES_2.1.0.md and docs/MIGRATION_GUIDE_2.1.0.md in the GitHub repository Cross-addon dispatcher map (granular legacy names removed from discovery): docs/MCP_TOOL_MIGRATION.md Compatibility note: any MCP-capable client can be used; which large language model runs inside the client is outside this plugin. Standalone core tools included: – Site info – Content (posts/pages): webo/content-query (list, get, find-by-url, search-replace, list-revisions, get-revision; with author/date/taxonomy filters) and webo/content-mutate (create, update, delete, bulk-update-status, restore-revision) – Users: list – Media: webo/media-query (list with search/MIME/post_id filters, get) and webo/media-mutate (upload, update, delete) – Comments: webo/comment-query (list, get) and webo/comment-mutate (create, update, delete) – Taxonomy/Terms: webo/taxonomy-query (discover, list, get) and webo/taxonomy-mutate (create, update, delete) – Nav menus: list menus, list menu items (menu_order, db_id), add menu link from post (explicit post_id + menu_order required) – Plugins: webo/plugin-query (installed, active, updates, …) and webo/plugin-mutate (install, activate, deactivate; supports child-site site_id / blog_id activation for network admins) – Health: webo/health-status (REST/router status, Application Password support, permalinks, cron, object cache, plugin update summary, WordPress/PHP versions, and redacted MCP config) – Abilities bridge: webo/ability-query and webo/ability-execute in default layered mode. Only abilities with meta.mcp.public === true are visible and executable through WEBO MCP. – Themes: webo/theme-query (installed themes) and webo/theme-mutate (install from WordPress.org by slug, switch installed theme) – Theme context: webo/theme-context (active theme info, block editor settings, style presets, registered blocks) – Block patterns: webo/block-patterns (list/get patterns, list/get synced patterns) – Site stats: webo/site-stats (overview, post counts, comment counts, user counts, media stats, activity summary) – Activity log: webo/activity-log (list events, summary, clear) – User profile: webo/user-profile (get own profile, update display name / bio / preferences) – Site settings: webo/site-settings (get and update the 20 most common WordPress options via MCP) – Content search: webo/content-search (full-text cross-post-type search with grouped results) – Menus: webo/menu-query, webo/menu-mutate (navigation menu items; not post/CPT list order) – Post/CPT order (optional): webo/reorder-query, webo/reorder-mutate when Webo Reorder is active — see docs/abilities/reorder.md – Options: get/update (safe allowlist only), set site icon/favicon from media – SEO (WordPress post): seo/article-analysis — requires post_id; merges Rank Math meta when available (same data path as webo-rank-math/get-post-seo-meta); optional related-keyword suggestions via outbound request unless no_autocomplete is true Excluded by default in standalone-safe mode: – Bulk/mass execution tools – Plugin/theme write-management abilities – Multisite-specific abilities Privacy This plugin does not phone home or send telemetry. MCP traffic is initiated by clients you configure. Some tools may perform outbound HTTP requests only when a client invokes them (for example seo/article-analysis may request keyword suggestions from a third-party suggest API unless you pass no_autocomplete). The plugin stores the following options in the WordPress database when configured: – webo_mcp_api_key: API key used to authenticate MCP requests. – webo_mcp_hmac_secret: HMAC secret used to sign and validate MCP requests. – webo_mcp_url_connector_tokens: hashed, expirable, revocable URL connector tokens for clients that cannot send headers. Raw tokens are shown once and are not stored. – webo_mcp_tool_allowlist_enabled and webo_mcp_tool_allowlist_rules: optional administrator-configured MCP tool allowlist policy. – webo_mcp_audit_log_enabled, webo_mcp_audit_log_max_entries, and webo_mcp_audit_log: bounded MCP tool-call audit log settings and compact audit events. Audit entries include user/tool/action/status data, anonymized IPs, and hashed session IDs; they do not store request payloads, API keys, HMAC secrets, or Application Passwords. These options are removed when the plugin is uninstalled via the WordPress Plugins screen. External services This plugin can connect to Google Suggest (Autocomplete) when a client calls the seo/article-analysis tool and does not set no_autocomplete to true. This external request is used to return related keyword suggestions for SEO analysis. Service provider: Google LLC (Google Suggest / Autocomplete API endpoint). Data sent and when: – Sent only when seo/article-analysis is called with autocomplete enabled. – Sends the analysis query text to https://suggestqueries.google.com/complete/search as the q parameter. – Sends standard HTTP request metadata such as IP address and User-Agent as part of the web request. Terms of Service: https://policies.google.com/terms Privacy Policy: https://policies.google.com/privacy Developer Hooks The plugin exposes the following actions and filters for developers: Actions webo_mcp_register_tools Fired during plugin bootstrap after standalone tools are registered. Use this to register custom MCP tools from other plugins. Filters webo_mcp_current_user_can_use_mcp (bool $allowed, int $user_id) Gate for all MCP REST access. Default: super admin OR manage_options OR edit_posts. Override to tighten (e.g. super-admin only) in hardened installs. webo_mcp_allow_internal_tools (bool $allow_internal, WP_REST_Request $request) Controls whether internal tools are included in tools/list responses. Defaults to false for public environments. webo_mcp_public_categories (array $categories, WP_REST_Request $request, array $tool) Filters which tool categories are exposed as public. Defaults to array( ‘wordpress’ ). webo_mcp_rate_limit_per_hour (int $limit, string $client, array|null $profile) Adjust effective hourly limit (fallback for both buckets). webo_mcp_rate_limit_read_per_hour / webo_mcp_rate_limit_mutate_per_hour (int $limit, string $client, array|null $profile) Per-bucket limits after admin/profile resolution. webo_mcp_tool_is_mutating (bool $is_mutating, string $tool_name, array|null $tool_definition, array $arguments) Override mutating classification for rate limits and read-only profiles. webo_mcp_tool_arguments_allow_extra (bool $allow, string $tool_name, array $schema, array $arguments) When true, unknown tool argument keys are passed through (default false). webo_mcp_disallow_url_token_query (bool $disallowed) Block URL connector tokens in query strings (admin setting is the default source). webo_mcp_rest_bom_guard_json_api_requests (bool $activate, string $uri_raw) Opt-in BOM sanitizer for all /wp-json/ responses (default false; MCP routes only). webo_mcp_bridge_deny_patterns (array $patterns) Controls which abilities are excluded when auto-bridging abilities into MCP tools (e.g. bulk, themes/, multisite/). webo_mcp_auto_bridge_abilities (bool $enabled) Enables or disables automatic bridging of registered abilities into MCP tools. Defaults to true; bridge mode still controls whether the bridge is off, layered, or full. webo_mcp_bridge_mode (string $mode) Controls Abilities bridge mode after the WEBO_MCP_BRIDGE_MODE constant and before the stored option. Values: off, layered, full. Default: layered. webo_mcp_enable_adapter (bool $enabled) Enables or disables the bundled WordPress MCP Adapter runtime. Defaults to true. webo_mcp_validate_media_fetch_url (true|\WP_Error $ok, string $url, array $parsed) Reject unsafe URLs for webo/media-mutate upload action (return WP_Error to block). webo_mcp_tool_allowlist_allowed (bool $allowed, string $tool_name, WP_REST_Request $request, array $params, array $allowed_tools) Filters the optional per-user/role/client allowlist decision. Credits Special thanks to the authors and open source projects that contributed to this plugin: – WordPress (https://wordpress.org) – Abilities API (https://github.com/WordPress/abilities-api) Reference: https://make.wordpress.org/ai/2025/07/17/abilities-api/ – MCP Adapter (https://github.com/WordPress/mcp-adapter) Reference: https://make.wordpress.org/ai/2025/07/17/mcp-adapter/ – Composer (https://getcomposer.org) – Other PHP and JS libraries from the community If you use this plugin, please give credit to the authors of these libraries. License This plugin is licensed under the GPLv2 or later. See https://www.gnu.org/licenses/gpl-2.0.html for details.
Top keywords
- webo59×3.61%
- mcp55×3.36%
- webo mcp30×1.83%
- wordpress21×1.28%
- abilities15×0.92%
- list15×0.92%
- array13×0.79%
- https12×0.73%
- request12×0.73%
- api11×0.67%
- optional10×0.61%
- bool9×0.55%
Widgets Control
Widgets Control is a toolbox that features visibility management for all widgets, sidebars, sections of content and content blocks. It allows to show widgets and sidebars based on conditions – you can choose to show them only on certain pages or exclude them from being displayed. Sections of content can also be restricted by using this plugin’s [widgets_control] shortcode. You can also define new WYSIWYG Content Blocks that can be used in widgets, sidebars and with shortcodes. For each widget and sidebar, you can decide where it should be displayed: show it on all pages show it on some pages show it on all except some pages … you can target small, medium or large screens for mobile, tablet and desktop users. To include or exclude pages, the plugin allows you to indicate page ids, titles or slugs and tokens that identify the front page, categories, tags, etc. In addition to page ids, titles and slugs, these tokens can be used to determine where a widget should or should not be displayed: [home] [front] [single] [page] [category] ... On sites using WPML, widgets can be shown conditionally based on the language viewed. The [widgets_control] shortcode is used to embed content and show it conditionally similar to the visibility options used for widgets and sidebars. For example, [widgets_control conditions="{archive}"]This text is shown only when the content is displayed on an archive page.[/widgets_control]. Widgets Control also provides flexible WYSIWYG Content Blocks and a proper widget that can be used to place them in sidebars, the [widgets_control_content] shortcode to embed freely created blocks anywhere on your pages and API functions that allow to include these blocks in PHP templates of your theme. For even more flexible control, use Widgets Control Pro which provides freely definable additional sidebars. Use display conditions to show or hide content on devices with small, medium or large displays, useful to adapt the display to mobile, tablet and desktop viewers. See the documentation for more details. Widgets Control works with virtually any widget. It is compatible with lots of plugins, among these it has been tested with: Groups Affiliates Decent Comments WooCommerce WooCommerce Product Search Search Live Documentation Events Manager BuddyPress bbPress Ninja Forms Gravity Forms Jetpack WPML NextGEN Gallery Image Widget MailChimp for WordPress The Events Calendar MailPoet Newsletters Elementor Widgets Control Pro Our Widgets Control Pro provides additional features: Conditions based on the viewed post type. For example, show a widget only on posts with [type:post] or only on product pages with [type:product] Show or hide widgets on full page hierarchies, where conditions are based on a parent page and all its child pages: some-page/* Show or hide widgets based on user roles. For example, show a widget to subscribers and customers only: [role:subscriber,customer] Show or hide widgets based on a user’s group membership with Groups. For example, show a widget only to registered users with [group:Registered] or show a widget only to users in a Premium group using [group:Premium] Show or hide widgets for archive pages of a specific post type. For example, [archive:product] can be used to show widgets for the WooCommerce shop page and product archives only. Allows to specify exclusions. For example, to show a widget only on pages, but exclude it from being shown on one or more specific pages. Provides additional sidebar features that allow to define any number of custom sidebars, flexible placement based on common locations, including above and below content, the comment form, menus and other sidebars, the [widgets_control_sidebar] shortcode to embed them in content on your pages and API functions to use them in your theme’s templates. Feedback Feedback is welcome! If you need help, have problems, want to leave feedback or want to provide constructive criticism, please do so here at the Widgets Control plugin page. Please try to solve problems there before you rate this plugin or say it doesn’t work. There goes a lot of work into providing you with quality plugins! Please help with your feedback and we’re also grateful if you help spread the word about this plugin. Thanks! Twitter Follow @itthinx on Twitter for updates on this and other plugins.