WordPress MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WORDPRESS_URL | Yes | The URL of your WordPress site | |
| WORDPRESS_PASSWORD | Yes | Your WordPress application password | |
| WORDPRESS_USERNAME | Yes | Your WordPress admin username |
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 |
|---|---|
| wordpress_create_postC | Create a new WordPress post with full control over all post properties |
| wordpress_update_postC | Update an existing post - can modify any post property |
| wordpress_delete_postA | Delete a post. Set force=true to permanently delete, otherwise moves to trash |
| wordpress_get_postsC | Get posts with advanced filtering: search, author, categories, tags, status, ordering |
| wordpress_get_postA | Get detailed information about a specific post by ID |
| wordpress_search_postsB | Search posts by keyword - searches title, content, and excerpt |
| wordpress_schedule_postC | Schedule a post for future publication. Date format: YYYY-MM-DDTHH:MM:SS |
| wordpress_publish_postB | Publish a draft or pending post immediately |
| wordpress_duplicate_postC | Duplicate an existing post with optional new title |
| wordpress_get_post_revisionsA | Get all revisions/edit history for a post |
| wordpress_bulk_create_postsB | Create multiple posts in one operation - efficient for batch content generation |
| wordpress_bulk_update_postsB | Update multiple posts in one operation - efficient for batch modifications |
| wordpress_bulk_delete_postsC | Delete multiple posts in one operation |
| wordpress_create_pageC | Create a new WordPress page with hierarchy support |
| wordpress_update_pageC | Update an existing page |
| wordpress_get_pagesC | Get pages with hierarchy and ordering |
| wordpress_delete_pageC | Delete a page |
| wordpress_upload_mediaA | Upload image or file to WordPress media library (provide base64 encoded file) |
| wordpress_get_mediaC | Get media library files with filtering by type |
| wordpress_update_mediaC | Update media file metadata (alt text, caption, title) |
| wordpress_delete_mediaC | Delete a media file from library |
| wordpress_set_featured_imageC | Set featured image (thumbnail) for a post |
| wordpress_bulk_optimize_imagesC | Bulk optimize images (compress all images) |
| wordpress_convert_to_webpC | Convert image to WebP format |
| wordpress_get_unused_mediaB | Find unused media files in library |
| wordpress_bulk_delete_mediaC | Delete multiple media files |
| wordpress_get_media_analyticsA | Get media library storage usage statistics |
| wordpress_create_userC | Create a new WordPress user with roles |
| wordpress_get_usersC | Get WordPress users with role filtering |
| wordpress_update_userB | Update user information (name, email, roles, password) |
| wordpress_delete_userB | Delete a user (reassign their content to another user) |
| wordpress_create_categoryC | Create a new category with hierarchical support |
| wordpress_get_categoriesA | Get all categories with hierarchy |
| wordpress_update_categoryB | Update category name, description, or parent |
| wordpress_delete_categoryD | Delete a category |
| wordpress_create_tagD | Create a new tag |
| wordpress_get_tagsB | Get all tags |
| wordpress_create_commentB | Create a comment on a post |
| wordpress_get_commentsC | Get comments with filtering by post and status |
| wordpress_update_commentB | Update comment (approve, spam, trash, edit content) |
| wordpress_delete_commentC | Delete a comment |
| wordpress_get_site_infoB | Get complete WordPress site information including available API routes |
| wordpress_test_connectionB | Test WordPress connection and authentication |
| wordpress_get_settingsB | Get WordPress site settings |
| wordpress_update_settingsB | Update site settings (title, description, timezone, etc) |
| wordpress_get_pluginsB | Get all installed WordPress plugins |
| wordpress_get_themesA | Get all installed WordPress themes |
| wordpress_set_seo_metaC | Set SEO metadata (Yoast SEO, Rank Math, All-in-One SEO compatible) |
| wordpress_set_custom_metaC | Set custom post metadata field - useful for custom fields and plugins |
| wordpress_read_fileC | Read file contents from WordPress (themes, plugins, etc.) |
| wordpress_list_filesC | List files in a WordPress directory |
| wordpress_file_infoB | Get file information (size, modified date, permissions) |
| wordpress_write_fileB | Write or create file with security validation and optional backup |
| wordpress_delete_fileC | Delete file with optional backup |
| wordpress_copy_fileC | Copy file to another location within WordPress |
| wordpress_move_fileB | Move or rename file within WordPress |
| wordpress_get_themes_detailedB | Get detailed information about all installed themes |
| wordpress_activate_themeB | Activate a theme (switch to it as the active theme) |
| wordpress_get_active_themeA | Get the currently active theme |
| wordpress_create_child_themeB | Create a child theme from a parent theme |
| wordpress_get_theme_modsB | Get theme customizer settings (Appearance → Customize data) |
| wordpress_delete_themeB | Delete a theme (cannot delete active theme) |
| wordpress_get_theme_jsonB | Get theme.json configuration for block themes (FSE) |
| wordpress_update_theme_jsonB | Update theme.json configuration for block themes (FSE) |
| wordpress_read_theme_fileB | Read a specific file from a theme |
| wordpress_write_theme_fileA | Write or modify a file in a theme (automatically creates backup) |
| wordpress_list_theme_filesC | List all files in a theme directory |
| wordpress_get_theme_templatesB | Get theme templates (block theme templates from WordPress API) |
| wordpress_get_template_partsA | Get theme template parts (block theme components like header, footer) |
| wordpress_get_global_stylesA | Get theme global styles (Site Editor styles) |
| wordpress_theme_existsB | Check if a theme is installed |
| wordpress_get_plugins_detailedA | Get detailed information about all installed plugins |
| wordpress_activate_pluginC | Activate a plugin |
| wordpress_deactivate_pluginC | Deactivate a plugin |
| wordpress_delete_pluginB | Delete a plugin (must be deactivated first) |
| wordpress_read_plugin_fileB | Read a specific file from a plugin |
| wordpress_write_plugin_fileA | Write or modify a file in a plugin (automatically creates backup) |
| wordpress_list_plugin_filesB | List all files in a plugin directory |
| wordpress_get_active_pluginsA | Get all currently active plugins |
| wordpress_plugin_existsB | Check if a plugin is installed |
| wordpress_get_plugin_statusC | Get status and details of a specific plugin |
| wordpress_get_menusA | Get all navigation menus |
| wordpress_create_menuC | Create a new navigation menu |
| wordpress_delete_menuC | Delete a navigation menu |
| wordpress_get_menu_itemsA | Get menu items from a specific menu or all menus |
| wordpress_create_menu_itemC | Add an item to a navigation menu |
| wordpress_update_menu_itemB | Update a menu item (title, URL, order, etc.) |
| wordpress_delete_menu_itemC | Delete a menu item |
| wordpress_get_menu_locationsA | Get all registered menu locations in the active theme |
| wordpress_assign_menu_to_locationC | Assign a menu to a theme location |
| wordpress_get_post_typesA | Get all registered post types |
| wordpress_get_post_typeB | Get details for a specific post type |
| wordpress_get_taxonomiesA | Get all registered taxonomies |
| wordpress_get_taxonomyC | Get details for a specific taxonomy |
| wordpress_get_termsA | Get terms from a taxonomy (categories, tags, or custom) |
| wordpress_create_termC | Create a new term in a taxonomy |
| wordpress_update_termC | Update a term in a taxonomy |
| wordpress_delete_termC | Delete a term from a taxonomy |
| wordpress_list_shortcodesA | Get all registered WordPress shortcodes |
| wordpress_execute_shortcodeC | Process and execute a shortcode string |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 190 tools
Many tools have clear resource-action separation (posts, users, themes, plugins), but there are overlapping pairs like wordpress_get_posts vs wordpress_search_posts, wordpress_get_plugins vs wordpress_get_plugins_detailed, and wordpress_get_site_info vs wordpress_get_site_health that could cause selection ambiguity. With 190 tools, the sheer volume increases the chance of picking a near-duplicate.
Most tools follow a consistent wordpress_<verb>_<noun> pattern (create_post, get_posts, delete_user). However, there are inconsistencies: wordpress_wc_is_active vs wordpress_get_plugins (non-verb prefix), wordpress_theme_exists vs get_ forms, and wordpress_run_cron vs wordpress_list_cron_jobs. These are minor deviations from an otherwise uniform convention.
190 tools is excessive for a single MCP server. The scope spans core content, themes, plugins, files, users, WooCommerce, SEO, performance, security, and database operations, creating a monolithic surface that is difficult to navigate.
The tool surface is incredibly comprehensive, covering posts, pages, media, users, taxonomies, comments, themes, plugins, menus, widgets, WooCommerce, and system maintenance. Gaps are minor (e.g., no comment spam moderation, no specific user registration tool), but most obvious workflows are represented.