OAuth 2.0 with PKCE
Full authorization code flow with Dynamic Client Registration, refresh tokens, and RFC 8414 discovery endpoints. AI clients register and authenticate automatically — no manual key sharing.
ByteCore MCP Manager turns your WordPress site into a full Model Context Protocol server. Claude, ChatGPT, Gemini, Cursor, and Windsurf can connect directly and perform real actions — authenticated via OAuth 2.0 with PKCE. 150+ tools. Zero configuration required.
One free plugin. Full MCP server. No cloud account required.
Full authorization code flow with Dynamic Client Registration, refresh tokens, and RFC 8414 discovery endpoints. AI clients register and authenticate automatically — no manual key sharing.
Posts, pages, media, users, taxonomies, menus, comments, plugins, themes, SEO, cache, revisions, WooCommerce, ACF, Elementor, Gravity Forms, and more — all exposed as MCP tools.
Every MCP tool call is logged with timestamp, tool name, client identifier, and response status. Color-coded badges for Claude, Cursor, Windsurf, ChatGPT, and Gemini. CSV export included.
Capability checks on every tool call, SHA-256 token hashing, SSRF protection on URL downloads, sensitive meta key blocklist, IP allowlist support, and 60 req/min rate limiting per IP.
Server status, MCP endpoint URL, OAuth client list, and a live activity feed — all from one admin screen. Includes a 7-day sparkline widget on the WordPress dashboard.
Register custom MCP tools from any plugin or theme using bcs_mcp_register_tool() or the bcs_mcp_tools filter. Your tools appear automatically in the AI client's tool list.
WooCommerce, ACF, Elementor, and Gravity Forms tools activate automatically when those plugins are installed.
WooCommerce, ACF, Elementor and Gravity Forms tools only appear in the AI client's tool list when those plugins are active on your site.
Every tool available to connected AI clients — with endpoint path and description.
wp_get_posts
GET
/posts
List posts with filters
wp_get_post
GET
/posts/{id}
Get a single post by ID
wp_create_post
POST
/posts
Create a new post
wp_update_post
PUT
/posts/{id}
Update an existing post
wp_delete_post
DELETE
/posts/{id}
Delete or trash a post
wp_count_posts
GET
/posts/count
Count posts by type and status
wp_get_post_types
GET
/post-types
List all registered post types
wp_duplicate_post
POST
/posts/{id}/duplicate
Duplicate a post as draft
wp_schedule_post
PUT
/posts/{id}/schedule
Schedule post for future publishing
wp_get_post_format
GET
/posts/{id}/format
Get the post format
wp_set_post_format
PUT
/posts/{id}/format
Set the post format
wp_bulk_trash_posts
DELETE
/posts/bulk-trash
Trash multiple posts by ID in one call
wp_set_post_password
PUT
/posts/{id}/password
Set or clear the password on a post
wp_get_post_statuses
GET
/post-statuses
List all registered post statuses
wp_get_pages
GET
/pages
List pages
wp_get_page
GET
/pages/{id}
Get a single page by ID
wp_create_page
POST
/pages
Create a new page
wp_update_page
PUT
/pages/{id}
Update an existing page
wp_delete_page
DELETE
/pages/{id}
Delete or trash a page
wp_duplicate_page
POST
/pages/{id}/duplicate
Duplicate a page as draft
wp_get_page_template
GET
/pages/{id}/template
Get the page template
wp_set_page_template
PUT
/pages/{id}/template
Set the page template
wp_get_media
GET
/media
List media library items
wp_get_media_item
GET
/media/{id}
Get a single media item
wp_upload_media_from_url
POST
/media/upload-url
Upload image from a URL
wp_upload_media
POST
/media/upload
Upload file from base64 content
wp_set_featured_image
PUT
/posts/{id}/featured-image
Set the featured image on a post
wp_update_media
PUT
/media/{id}
Update media metadata
wp_delete_media
DELETE
/media/{id}
Delete a media item
wp_count_media
GET
/media/count
Count media items by MIME type
wp_get_image_sizes
GET
/media/image-sizes
List all registered image sizes
wp_regenerate_thumbnails
POST
/media/regenerate
Regenerate thumbnails for one or all images
wp_get_attachment_metadata
GET
/media/{id}/metadata
Get full attachment metadata (dimensions, alt, EXIF)
wp_get_categories
GET
/categories
List all categories
wp_get_tags
GET
/tags
List all tags
wp_get_taxonomies
GET
/taxonomies
List registered taxonomies
wp_create_term
POST
/terms
Create a term in a taxonomy
wp_update_term
PUT
/terms/{id}
Update a term
wp_delete_term
DELETE
/terms/{id}
Delete a term from a taxonomy
wp_add_post_terms
PUT
/posts/{id}/terms
Add terms to a post
wp_count_terms
GET
/terms/count
Count terms in a taxonomy
wp_get_term_meta
GET
/terms/{id}/meta
Get term meta values
wp_update_term_meta
PUT
/terms/{id}/meta
Update term meta value
wp_delete_term_meta
DELETE
/terms/{id}/meta
Delete a term meta key
wp_get_comments
GET
/comments
List comments
wp_create_comment
POST
/comments
Create a new comment on a post
wp_delete_comment
DELETE
/comments/{id}
Delete or trash a comment
wp_get_pending_comments
GET
/comments/pending
Get comments awaiting moderation
wp_approve_comment
PUT
/comments/{id}/approve
Approve a pending comment
wp_spam_comment
PUT
/comments/{id}/spam
Mark a comment as spam
wp_trash_comment
PUT
/comments/{id}/trash
Trash a comment
wp_update_comment
PUT
/comments/{id}
Update comment content or author fields
wp_get_users
GET
/users
List WordPress users
wp_get_user
GET
/users/{id}
Get a single user by ID
wp_update_user
PUT
/users/{id}
Update an existing user
wp_delete_user
DELETE
/users/{id}
Delete a WordPress user
wp_get_user_sessions
GET
/users/{id}/sessions
Get active sessions for a user
wp_destroy_user_sessions
DELETE
/users/{id}/sessions
Destroy all sessions for a user
wp_get_user_roles
GET
/users/roles
List all registered user roles and capabilities
wp_assign_user_role
PUT
/users/{id}/role
Change a user's role
wp_get_users_by_role
GET
/users/by-role/{role}
List users filtered by role
wp_reset_user_password
POST
/users/{id}/reset-pass
Send a password reset email to a user
wp_get_post_meta
GET
/posts/{id}/meta
Get post meta values
wp_update_post_meta
PUT
/posts/{id}/meta
Update a post meta value
wp_delete_post_meta
DELETE
/posts/{id}/meta/{key}
Delete a post meta key
wp_get_user_meta
GET
/users/{id}/meta
Get user meta values
wp_update_user_meta
PUT
/users/{id}/meta
Update a user meta value
wp_delete_user_meta
DELETE
/users/{id}/meta/{key}
Delete a user meta key
wp_get_menus
GET
/menus
List all nav menus
wp_get_menu_items
GET
/menus/{id}/items
List items in a nav menu
wp_create_menu
POST
/menus
Create a new navigation menu
wp_delete_menu
DELETE
/menus/{id}
Delete a navigation menu
wp_create_menu_item
POST
/menus/{id}/items
Create a new menu item
wp_update_menu_item
PUT
/menu-items/{id}
Update a menu item
wp_delete_menu_item
DELETE
/menu-items/{id}
Delete a menu item
wp_reorder_menu_items
PUT
/menus/{id}/reorder
Reorder menu items
wp_get_nav_menu_locations
GET
/menus/locations
List theme menu locations and assigned menus
wp_assign_menu_to_location
PUT
/menus/locations/{slug}
Assign a menu to a theme location
wp_get_plugins
GET
/plugins
List all installed plugins
wp_activate_plugin
POST
/plugins/activate
Activate an installed plugin
wp_deactivate_plugin
POST
/plugins/deactivate
Deactivate an active plugin
wp_get_themes
GET
/themes
List all installed themes
wp_get_active_theme
GET
/themes/active
Get active theme info
wp_get_theme_mods
GET
/themes/mods
Get all theme modifications
wp_get_custom_css
GET
/themes/custom-css
Get the active theme custom CSS
wp_get_seo_meta
GET
/posts/{id}/seo
Get SEO meta (Yoast / Rank Math)
wp_update_seo_meta
PUT
/posts/{id}/seo
Update SEO meta for a post
wp_get_site_info
GET
/site
Get basic site information
wp_search
GET
/search
Search WordPress content
wp_get_site_health
GET
/site/health
Get site health info
wp_get_option
GET
/options/{name}
Get a WordPress option value
wp_get_plugin_settings
GET
/options/plugin
Get plugin option values by slug
wp_send_email
POST
/email
Send an email via wp_mail
wp_list_cron_jobs
GET
/cron
List scheduled WP-Cron jobs
wp_flush_rewrite_rules
POST
/site/flush-rewrites
Flush and regenerate rewrite rules
wp_run_shortcode
POST
/shortcode
Execute a shortcode and return HTML output
wp_get_post_revisions
GET
/posts/{id}/revisions
List revisions for a post
wp_restore_revision
PUT
/revisions/{id}/restore
Restore post to a previous revision
wp_get_permalink_structure
GET
/site/permalinks
Get the permalink structure
wp_get_reusable_blocks
GET
/blocks
List reusable blocks
wp_create_reusable_block
POST
/blocks
Create a new reusable block
wp_get_transient
GET
/cache/transient/{key}
Get a transient value
wp_set_transient
PUT
/cache/transient/{key}
Set a transient value with expiration
wp_delete_transient
DELETE
/cache/transient/{key}
Delete a transient
wp_flush_cache
POST
/cache/flush
Flush the WordPress object cache
wp_purge_cache
POST
/cache/purge
Purge full-page cache (Rocket, W3TC, etc.)
wp_parse_blocks
POST
/blocks/parse
Parse Gutenberg block structure from post content
wp_get_block_patterns
GET
/blocks/patterns
List all registered block patterns
wp_get_registered_sidebars
GET
/widgets/sidebars
List all registered widget areas
wp_get_sidebar_widgets
GET
/widgets/sidebars/{sidebar}
Get widgets in a specific sidebar
wp_get_server_info
GET
/dev/server-info
PHP version, memory limits, WordPress environment
wp_get_database_size
GET
/dev/db-size
Size and row count for every database table
wp_optimize_tables
POST
/dev/db-optimize
Optimize all WordPress database tables
wp_search_replace_content
POST
/dev/search-replace
Find & replace text in post content (dry-run support)
wp_get_debug_log
GET
/dev/debug-log
Read last N lines from wp-content/debug.log
wc_get_products
GET
/wc/products
List WooCommerce products
wc_create_product
POST
/wc/products
Create a new WooCommerce product
wc_update_product
PUT
/wc/products/{id}
Update a WooCommerce product
wc_delete_product
DELETE
/wc/products/{id}
Delete a WooCommerce product
wc_get_orders
GET
/wc/orders
List WooCommerce orders
wc_get_order
GET
/wc/orders/{id}
Get full details of a single order
wc_update_order_status
PUT
/wc/orders/{id}/status
Update order status
wc_refund_order
POST
/wc/orders/{id}/refund
Create a refund for an order
wc_get_order_notes
GET
/wc/orders/{id}/notes
List notes and history for an order
wc_add_order_note
POST
/wc/orders/{id}/notes
Add a private or customer note to an order
wc_get_customers
GET
/wc/customers
List WooCommerce customers
wc_get_coupons
GET
/wc/coupons
List WooCommerce coupons
wc_create_coupon
POST
/wc/coupons
Create a new coupon
wc_get_coupon
GET
/wc/coupons/{id}
Get a single coupon by ID or code
wc_update_coupon
PUT
/wc/coupons/{id}
Update an existing coupon
wc_delete_coupon
DELETE
/wc/coupons/{id}
Delete a coupon
wc_get_inventory
GET
/wc/inventory
Get product inventory levels
wc_update_stock
PUT
/wc/products/{id}/stock
Update product stock quantity
wc_get_product_categories
GET
/wc/categories
List WooCommerce product categories
wc_get_store_stats
GET
/wc/stats
Get store revenue, orders, and customer stats
wc_get_shipping_zones
GET
/wc/shipping-zones
List shipping zones and their methods
wc_get_payment_gateways
GET
/wc/payment-gateways
List configured payment gateways
wc_get_tax_rates
GET
/wc/tax-rates
List WooCommerce tax rates and classes
wc_get_product_variations
GET
/wc/products/{id}/variations
List all variations of a variable product
wc_get_variation
GET
/wc/products/{id}/variations/{v}
Get a single product variation
wc_create_variation
POST
/wc/products/{id}/variations
Create a variation on a variable product
wc_update_variation
PUT
/wc/products/{id}/variations/{v}
Update variation price/stock/attributes
wc_delete_variation
DELETE
/wc/products/{id}/variations/{v}
Delete a product variation
wc_batch_update_variations
PUT
/wc/products/{id}/variations
Bulk-update multiple variations at once
wc_get_product_attributes
GET
/wc/attributes
List all global product attributes
wc_create_product_attribute
POST
/wc/attributes
Create a new global product attribute
wc_get_attribute_terms
GET
/wc/attributes/{id}/terms
List terms for a product attribute
wc_set_product_attributes
PUT
/wc/products/{id}/attributes
Set attributes on a product
wp_get_acf_fields
GET
/acf/fields/{post_id}
Get all ACF fields for a post
wp_update_acf_field
PUT
/acf/fields/{post_id}
Update an ACF field value
wp_get_acf_field_groups
GET
/acf/groups
List all ACF field groups
elementor_list_templates
GET
/elementor/templates
List all saved Elementor templates
elementor_clone_page
POST
/elementor/pages/{id}/clone
Clone a page and its Elementor data
elementor_get_page_outline
GET
/elementor/pages/{id}/outline
Get sections/widgets structure of a page
elementor_bulk_replace_text
POST
/elementor/replace-text
Find and replace text across all Elementor pages
elementor_swap_image
POST
/elementor/swap-image
Replace an image URL across all pages
elementor_import_template
POST
/elementor/templates
Import an Elementor template from JSON
gf_get_forms
GET
/gf/forms
List all Gravity Forms
gf_get_entries
GET
/gf/forms/{id}/entries
Get entries for a Gravity Form
WooCommerce, ACF, Elementor, and Gravity Forms tools only appear when those plugins are active on your site.
No developer. No API keys to manage manually. Just WordPress and your AI client.
Install from WordPress.org and activate. The MCP server starts immediately — no configuration needed to enable the endpoint.
Copy the MCP URL from MCP Manager → Dashboard and add it to Claude.ai, Claude Desktop, Cursor, or any MCP-compatible client. The client handles OAuth registration automatically.
You'll be redirected to an authorization screen in your own wp-admin. Approve once — the AI client manages tokens from that point. Ask Claude to write a post, update products, or query any WordPress data.
Anything else? Open an issue on the WordPress.org support forum.
MCP is an open standard created by Anthropic that lets AI assistants connect to external tools and data sources in a structured, authenticated way. When your WordPress site runs an MCP server, Claude and other AI clients can see and use your WordPress data — writing posts, managing products, updating SEO — without you needing to copy/paste anything.
Any client that implements the MCP specification. Tested and confirmed working with Claude (claude.ai and Claude Desktop), ChatGPT, Cursor, and Windsurf. Gemini uses the same standard protocol and is expected to work via Google AI Studio's MCP integrations. The plugin uses Streamable HTTP transport with a legacy SSE fallback so it works with both new and older client versions.
Every tool call enforces WordPress capabilities — the AI can only do what your user account is allowed to do. Tokens are stored as SHA-256 hashes, never plaintext. PKCE is required on every OAuth flow. Sensitive meta keys (passwords, session tokens, API secrets) are on a permanent blocklist. You can further restrict access with the IP allowlist feature.
No. The plugin contains no analytics, telemetry, or tracking of any kind. The only outbound HTTP call it makes is when the wp_upload_media_from_url tool is explicitly invoked by your connected AI client to download an image — and even then it connects to the URL the AI specified, not to any ByteCore Stack server.
No. They are included in the plugin and activate automatically when their respective plugins are detected. If WooCommerce is not installed, WooCommerce tools simply don't appear in the AI's tool list — no errors, no extra configuration.
This usually means the OAuth rewrite rules haven't been flushed. Log in to wp-admin once — the plugin auto-flushes on the first admin page load after activation or update. If the error persists, go to Settings → Permalinks and click Save Changes to force a full rewrite flush.
Yes. Use bcs_mcp_register_tool( 'my_tool', 'Description', $schema, $callback ) from any plugin or theme, or hook into the bcs_mcp_tools filter directly. Your custom tools appear in the AI client's tool list alongside the built-in 150+.
Free to install. No account required. No paid plan.
Connect Claude once and let it manage your site.