WSP WordPress MCP

by bilalnaseer

Not rated
GitHub

About

Free WordPress MCP For Connecting AI Coding Agents

Details

Author
bilalnaseer
Categories
Developer Tools, Other

Setup

Install WSP WordPress MCP in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/bilalnaseer/wsp-wordpress-mcp

Follow the installation instructions in the repository README, then restart your MCP client.

WSP WordPress MCP — Connect AI Agents to WordPress

ByWebSensePro— Official Shopify Partner & WordPress Agency

- 🐛"Session not found or expired" on the very first request — fixed— clients that sendtools/listimmediately afterinitialize(Claude Desktop viamcp-remote, and any fast script) were rejected withSession not found or expired. Re-initialize.The connection looked healthy, tools appeared to load, and then every command timed out. Inserting a 2-second pause made it work, which pointed at slow or remote database hosting — but that was a red herring. The session row was always there: sessions store their expiry to the second, so a request landing in thesame secondasinitializerewrote an identical expiry timestamp, and MySQL/MariaDB reportchangedrows rather thanmatchedrows — returning0, which the plugin read as "no such session." A zero-row update is now confirmed with an existence check before any session is rejected. Missing and expired sessions are still rejected exactly as before. No delay, workaround, or client-side change needed. Fixes#30— with thanks to@WikiZellfor isolating the cause and testing the patch.

- 🐛Copy buttons fixed on plain-HTTP sites— theCopybutton on every snippet tab inMCP > Connectiondid nothing on sites not served over HTTPS (typically local dev hosts likehttp://mysite.local/). The browser Clipboard API is only available in asecure context— HTTPS orlocalhost— so on any other hostname it was missing entirely and the click failed silently. Copying now falls back to a hidden textarea when the Clipboard API is unavailable. All six client tabs are fixed.
- 🟢Enabled/disabled tally per group— each ability group header now shows a green"N Enabled"pill next to a red"N Disabled"pill, replacing the singleenabled / totalbadge that looked the same whether a group was partly or fully on. Counts update live as you flip switches or useToggle All.
- 🎬Tutorials & directory links in the adminMCP > SettingsandMCP > Connectionnow carry sidebar cards linking to our
video tutorialsand the fullabilities directory.
- 🔒Verified against WordPress 7.0.3— no plugin changes were needed. Thekses(CSS injection) and HTTP URL-validation (SSRF) fixes in that security release are inherited automatically, because this plugin calls the core APIs rather than reimplementing them. Since this plugin exposes tools to AI agents, we recommend runningWordPress 7.0.3 or 6.9.6+so those fixes are in place.

New: Direct file upload for media. wsp_upload_media (Upload Media) now accepts base64 file content via a new data parameter — an MCP client can upload a file attached to the chat straight into the media library without first hosting it at a public URL. The url parameter still works as before; pass either one. An optional mime_type hint and data: URI prefixes are supported. Only image types (jpg, png, gif, webp) are allowed, decoded bytes are written through media_handle_sideload(), and the tool still requires upload_files.

- 🎨Elementor Advanced Design Tools (11 tools)— new tools for high-fidelity design work, all OFF by default and toggled fromMCP > Settingsunder the "Elementor" group. Read the active kit's global colors, fonts, and layout (get-active-kit) and update them (update-active-kit); regenerate the Elementor CSS cache (regenerate-css); fetch a widget's full control schema — margins, padding, typography, borders (get-widget-schema); duplicate an element with fresh unique IDs (duplicate-element) or move it to a new spot (move-element); turn plain CSS into Elementor settings (convert-css); read/update page-level settings like template and background (get-page-settings/update-page-settings); copy one element's styles onto another (copy-styles); and read the responsive breakpoints (get-breakpoints). Every write tool runs through the samewsp_elementor_sanitize_settings()guard as the rest of the Elementor suite, so no code can be injected.update-active-kitandregenerate-cssrequiremanage_options; the rest requireedit_posts.

- 📊WPForms Suite (12 tools)— full support for WPForms (Lite and Pro), toggled fromMCP > Settingsunder the "WPForms" group.List Forms,Get Form,Describe Schema, andGet Form Statsare ON by default; all write tools are OFF. Coversforms(list, get, describe-schema, get-form-stats, create, update settings, add field, update field, delete) andentries(list, get, delete — WPForms Pro only). Uses WPForms' own capabilities (wpforms_view_forms,wpforms_edit_forms,wpforms_view_entries,wpforms_edit_entries); all strings are sanitized before saving. Only registered when WPForms is active.

- 📬Contact Form 7 Suite (10 tools)— full support for Contact Form 7, toggled fromMCP > Settingsunder the "Contact Form 7" group.List FormsandGet Formare ON by default; all write tools are OFF. Coversforms(list, get, create, update, delete),entriesvia Flamingo (list, get),validation(validate-formcatches email/syntax errors),integrations(active modules + reCAPTCHA status), andmoderation(spam/unspam/trash/untrash a submission). Entry tools require the Flamingo plugin, since CF7 doesn't store entries on its own. Uses CF7's capabilities (wpcf7_edit_contact_forms,wpcf7_delete_contact_forms);get-integrationsrequiresmanage_options. Only registered when Contact Form 7 is active.

- 📬Gravity Forms Suite (18 tools)— full read/write control over Gravity Forms, withList FormsandGet FormON by default and all write tools OFF. Toggled fromMCP > Settingsunder the "Gravity Forms" group (icon: 📋). Coversforms(list, get, create, update, delete, update settings),entries(list, get, update, delete with trash/permanent support),notifications(get, create, update, delete), andconfirmations(get, create, update, delete — message/redirect/page types). All callbacks useGFAPIand enforce strict Gravity Forms capability checks (gravityforms_edit_forms,gravityforms_create_form,gravityforms_delete_forms,gravityforms_view_entries,gravityforms_edit_entries,gravityforms_delete_entries). Only registered when Gravity Forms is active.

- 📬Gravity Forms Suite— introduced the 18-tool Gravity Forms integration, with List Forms and Get Form ON by default and all write tools OFF. Toggled fromMCP > Settingsunder the "Gravity Forms" group. Coversforms,entries,notifications, andconfirmations. All callbacks useGFAPIand enforce strict Gravity Forms capability checks (gravityforms_edit_forms,gravityforms_create_form,gravityforms_delete_forms,gravityforms_view_entries,gravityforms_edit_entries,gravityforms_delete_entries). Only registered when Gravity Forms is active.

- 🧱Ultimate Addons for Elementor (UAE) Suite— 45 new tools for UAE, all off by default and toggled fromMCP > Settingsunder the "Ultimate Addons Elementor" group. Coverswidgets(activate, deactivate, bulk toggle, check usage, list),templates(create, duplicate, trash, restore, and update Header/Footer/Blocks templates), thebuilder/engine(add sections, add columns, move elements, build layouts from JSON), andsettings(get/update UAE plugin settings, theme info, extensions, and design-system tokens). String inputs are sanitized withwp_kses_post()and every tool enforces a strict capability check (edit_posts,publish_posts, ormanage_options). Only registered when UAE is active.
- 🐛Fixedwsp_uae_builder_add_column— it silently created acontainerinstead of acolumnbecause the type validation inwsp_execute_elementor_add_container()only acceptedcontainerandsection.columnis now a valid type.

- 🖼️Full Media Library Suite— the single read-only media tool is now a complete set of seven:List Media(browse/search by type, keyword, or date),Get Media(full metadata of a single attachment by ID),Count Media(counts grouped by MIME type + total),Update Media(title, alt text, caption, description),Delete Media(permanent), andUpload Media/Upload Media From URL(import a file straight from any web link). All off by default and toggled fromMCP > Settings. Reads requireupload_files, deletes requiredelete_posts; uploads sanitize the source URL and sideload via WordPress core.
- ⚠️wsp_get_mediabehavior changed— it now returns the full metadata of asingleattachment by ID. The old "list the library" behavior moved to the newwsp_list_mediatool. If you relied onwsp_get_mediato list media, switch towsp_list_media.

- 🔒Hardened ACF writes— all ACF field-value write tools now recursively sanitize incoming values before saving (each string is run throughwp_kses_post()), so<script>/<style>and inline event handlers can no longer be stored through the MCP tools. Legitimate WYSIWYG/HTML content still works. Resolves the WordPress.org "arbitrary code insertion" review finding.

- 🔌OpenCode connection tab— a sixth copy-paste config snippet onMCP > Connection, joining Claude Desktop, Cursor, Codex, Antigravity, and OpenClaw. OpenCode connects natively over remote HTTP (no Node.js bridge); the snippet is a full~/.config/opencode/opencode.jsonfile ready to create and paste.

- 🧩Advanced Custom Fields Suite— 27 new tools for ACF: field groups, fields, field values withdot-notation deep access(e.g.repeater.0.subfield), custom post types, taxonomies, and options pages. All off by default and only registered when ACF is active; structural changes (create/update/delete groups, fields, CPTs, taxonomies) requiremanage_options, with per-object capability checks on every value read/write.
- 🏷️Plugin slug renamedtowsp-mcp-ai-agents-connectorto match the public name ahead of WordPress.org submission. ⚠️Breaking on existing installs— WordPress treats the renamed folder as a separate plugin, so remove the oldwebsensepro-mcp-abilitiescopy and activate the new one. Saved settings, the sessions table, and the API key are preserved (no reconfiguration needed).

- 🧹Native-Only— the legacy dual-mode Abilities-API / MCP-Adapter registration path and theMCP > Config Filespage have been removed. The built-in native server is now the single transport.
- 🔁Seamless Redirects— old bookmarks to the Config Files page now redirect toMCP > Connection.
- ⚠️Breaking— connections made before v2.0 through the WordPress MCP Adapter must be re-created using the native endpoint onMCP > Connection. New installs and native connections are unaffected.

v2.1.0— 🛒WooCommerce Suite— 15 new tools covering products (list, get, create, create variation, update), orders (list, update status, refund), coupons (create, list), order notes, customers, sales reports, low-stock alerts, and review moderation. All off by default and only registered when WooCommerce is active; financial/PII tools require themanage_woocommercecapability.

- 🚀Built-in Native MCP Server— the plugin ships its own MCP server at/wp-json/wsp-mcp/v1/mcp.No companion plugin, WordPress MCP Adapter, or Node.js bridge required.
- 🔌MCP > Connection Page— endpoint URL, API key (with one-click regenerate), and ready-to-paste config tabs forClaude Desktop, Cursor, Codex, Antigravity, and OpenClaw— the API key is pre-filled for you.
- 🔐Flexible Auth— connect with a WordPress Application Passwordorthe plugin's API key (Authorization: Bearer), with per-tool capability enforcement.
- 🗂️Cleaner Settings— ability groups are now collapsible accordions with live enabled/total counts.

v1.3.0— 🔍 Yoast SEO abilities (read/update SEO title, meta description, focus keyphrase); group only appears when Yoast is active.

v1.2.1— Add OpenClaw tab to Config Files page

- ⚡Elementor Abilities— list pages, get page structure, find/get/update elements, add widgets & containers, remove elements
- 🗂️Modular Plugin Architecture— refactored intoincludes/with separate files per feature group
- 🔧Auto Config Generator— generates ready-to-paste configs for Claude Desktop & Codex from wp-admin
- 🔒Granular Ability Controls— enable/disable each ability individually; Elementor group only shown when Elementor is active
- 📦WP.org Ready— proper headers, license,uninstall.php, and PHP 7.4+ support

WooCommerce(requires WooCommerce plugin)

Advanced Custom Fields(requires ACF plugin)

Value reads/writes accept a target of a post/page ID,user_<id>,term_<id>, oroptions, and enforce per-object capabilities (e.g.edit_post,edit_user,manage_categories,manage_options). Structural changes requiremanage_options.

Ultimate Addons for Elementor(requires UAE plugin)

45 tools in total, off by default and only registered when UAE is active. Structural and settings writes requireedit_posts,publish_posts, ormanage_options; all string inputs are sanitized withwp_kses_post().

Gravity Forms(requires Gravity Forms plugin)

18 tools in total. List Forms and Get Form are ON by default; all write tools are OFF by default. All callbacks require appropriate Gravity Forms capabilities (gravityforms_edit_forms,gravityforms_create_form,gravityforms_delete_forms,gravityforms_view_entries,gravityforms_edit_entries,gravityforms_delete_entries).

Prerequisites:WordPress 6.9+ (7.0.3 or 6.9.6+ recommended — see v2.6.7 notes), PHP 7.4+ —that's it.No companion plugin, no MCP Adapter, no Node.js for natively-supported clients (Cursor, Codex, Antigravity). Claude Desktop & OpenClaw use themcp-remotebridge, which needs Node.js 18+.
- Install & activate this plugin
- Go toMCP > Settingsin wp-admin and enable the abilities you need
- Go toMCP > Connectionand pick your client tab (Claude Desktop, Cursor, Codex, Antigravity, or OpenClaw)
- Copy the snippet — the endpoint URL and API key are already filled in — and paste it into your client's config
- Reconnect / restart the client and start prompting your AI agent

Upgrading from before v2.0?As of v2.2 the legacy MCP-Adapter / Abilities-API path and theMCP > Config Filespage have been removed. Re-create your connection using the native endpoint onMCP > Connection.

Built byWebSensePro— WordPress & Shopify agency from Queens, NY.

⭐ Star this repo·🍴 Fork it·🐛 Report a bug

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

Manage and utilize website content within the DevHub CMS platform

A server for integrating with WordPress sites, enabling content management and interaction via the Model Context Protocol.

Agency-grade MCP server for WordPress Elementor — multi-site fleet management, safe page/widget-level editing, template export/import, version tracking with snapshot/rollback.

Perform CRUD operations on Elementor page data for a target WordPress website.

An MCP server for WordPress and Elementor, enabling AI assistants to manage content and build pages.

Model Context Protocol (MCP) server for Kinsta WordPress hosting

CLI-first MCP server for composer-based Kirby CMS projects—inspect blueprints/templates/plugins, interact with a real Kirby runtime, and use a bundled Kirby knowledge base.

MCP server for managing Squidex CMS content and schemas from AI agents

Access WordPress development rules and best practices from the WordPress LLM Rules repository. It dynamically creates tools for each rule and caches content using Cloudflare Durable Objects.

Access WordPress development rules and best practices from the WordPress LLM Rules repository.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.