wp-mcp-control-server
The wp-mcp-control-server connects AI assistants (Cursor, Claude Desktop, etc.) to WordPress, providing 100+ tools across the following areas:
Site & Settings
Health checks, site info, theme/plugin lists, activity logs, cache purge, security posture
Read/update safe settings (title, tagline, front page, posts per page)
Content Management
Full CRUD for pages, posts, categories, tags, menus, and URL redirects
Build structured landing pages (hero, services, testimonials, FAQ, CTA sections)
Unified search across all content types
Media Library
List, get, upload (from URL or base64), update metadata, and delete media items
Elementor Page Builder
Browse widget catalog, get/list full page element tree, find widgets by type
Update widgets by ID, matched text, button text, or image URL
Insert, remove, clone elements/sections; duplicate entire pages; regenerate CSS cache
Gutenberg & Custom Post Types
Manage Gutenberg blocks and insert block patterns
CRUD for custom post types, custom taxonomies, terms, and ACF/meta fields
SEO
Get, update, and audit page SEO metadata
WooCommerce
CRUD for products, orders, bookings, and refunds; update prices; add order notes
Forms, Users, Comments & Widgets
List forms, submissions, and notifications; manage users and roles; moderate comments; update sidebar widgets
Revisions, Plugins & Cron
List/restore content revisions and snapshots; detect plugin conflicts; activate/deactivate plugins; list cron events
Webhooks
Manage custom, WooCommerce, and form webhooks
Batch Operations
Execute up to 20 API calls in a single request
Utilities
Export full site structure as JSON; generate sitemaps in JSON or XML
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wp-mcp-control-server Create a new page titled 'About Us' using the default template"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WP MCP Control — MCP Server
TypeScript MCP server that connects Cursor, Claude Desktop, and other MCP clients to the WP MCP Control WordPress plugin.
Current version: 2.3.0 (149 tools)
Quick Install (new computer)
git clone https://github.com/mpierre135/wp-mcp-control-server.git
cd wp-mcp-control-server
npm install
npm run build
cp .env.example .env
# Edit .env with your site URL and tokenThen add to Claude Desktop or Cursor (see below).
Related MCP server: wp-cli-mcp
Setup
npm install
cp .env.example .env
# Edit .env with your credentials
npm run build
npm startEnvironment Variables
Variable | Required | Default | Description |
| Yes | — | WordPress site URL (no trailing slash) |
| Yes | — | API token from plugin settings |
| No |
| Block destructive operations |
| No |
| Validate without making changes |
Claude Desktop Config
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"wp-mcp-control": {
"command": "node",
"args": ["/absolute/path/to/wp-mcp-control-server/dist/index.js"],
"env": {
"WP_MCP_SITE_URL": "https://example.com",
"WP_MCP_TOKEN": "your-token",
"WP_MCP_SAFE_MODE": "true",
"WP_MCP_DRY_RUN": "false"
}
}
}
}Restart Claude Desktop after saving.
Cursor Config
{
"mcpServers": {
"wp-mcp-control": {
"command": "node",
"args": ["/absolute/path/to/mcp-server/dist/index.js"],
"env": {
"WP_MCP_SITE_URL": "https://example.com",
"WP_MCP_TOKEN": "your-token",
"WP_MCP_SAFE_MODE": "true",
"WP_MCP_DRY_RUN": "false"
}
}
}
}Development
npm run dev # Watch mode
npm run build # Compile to dist/Tool Catalog
Site
wp_health_check— Health and statuswp_get_site_info— Site metadatawp_list_themes/wp_list_plugins— Read-only inventorywp_get_settings/wp_update_settings— Safe settings
Pages
wp_list_pages,wp_get_page,wp_create_page,wp_update_page,wp_delete_pagewp_create_landing_page— Structured landing page builder
Posts
wp_list_posts,wp_get_post,wp_create_post,wp_update_post,wp_delete_post
Media
wp_list_media,wp_get_mediawp_upload_media_from_url,wp_upload_media_from_base64wp_update_media_metadata,wp_delete_media
Taxonomies
wp_list_categories,wp_create_category,wp_update_category,wp_delete_categorywp_list_tags,wp_create_tag,wp_update_tag,wp_delete_tag
Menus
wp_list_menus,wp_get_menu_itemswp_create_menu_item,wp_update_menu_item,wp_delete_menu_itemwp_assign_menu_location
Other
wp_search_content— Unified searchwp_batch_operations— Batch API callswp_get_activity_log,wp_restore_snapshotwp_list_redirects,wp_create_redirect,wp_update_redirect,wp_delete_redirectwp_export_site_structure,wp_generate_sitemap
Elementor (Phase 1–3)
wp_elementor_get_widget_catalog— Widget catalog with editable settingswp_elementor_get_structure— Full Elementor element treewp_elementor_list_elements— Flat list of widgets with text previewswp_elementor_find_widgets— Filter by widget_typewp_elementor_update_element— Update catalog-editable widget by element IDwp_elementor_update_text— Find widget by text and replacewp_elementor_update_button— Update button text/URL by match_textwp_elementor_update_image— Update image by element_id or match_urlwp_elementor_insert_widget— Add widget to column/containerwp_elementor_insert_section— Add section (hero/cta/features presets)wp_elementor_remove_element— Delete element by IDwp_elementor_clone_element— Clone subtree with new IDswp_elementor_duplicate_page— Clone Elementor page as draftwp_elementor_find_parent— Find column/container for insertwp_elementor_regenerate_css— Regenerate Elementor CSS cache
v2.0 — Discovery and diagnostics
wp_get_site_blueprint,wp_site_audit,wp_security_posture,wp_purge_cache
v2.0 — Gutenberg, CPT, meta
wp_list_blocks,wp_update_block,wp_insert_block_patternwp_list_post_types,wp_list_cpt_items,wp_get_cpt_item,wp_create_cpt_item,wp_update_cpt_item,wp_delete_cpt_itemwp_list_taxonomies,wp_list_taxonomy_terms,wp_create_taxonomy_termwp_get_meta_catalog,wp_get_acf_fields,wp_update_acf_fields
v2.0 — SEO and WooCommerce
wp_get_page_seo,wp_update_page_seo,wp_audit_seowp_list_products,wp_get_product,wp_create_product,wp_update_product,wp_delete_product,wp_update_product_pricewp_list_orders,wp_get_order,wp_update_order,wp_add_order_note,wp_refund_orderwp_list_booking_products,wp_get_booking
v2.0 — Forms, users, comments, widgets
wp_list_forms,wp_get_form,wp_update_form_notifications,wp_list_form_submissionswp_list_users,wp_get_user,wp_list_roles,wp_create_userwp_list_comments,wp_moderate_comment,wp_reply_to_commentwp_list_sidebars,wp_list_widget_instances,wp_update_widget_instance
v2.0 — Revisions, plugins, cron
wp_list_revisions,wp_get_revision,wp_get_revision_diff,wp_restore_revision,wp_get_snapshot_diffwp_get_plugin_conflicts,wp_get_plugin_updates,wp_activate_plugin,wp_deactivate_pluginwp_list_cron_events
v2.1 — Webhooks
wp_list_webhook_topics,wp_list_custom_webhooks,wp_create_custom_webhook,wp_test_custom_webhookwp_list_woocommerce_webhooks,wp_create_woocommerce_webhook,wp_delete_woocommerce_webhookwp_list_form_webhooks,wp_create_form_webhook,wp_update_form_webhook,wp_delete_form_webhook
Server version: 2.3.0 — 149 tools total
Headers Sent to WordPress
Every request includes:
Authorization: Bearer <token>X-WP-MCP-Dry-Run: true|falseX-WP-MCP-Safe-Mode: true|false
These override plugin defaults when set in MCP env vars.
Available Tools
149 toolswp_activate_pluginA
Activate a plugin by slug (e.g. litespeed-cache/litespeed-cache.php). Must be on MCP allowlist. confirm required in safe mode.
Inputs: slug (required), confirm.
wp_add_order_noteB
Add an admin or customer-visible note to a WooCommerce order
Inputs: id (required), note (required), customer_note.
wp_audit_seoA
Run SEO audit across published content (missing titles, descriptions, etc.)
Inputs: no named parameters.
wp_batch_operationsB
Execute multiple WP MCP operations in a single request (max 20)
Inputs: operations (required).
wp_create_categoryC
Create a WordPress category
Inputs: name (required), slug, parent, description.
wp_create_cpt_itemC
Create a new item in a custom post type
Inputs: title (required), post_type (required), meta, slug, +6 more.
wp_create_custom_webhookA
Create a custom MCP outbound webhook. Secret is returned once on create. confirm:true required when safe mode is on.
Inputs: url (required), name (required), topics (required), confirm, +1 more.
wp_create_form_webhookC
Create a Ninja Forms webhook action on a form
Inputs: url (required), form_id (required), label, active, +2 more.
wp_create_landing_pageB
Create a landing page with structured sections (hero, services, testimonials, FAQ, CTA)
Inputs: title (required), sections (required), slug, status.
wp_create_pageC
Create a new WordPress page
Inputs: title (required), meta, slug, parent, +6 more.
wp_create_postC
Create a new WordPress post
Inputs: title (required), meta, slug, tags, +7 more.
wp_create_productC
Create a new WooCommerce simple product
Inputs: name (required), sku, slug, status, +8 more.
wp_create_redirectC
Create a URL redirect
Inputs: target_url (required), source_path (required), enabled, status_code.
wp_create_tagC
Create a WordPress tag
Inputs: name (required), slug, description.
wp_create_taxonomy_termC
Create a term in a taxonomy
Inputs: name (required), taxonomy (required), slug, parent, +1 more.
wp_create_userA
Create a WordPress user. confirm:true required in safe mode. Administrator role requires explicit confirm.
Inputs: email (required), username (required), role, confirm, +2 more.
wp_create_woocommerce_webhookA
Create a WooCommerce native webhook. Secret returned once. confirm:true required when safe mode is on.
Inputs: name (required), topic (required), delivery_url (required), status, +1 more.
wp_deactivate_pluginA
Deactivate a plugin by slug. confirm:true required when safe mode is enabled.
Inputs: slug (required), confirm.
wp_delete_categoryC
Delete a WordPress category
Inputs: id (required), confirm (required).
wp_delete_cpt_itemB
Delete a custom post type item (moves to trash by default)
Inputs: id (required), confirm (required), post_type (required), force.
wp_delete_custom_webhookA
Delete a custom MCP webhook. confirm:true required when safe mode is on.
Inputs: id (required), confirm.
wp_delete_form_webhookB
Delete a Ninja Forms webhook action
Inputs: form_id (required), action_id (required).
wp_delete_mediaB
Delete a media item (moves to trash by default)
Inputs: id (required), confirm (required), force.
wp_delete_pageA
Delete a WordPress page (moves to trash by default)
Inputs: id (required), confirm (required), force.
wp_delete_postB
Delete a WordPress post (moves to trash by default)
Inputs: id (required), confirm (required), force.
wp_delete_productA
Delete a WooCommerce product (moves to trash by default)
Inputs: id (required), confirm (required), force.
wp_delete_redirectC
Delete a redirect
Inputs: id (required), confirm (required).
wp_delete_tagC
Delete a WordPress tag
Inputs: id (required), confirm (required).
wp_delete_woocommerce_webhookA
Delete a WooCommerce native webhook. confirm:true required when safe mode is on.
Inputs: id (required), confirm.
wp_elementor_add_repeater_itemA
Append a new item to an Elementor repeater widget (add a carousel slide, testimonial, photo). Provide item fields matching the widget schema.
Inputs: item (required), page_id (required), element_id (required).
wp_elementor_clear_pageA
Remove all Elementor canvas sections/containers from a page for rebuilds. Theme builder header/footer templates are unaffected. confirm:true required when safe mode is on.
Inputs: page_id (required), confirm.
wp_elementor_clone_elementB
Clone a widget, section, or container subtree with new IDs. confirm:true required when safe mode is on.
Inputs: page_id (required), element_id (required), confirm.
wp_elementor_create_blank_pageA
Create a new Elementor page with an empty canvas and header/footer template (elementor_header_footer by default). confirm:true required when safe mode is on.
Inputs: title (required), slug, status, confirm, +1 more.
wp_elementor_duplicate_pageB
Duplicate an Elementor page as a new draft with remapped element IDs. Preserves heading text through safe JSON pipeline. confirm:true required when safe mode is on.
Inputs: source_id (required), slug, title, status, +1 more.
wp_elementor_find_parentA
Find a suitable parent column or container element ID for inserting widgets on an Elementor page
Inputs: page_id (required).
wp_elementor_find_widgetsB
Find widgets on a page filtered by widget_type (e.g. button, image, raven-heading)
Inputs: page_id (required), widget_type (required).
wp_elementor_get_structureA
Get full Elementor page structure including element tree JSON. Page must be built with Elementor.
Inputs: page_id (required).
wp_elementor_get_template_conditionsA
Get the display conditions for an Elementor Theme Builder template — which pages or post types it shows on.
Inputs: template_id (required).
wp_elementor_get_widget_catalogA
Get the Elementor widget catalog with editable settings per widget type.
Inputs: no named parameters.
wp_elementor_insert_sectionB
Insert a section scaffold (section+column or container) with widgets. Use preset hero/cta/features or custom children. confirm:true required in safe mode.
Inputs: page_id (required), preset, confirm, children, +1 more.
wp_elementor_insert_widgetA
Insert a widget into a column or container. Requires parent_id from wp_elementor_list_elements. Use confirm:true when safe mode is on.
Inputs: page_id (required), parent_id (required), widget_type (required), confirm, +1 more.
wp_elementor_list_elementsA
List all Elementor elements on a page as a flat index with id, widgetType, text preview, and is_editable flag
Inputs: page_id (required).
wp_elementor_list_repeater_itemsA
List all items in an Elementor repeater widget (carousel slides, testimonials, photo roller images). Works on page IDs and Theme Builder template IDs.
Inputs: page_id (required), element_id (required).
wp_elementor_list_theme_templatesA
List all Elementor Theme Builder templates (headers, footers, singles, archives). Returns template IDs usable with other elementor tools.
Inputs: type.
wp_elementor_publish_templateA
Publish a draft Elementor Theme Builder template so it goes live. Requires confirm: true when safe mode is on.
Inputs: template_id (required), confirm.
wp_elementor_regenerate_cssA
Regenerate Elementor CSS assets for a page after structural changes
Inputs: page_id (required).
wp_elementor_remove_elementB
Remove a widget, section, or container by element ID. confirm:true required when safe mode is on.
Inputs: page_id (required), element_id (required), confirm.
wp_elementor_remove_repeater_itemA
Remove an item from an Elementor repeater widget by zero-based index. Requires confirm: true when safe mode is on.
Inputs: index (required), page_id (required), element_id (required), confirm.
wp_elementor_repair_jsonB
Re-save Elementor JSON on a page to fix corruption (e.g. $400n heading text). Use after duplicate issues or broken templates.
Inputs: page_id (required).
wp_elementor_set_template_conditionsA
Replace all display conditions on an Elementor Theme Builder template. Use 'include/general' to show on all pages, 'include/singular/page/43' for a specific page.
Inputs: conditions (required), template_id (required).
wp_elementor_update_buttonB
Find a button (or raven-button) by matching button text and update text and/or URL.
Inputs: page_id (required), match_text (required), url, new_text.
wp_elementor_update_elementA
Update an Elementor widget by element ID. Supports all catalog-editable widgets (heading, text-editor, button, image, icon-box, icon-list, raven-*).
Inputs: page_id (required), settings (required), element_id (required).
wp_elementor_update_imageA
Update an image widget by element_id or match_url. Set image_id, image_url, and/or caption.
Inputs: page_id (required), caption, image_id, image_url, +2 more.
wp_elementor_update_repeater_itemA
Partially update an item in an Elementor repeater widget by zero-based index. Only provided fields are changed; others are preserved.
Inputs: item (required), index (required), page_id (required), element_id (required).
wp_elementor_update_textA
Find a heading or text-editor widget by matching existing text and replace it. Creates a snapshot before updating.
Inputs: page_id (required), new_text (required), match_text (required), widget_type.
wp_export_site_structureA
Export site structure as JSON tree (pages, posts, menus, taxonomies, redirects)
Inputs: no named parameters.
wp_generate_sitemapC
Generate a sitemap of published pages and posts
Inputs: format.
wp_get_acf_fieldsA
Get ACF field values and catalog for a post/page (requires ACF plugin)
Inputs: post_id (required).
wp_get_activity_logC
Get MCP activity log with optional filters
Inputs: page, action, per_page, object_type.
wp_get_bookingA
Get a WooCommerce Booking by ID (requires WooCommerce Bookings plugin)
Inputs: id (required).
wp_get_cpt_itemA
Get a single custom post type item by ID
Inputs: id (required), post_type (required).
wp_get_custom_webhookA
Get a custom MCP webhook by ID
Inputs: id (required).
wp_get_formA
Get Ninja Form details including fields and notification actions
Inputs: id (required).
wp_get_mediaB
Get a single media item with metadata
Inputs: id (required).
wp_get_meta_catalogA
Get unified meta field catalog across ACF, AIOSEO, and other registered adapters
Inputs: no named parameters.
wp_get_orderA
Get full WooCommerce order details including line items and addresses
Inputs: id (required).
wp_get_pageA
Get full WordPress page data including raw and rendered HTML content
Inputs: id (required).
wp_get_page_seoA
Get SEO metadata for a page/post via All in One SEO (title, description, schema, etc.)
Inputs: page_id (required).
wp_get_plugin_conflictsB
Detect conflicting active plugins (SEO, cache, redirect groups)
Inputs: no named parameters.
wp_get_plugin_updatesA
List available plugin updates from WordPress.org
Inputs: no named parameters.
wp_get_postA
Get full WordPress post data including content, categories, and tags
Inputs: id (required).
wp_get_productA
Get full WooCommerce product details
Inputs: id (required).
wp_get_revisionC
Get revision content by revision ID
Inputs: revision_id (required).
wp_get_revision_diffB
Diff a revision against the current post content (title, content, excerpt)
Inputs: revision_id (required).
wp_get_settingsB
Read safe WordPress site settings
Inputs: no named parameters.
wp_get_site_blueprintA
Get site blueprint for agent discovery: theme, menus, adapters, Elementor/WooCommerce status, allowed post types
Inputs: no named parameters.
wp_get_site_infoA
Get WordPress site information including theme, plugins, and permalink settings
Inputs: no named parameters.
wp_get_snapshot_diffC
Diff an MCP snapshot against the current post content
Inputs: snapshot_id (required).
wp_get_userA
Get a WordPress user by ID
Inputs: id (required), include_email.
wp_get_woocommerce_webhookA
Get a WooCommerce native webhook by ID
Inputs: id (required).
wp_health_checkA
Check WP MCP Control plugin health, REST availability, and security settings
Inputs: no named parameters.
wp_insert_block_patternA
Insert a Gutenberg block pattern preset (hero, faq, columns) into a page/post
Inputs: preset (required), page_id (required).
wp_list_blocksA
List Gutenberg blocks on a page/post as a flat index with blockName, path, and attributes preview
Inputs: page_id (required).
wp_list_booking_productsA
List WooCommerce Bookings products (requires WooCommerce Bookings plugin)
Inputs: no named parameters.
wp_list_categoriesC
List WordPress categories
Inputs: search, per_page.
wp_list_commentsB
List WordPress comments with optional status and post filters
Inputs: page, status, post_id, per_page.
wp_list_cpt_itemsB
List items of a custom post type with optional filters
Inputs: post_type (required), page, search, status, +1 more.
wp_list_cron_eventsA
List scheduled WordPress cron events (read-only)
Inputs: hook, page, per_page.
wp_list_custom_webhooksA
List custom MCP outbound webhooks configured on the site
Inputs: no named parameters.
wp_list_formsA
List Ninja Forms on the site (requires Ninja Forms plugin)
Inputs: no named parameters.
wp_list_form_submissionsB
List submissions for a Ninja Form
Inputs: id (required), page, per_page.
wp_list_form_webhooksB
List Ninja Forms webhook actions on a form (requires Ninja Forms)
Inputs: form_id (required).
wp_list_mediaC
List WordPress media library items
Inputs: page, search, per_page.
wp_list_ordersC
List WooCommerce orders with optional filters
Inputs: page, search, status, per_page.
wp_list_pagesC
List WordPress pages with optional filters
Inputs: page, search, status, per_page.
wp_list_pluginsA
List installed WordPress plugins (read-only)
Inputs: no named parameters.
wp_list_postsC
List WordPress posts with optional filters
Inputs: page, search, status, per_page.
wp_list_post_typesB
List allowed custom post types available via MCP
Inputs: no named parameters.
wp_list_productsC
List WooCommerce products with optional filters
Inputs: page, search, status, per_page.
wp_list_redirectsA
List built-in URL redirects managed by WP MCP Control
Inputs: no named parameters.
wp_list_revisionsA
List WordPress revisions for a post or page
Inputs: post_id (required).
wp_list_rolesA
List WordPress roles and their capabilities
Inputs: no named parameters.
wp_list_sidebarsA
List registered WordPress widget sidebars
Inputs: no named parameters.
wp_list_tagsC
List WordPress tags
Inputs: search, per_page.
wp_list_taxonomiesA
List all public WordPress taxonomies with object types
Inputs: no named parameters.
wp_list_taxonomy_termsC
List terms for a taxonomy
Inputs: taxonomy (required), search, per_page.
wp_list_themesA
List installed WordPress themes (read-only)
Inputs: no named parameters.
wp_list_usersC
List WordPress users with optional role and search filters
Inputs: page, role, search, per_page, +1 more.
wp_list_webhook_deliveriesB
List delivery log entries for a custom MCP webhook
Inputs: id (required), page, per_page.
wp_list_webhook_topicsB
List available custom MCP webhook event topics (content, WC, forms, cache, etc.)
Inputs: no named parameters.
wp_list_widget_instancesA
List widget instances across sidebars (text and custom_html widgets are editable)
Inputs: sidebar.
wp_list_woocommerce_webhooksA
List WooCommerce native webhooks (product/order topics)
Inputs: no named parameters.
wp_moderate_commentB
Moderate a comment: approve, hold, spam, or trash. confirm required for spam/trash in safe mode.
Inputs: id (required), status (required), confirm.
wp_purge_cacheA
Purge site cache (LiteSpeed, WP Rocket, W3TC, etc.). confirm:true required when safe mode is enabled.
Inputs: confirm.
wp_refund_orderA
Create a WooCommerce order refund. confirm:true required. Requires wp_mcp_allow_wc_refunds setting.
Inputs: id (required), amount, reason, confirm, +1 more.
wp_reply_to_commentC
Reply to a comment as the site admin
Inputs: id (required), content (required).
wp_restore_revisionA
Restore a post/page to a previous revision. confirm:true required when safe mode is enabled.
Inputs: revision_id (required), confirm.
wp_restore_snapshotB
Restore a previous content snapshot before an update/delete
Inputs: confirm (required), snapshot_id (required).
wp_search_contentB
Search across WordPress pages, posts, media, categories, and tags
Inputs: query (required), limit, status, post_type, +2 more.
wp_security_postureB
Get security posture: safe mode, dry run, rate limits, IP allowlist, token age, CORS settings
Inputs: no named parameters.
wp_site_auditA
Run site content audit: empty pages, missing alt text, redirect loops, draft backlog, SEO issues
Inputs: no named parameters.
wp_test_custom_webhookA
Send a test ping to a custom MCP webhook and return delivery result. confirm:true required when safe mode is on.
Inputs: id (required), confirm.
wp_update_acf_fieldsB
Update ACF field values on a post/page (creates snapshot before update)
Inputs: fields (required), post_id (required).
wp_update_blockB
Update Gutenberg block attributes by path or by finding block_name with optional match_text
Inputs: attrs (required), page_id (required), path, block_name, +1 more.
wp_update_categoryC
Update a WordPress category
Inputs: id (required), name, slug, parent, +1 more.
wp_update_cpt_itemC
Update an existing custom post type item (creates snapshot before update)
Inputs: id (required), post_type (required), meta, slug, +7 more.
wp_update_custom_webhookC
Update a custom MCP webhook (name, url, topics, enabled)
Inputs: id (required), url, name, topics, +1 more.
wp_update_form_notificationsB
Update Ninja Form notification actions (email recipients, subject, message, etc.)
Inputs: id (required), actions (required).
wp_update_form_webhookC
Update a Ninja Forms webhook action
Inputs: form_id (required), action_id (required), url, label, +3 more.
wp_update_media_metadataB
Update media title, alt text, caption, or description
Inputs: id (required), alt, title, caption, +1 more.
wp_update_orderA
Update WooCommerce order status, addresses, or line items. confirm:true required when safe mode is enabled.
Inputs: id (required), status, billing, confirm, +3 more.
wp_update_pageB
Update an existing WordPress page (creates snapshot before update)
Inputs: id (required), meta, slug, title, +7 more.
wp_update_page_seoA
Update SEO fields for a page/post via All in One SEO (creates snapshot before update)
Inputs: fields (required), page_id (required).
wp_update_postA
Update an existing WordPress post (creates snapshot before update)
Inputs: id (required), meta, slug, tags, +8 more.
wp_update_productC
Update a WooCommerce product (creates snapshot before update)
Inputs: id (required), sku, name, slug, +9 more.
wp_update_product_priceB
Update WooCommerce product pricing (regular_price, sale_price, or price alias)
Inputs: id (required), price, sale_price, regular_price.
wp_update_redirectC
Update an existing redirect
Inputs: id (required), enabled, target_url, source_path, +1 more.
wp_update_settingsB
Update safe WordPress site settings (title, tagline, posts per page, front page)
Inputs: blogname, page_on_front, show_on_front, page_for_posts, +2 more.
wp_update_tagC
Update a WordPress tag
Inputs: id (required), name, slug, description.
wp_update_widget_instanceB
Update a text or custom_html widget instance by widget ID
Inputs: id (required), text, title, content.
wp_update_woocommerce_webhookC
Update a WooCommerce native webhook
Inputs: id (required), name, topic, status, +1 more.
wp_upload_media_from_base64C
Upload media to WordPress from base64-encoded data
Inputs: data (required), alt, title, caption, +2 more.
wp_upload_media_from_urlA
Upload media to WordPress from a remote URL
Inputs: url (required), alt, title, caption, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 149 tools
Many tools are clearly separated by resource type, but there are notable overlaps: wp_elementor_update_element is a general tool that subsumes wp_elementor_update_text/button/image, and wp_update_product overlaps with wp_update_product_price. Similarly, the line between generic CPT tools and concrete post/page/product tools can be blurry. Overall, descriptions help but the large surface creates real selection ambiguity.
Every tool follows the same wp_verb_noun snake_case pattern. List/get/create/update/delete are used predictably across all resource types, and specialized actions like restore, clone, purge, and audit also follow the convention consistently. No mixed casing or random verb styles are present.
With 149 tools, this is an extreme count that goes well beyond what an agent can efficiently navigate or reliably select from. Even a broad WordPress control surface does not justify this many individual operations, and the count strongly harms coherence and usability.
The surface is exceptionally broad: posts, pages, media, users, comments, taxonomies, menus, plugins, themes, settings, SEO, Elementor, WooCommerce, forms, webhooks, redirects, snapshots, revisions, and audits are all covered. Minor gaps exist—such as no user update/delete, no menu create/update/delete, and no form submission get/delete—but they do not block most workflows.
Maintenance
Related MCP Connectors
WordPress MCP server: publish posts, AI images, SEO and full site management, self-hosted
Secure MCP Server for WordPress connects AI assistants and agents to WordPress with secure, controlled access. It lets AI interact with WordPress through MCP while helping organizations manage access, enforce policies, protect non-human identities (NHI), and require human approval for sensitive actions. Use it to securely connect tools such as ChatGPT, Claude, and Cursor with WordPress. Marketplace Link: https://wordpress.org/plugins/miniorange-secure-mcp-server/ Official website: https://plugins.miniorange.com/mcp-server-ai-policy-enforcement-wordpress ChatGpt Marketplace: https://chatgpt.com/plugins/plugin_asdk_app_6a312802286c8191bad0a7278a4e53ef Claude Marketplace: https://claude.ai/directory/miniorange-mcp-for-wordpress Cursor Marketplace: https://cursor.com/marketplace/miniorange
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
Free MCP server for WordPress: Claude and ChatGPT connect with OAuth. No account, cap or API key.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for WordPress automation that enables users to manage content, themes, and site configurations using AI-driven workflows and the WordPress REST API. It provides a wide array of tools for site planning, management, and optimization compatible with tools like Cursor and Claude.51 npm1ISC
- AlicenseBqualityDmaintenanceMCP server that gives AI tools full WordPress management via WP-CLI. 30+ tools for themes, plugins, posts, menus, users, database, scaffolding, and cache. Works locally or over SSH.3420 npm6MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables AI agents to manage WordPress sites, including Elementor page building, content CRUD, plugin management, and site configuration via the WordPress REST API.51 npmISC
- AlicenseNot gradedqualityDmaintenanceMCP server for WordPress content management that provides a secure interface for AI assistants to interact with WordPress sites, enabling content creation, editing, and media management without destructive operations.MIT