mcp-wordpress
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WP_SITE_URL | Yes | WordPress site URL (e.g. https://your-site.com) | |
| WP_USERNAME | Yes | WordPress username | |
| WP_APP_PASSWORD | Yes | Application Password | |
| WP_FLUSH_ENDPOINT | No | Custom REST endpoint for cache flush (default: wp-mcp/v1/flush-cache) | wp-mcp/v1/flush-cache |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| wp_list_pagesB | List WordPress pages with ID, title, slug and status. |
| wp_list_postsB | List WordPress posts with ID, title, slug and status. |
| wp_get_pageA | Get full content of a WordPress page by ID or slug. Returns raw content with shortcodes visible. |
| wp_get_postA | Get full content of a WordPress post by ID. Returns raw content. |
| wp_update_page_contentA | Replace the entire raw content of a WordPress page. Read the page first and pass its full replacement content. |
| wp_update_post_contentA | Replace the entire raw content of a WordPress post. |
| wp_list_mediaA | List media files in the WordPress media library with URLs. |
| wp_create_postB | Create a WordPress post. Supports dry-run previews. |
| wp_update_postB | Update selected fields on a WordPress post by ID or slug. |
| wp_delete_postA | Trash a WordPress post, or permanently delete it with force:true. |
| wp_create_pageB | Create a WordPress page. Supports dry-run previews. |
| wp_update_pageB | Update selected fields on a WordPress page by ID or slug. |
| wp_delete_pageA | Trash a WordPress page, or permanently delete it with force:true. |
| wp_list_categoriesC | List WordPress categories with IDs, slugs, and usage counts. |
| wp_create_categoryC | Create a WordPress category. |
| wp_ensure_categoryA | Return an existing category, or create it. Safe to call repeatedly. |
| wp_update_categoryC | Update a WordPress category. |
| wp_delete_categoryB | Permanently delete a WordPress category. |
| wp_list_tagsB | List WordPress tags with IDs, slugs, and usage counts. |
| wp_create_tagC | Create a WordPress tag. |
| wp_ensure_tagA | Return an existing tag, or create it. Safe to call repeatedly. |
| wp_update_tagC | Update a WordPress tag. |
| wp_delete_tagB | Permanently delete a WordPress tag. |
| wp_upload_mediaB | Upload media from a local path, URL, or base64 source, then set attachment metadata. |
| wp_get_mediaA | Get a media attachment by ID. |
| wp_update_mediaC | Update media attachment metadata. |
| wp_delete_mediaA | Permanently delete a media attachment. WordPress requires force:true. |
| wp_set_featured_imageB | Assign a media attachment as the featured image of a post or page. |
| wp_list_shortcodesC | Parse and list all shortcodes found in a page's content. Useful for understanding page structure. |
| wp_replace_shortcodeC | Find a specific shortcode in a page and replace it with new content. Optionally match an attribute value. |
| wp_insert_shortcodeC | Insert new content before or after an existing shortcode in a page. |
| wp_elementor_get_shortcode_contentC | Experimental and currently unavailable: Elementor protected meta is not exposed safely by WordPress REST. |
| wp_elementor_update_shortcode_contentA | Experimental and currently unavailable: direct _elementor_data writes are silently discarded by WordPress REST. |
| wp_blocks_listC | List a post/page Gutenberg outline. Use paths to read and hashes to edit. |
| wp_blocks_getB | Get one Gutenberg block by path, hash, anchor, metadata name, or unambiguous query. |
| wp_blocks_findB | Find all matching Gutenberg blocks and return paths and hashes for safe follow-up edits. |
| wp_blocks_insertB | Insert Gutenberg block(s). Hash references prevent overwriting a block changed since it was read. Supports dry-run. |
| wp_blocks_replaceA | Replace one Gutenberg block with zero or more blocks. Hash references prevent overwriting a block changed since it was read. Supports dry-run. |
| wp_blocks_updateA | Update Gutenberg block attributes or inner HTML. Hash references prevent overwriting a block changed since it was read. Supports dry-run. |
| wp_blocks_deleteA | Delete one Gutenberg block. Hash references prevent overwriting a block changed since it was read. Supports dry-run. |
| wp_blocks_moveA | Move one Gutenberg block relative to another. Hash references prevent overwriting a block changed since it was read. Supports dry-run. |
| wp_list_revisionsB | List revisions of a WordPress post or page with pagination. |
| wp_get_revisionB | Get one post/page revision, including its raw title, excerpt, and content. |
| wp_diff_revisionC | Compare the current raw content of a post/page with one revision. |
| wp_restore_revisionC | Restore a revision. Prefers the optional wp-mcp companion endpoint; otherwise rewrites core REST title, excerpt, and content. |
| wp_list_sidebarsA | List registered classic-theme sidebars and their ordered widget IDs. |
| wp_list_widgetsB | List widgets, optionally by sidebar, including structured advertisement inventory metadata. |
| wp_get_widgetB | Get a widget with rendered output, raw instance, sidebar, and advertisement metadata. |
| wp_create_widgetB | Create a block widget. Supply exactly one of block_content or structured ad_creative. Supports dry-run and automatic cache purge when available. |
| wp_update_widgetA | Update widget content and/or move it to another sidebar. Supply at most one of block_content or ad_creative. Supports dry-run. |
| wp_delete_widgetA | Remove a widget. force:false moves it to wp_inactive_widgets; force:true permanently deletes it. |
| wp_move_widgetB | Move and precisely order a widget in a sidebar. position is a zero-based final index. |
| wp_list_content_blocksB | List existing Blocksy Content Blocks, including slug/hook clues and structured advertisement inventory. Does not create positioning slots. |
| wp_get_content_blockA | Get one existing Blocksy Content Block by ID or slug with raw content and ad inventory metadata. |
| wp_update_content_blockA | Update an existing positioned Blocksy Content Block. Supply exactly one of content or structured ad_creative. Never creates orphan slots. |
| wp_list_menusB | List classic navigation menus and assigned theme locations. |
| wp_get_menuA | Get a classic menu by ID or slug. |
| wp_create_menuC | Create classic menu. Supports dry-run. |
| wp_update_menuC | Update classic menu. Supports dry-run. |
| wp_delete_menuB | Permanently delete a classic menu; WordPress requires force:true. |
| wp_list_menu_locationsA | List read-only theme menu locations and their assigned menu IDs. |
| wp_assign_menu_locationA | Assign a location through the menu's writable locations field. The menu-locations endpoint itself is read-only. |
| wp_list_menu_itemsC | List classic menu items in menu order. |
| wp_get_menu_itemB | Get one classic menu item. |
| wp_create_menu_itemC | Create classic menu item. Supports dry-run. |
| wp_update_menu_itemC | Update classic menu item. Supports dry-run. |
| wp_delete_menu_itemB | Permanently delete a classic menu item. |
| wp_get_settingsA | Read WordPress site settings, including static-front-page configuration. |
| wp_update_settingsC | Update WordPress settings. Changing the front page is site-wide and supports dry-run. |
| wp_set_blocksy_page_layoutB | Set a Blocksy page to a right sidebar, left sidebar, or no sidebar through the optional companion. Reads the current protected page option and supports dry-run. |
| wp_list_synced_patternsB | List reusable synced patterns stored in wp_block. |
| wp_get_synced_patternA | Get a synced pattern with raw Gutenberg content. |
| wp_create_synced_patternC | Create synced pattern. Supports dry-run. |
| wp_update_synced_patternC | Update synced pattern. Supports dry-run. |
| wp_delete_synced_patternC | Permanently delete a synced pattern. |
| wp_list_block_patternsB | List registered read-only core, theme, and plugin patterns; optionally filter client-side. |
| wp_get_block_patternA | Get one registered read-only pattern by its exact namespace/name. |
| wp_whoamiA | Show the authenticated WordPress user and granted capabilities. Useful for diagnosing 403 errors. |
| wp_flush_cacheA | Flush WordPress, Elementor, and page caches. Requires the optional cache helper mu-plugin. |
| wp_site_infoB | Get basic WordPress site information. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/leonardobora/mcp-wordpress'
If you have feedback or need assistance with the MCP directory API, please join our Discord server