Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MODENoOperational mode: read-only, safe, or fullsafe
WP_URLYesBase URL of your WordPress site
WP_USERYesWordPress username
TOOLSETSNoComma-separated list of tool sets: posts,pages,media,taxonomies,search,seo,bulk,system
LOG_LEVELNoLog level: debug, info, warn, errorinfo
TIMEOUT_MSNoPer-request timeout30000
SEO_PROVIDERNoSEO provider: auto, bridge, yoast, rankmath, nullauto
AUDIT_LOG_PATHNoWhere write ops are logged~/.local/state/mcp-wordpress/audit.log
RATE_LIMIT_RPSNoRequests per second cap10
WP_APP_PASSWORDYesApplication Password (24 chars, with or without spaces)
CACHE_TTL_SECONDSNoIn-memory cache TTL300

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

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
wp_health_checkA

Verify connectivity, authentication, and capabilities of the configured WordPress site. Returns reachability, REST API namespaces, and whether the MCP Bridge companion plugin is installed.

wp_get_site_infoA

Read site-level configuration: title, tagline, URL, language, timezone, date/time formats, posts-per-page, sitemap URL, and admin email (if accessible). Combines /wp-json/ root with /wp-json/wp/v2/settings (admin-only). Sitemap URL points to the native /wp-sitemap.xml (WP 5.5+).

wp_detect_page_builderA

Detect whether Elementor, Divi, Beaver Builder, or WPBakery (visual page builders) are active. These store content outside of post_content, which limits what the MCP can edit. Requires the mcp-wordpress-bridge companion plugin to enumerate plugins.

wp_update_site_settingsA

Update site-wide settings (title, tagline, URL, language, timezone, default category, posts_per_page, etc.). Requires manage_options capability. Treats this as a publish-tier change because it affects every visitor to the site.

wp_posts_listA

List blog posts with filters: status, search, author, categories, tags, date range, ordering. Returns normalized post summaries (id, title, excerpt, slug, status, dates, author, taxonomies). Use wp_posts_get to fetch full content.

wp_posts_getA

Fetch a single blog post by ID. Returns the normalized post with full content (rendered HTML). Use context=edit (default) to include raw fields when available; context=view for the public-facing rendered version only.

wp_posts_createA

Create a new blog post. Default status is "draft" (safe). Use status="publish" to publish immediately (requires publish tier), or status="future" with date to schedule.

wp_posts_updateA

Partially update an existing post by id. Only fields provided are changed. Status transitions to publish/future/private require the publish tier.

wp_posts_publishA

Publish an existing post by id (sets status to "publish"). Shortcut for wp_posts_update with status="publish". Requires publish tier.

wp_posts_scheduleA

Schedule a post for future publication by setting status="future" and date. The date must be in the future. Requires publish tier.

wp_posts_deleteA

Delete a post. Default sends it to the trash (recoverable). Pass force=true with confirm="DELETE_PERMANENTLY_" to permanently delete (requires MODE=full).

wp_posts_get_revisionsA

List revisions of a post (autosaves + manual revisions). Returns each revision with id, parent post id, author, dates, and rendered title/content/excerpt. Read-only.

wp_posts_get_revisionA

Fetch a single revision of a post by id. Use wp_posts_get_revisions to list revisions, then this to read a specific one's content for diffing or restoration.

wp_posts_restore_revisionA

Restore a previous revision of a post. Reads the revision content + title + excerpt, then writes them back to the parent post. The previous state of the parent becomes a new revision automatically.

wp_pages_listA

List pages with filters. Pages support a hierarchy via parent (use parent=N to list direct children of page N, parent=0 for top-level). Default orders by menu_order ascending — the typical navigation order.

wp_pages_getA

Fetch a single page by ID with full content. Use context=edit (default) for raw fields, context=view for the public rendered version only.

wp_pages_createA

Create a new page. Default status="draft" (safe). Supports hierarchy via parent (page id) and ordering via menu_order. Publish/future/private require publish tier.

wp_pages_updateA

Partially update an existing page by id. Only provided fields are changed. Status transitions to publish/future/private require the publish tier. Use parent to re-parent the page in the hierarchy.

wp_pages_deleteA

Delete a page. Default sends it to the trash (recoverable). Pass force=true with confirm="DELETE_PERMANENTLY_" to permanently delete (requires MODE=full). Deleting a parent page with children: WP behavior is to orphan children (their parent becomes 0); the MCP does not auto-cascade.

wp_pages_get_revisionsA

List revisions/autosaves of a page.

wp_pages_get_revisionC

Fetch a single revision of a page by id.

wp_pages_restore_revisionA

Restore a previous revision of a page (writes revision title/content/excerpt back to the parent page).

wp_media_listA

List media library items with filters. Filter by media_type (image/video/audio/file), exact mime_type (e.g. "image/png"), search text, date range, or parent post. Returns normalized media including source_url and thumbnails.

wp_media_uploadA

Upload a file to the WordPress media library. Provide EITHER url (the server will fetch the URL and forward the bytes) OR data (a base64-encoded string) with filename and mime_type. Optional metadata: title, alt_text, caption, description, post (attach to a post). Max 25 MB.

wp_media_set_alt_textA

Update accessibility and descriptive metadata of a media item: alt_text (required), caption and description (optional). Useful for bulk SEO improvements on existing media. Empty alt_text is allowed (explicitly clearing).

wp_media_deleteA

Delete a media item. Default sends to trash (recoverable). Pass force=true with confirm="DELETE_PERMANENTLY_" to permanently delete (requires MODE=full). Note: WP's native UI offers no trash recovery for media by default — many sites have ATTACHMENT_DEFAULT_TRASH disabled. Verify your site's behavior before relying on the trash.

wp_media_getA

Fetch a single media item by id with all metadata: dimensions, file size, thumbnails, alt text, caption, attached post.

wp_media_updateA

Generic partial update of media item fields: title, alt_text, caption, description, attached post, slug, status. Use wp_media_set_alt_text for the focused alt+caption+description tool when that's all you need.

wp_taxonomies_list_categoriesA

List blog categories with filters: search, parent (for hierarchical children), hide_empty (categories with no posts), ordering. Returns terms with post counts.

wp_taxonomies_get_categoryB

Fetch a single category by id.

wp_taxonomies_create_categoryA

Create a new blog category. Supports hierarchy via parent (category id). The name is required; slug auto-generated from name if omitted.

wp_taxonomies_update_categoryA

Update a category. Can change name, slug, description, or re-parent.

wp_taxonomies_delete_categoryA

Delete a category (WP REST has no trash for terms — always permanent). Required: confirm="DELETE_CATEGORY_". Requires MODE=full. Posts in this category are NOT deleted; they lose the category assignment.

wp_taxonomies_list_tagsA

List blog tags. Tags are flat (no hierarchy). Returns terms with post counts. Filter by search text or hide tags with zero posts.

wp_taxonomies_get_tagA

Fetch a single tag by id.

wp_taxonomies_create_tagA

Create a new blog tag. Tags are flat (no parent). The name is required; slug auto-generated from name if omitted.

wp_taxonomies_update_tagA

Update a tag. Can change name, slug, or description.

wp_taxonomies_delete_tagA

Delete a tag (always permanent — no trash). Required: confirm="DELETE_TAG_". Requires MODE=full.

wp_taxonomies_assign_to_postA

Replace the categories and/or tags of a post. The arrays REPLACE existing taxonomies (use wp_posts_get first if you want to preserve existing terms and add to them).

wp_search_postsA

Full-text search across posts, pages, custom post types, and terms via the WP /wp/v2/search endpoint. Returns a lightweight result shape (id, title, url, type, subtype). Filter by type=post (default search target) or type=term (taxonomies). For richer content fetch the hit by id via wp_posts_get / wp_pages_get.

wp_seo_detect_providerA

Detect which SEO provider is active for this WordPress site (bridge / yoast / rankmath / null) and report its capabilities. Use this before calling wp_seo_set_meta to know what fields will actually be persisted and rendered.

wp_seo_get_metaA

Read the current SEO meta for a post (title, description, OG, Twitter, canonical, robots, JSON-LD, focus_keyword). The meta is read from whichever SEO provider is active — call wp_seo_detect_provider first to know which one.

wp_seo_set_metaA

Write SEO meta for a post via the active provider. Pass any subset of: title, description, og_title, og_description, og_image (URL), og_type, twitter_card, canonical (URL), robots ({noindex,nofollow,noarchive,nosnippet,noimageindex}), json_ld_article (object), focus_keyword. Fields not supported by the active provider are silently ignored — call wp_seo_detect_provider to know which features apply.

wp_seo_analyze_postA

Run SEO/content analysis on a post: readability (Flesch-Kincaid in ES/EN/PT), keyword density, headings hierarchy lint, content length stats. Optionally pass focus_keyword to get presence stats (in title, first paragraph, headings) and density of that exact term.

wp_seo_suggest_internal_linksA

Suggest internal links: given a keyword or a post_id, returns a ranked list of related published posts to link to. Ranking weights: title matches (3x) > excerpt matches (1x) + recency boost. The source post is excluded when post_id is provided.

wp_bulk_find_replaceA

Find and replace a literal substring across post content. Requires MODE=full. Dry-run by default (returns count + sample of changes). To apply, set dry_run=false and provide the confirm token returned by the dry-run. Operates on rendered post_content only; does not touch titles, excerpts, or meta.

wp_bulk_update_seoA

Apply the same SEO meta to many posts at once. Requires MODE=full. Dry-run by default (returns count + sample). To apply, set dry_run=false with the confirm token from dry-run. Writes via the active SEO provider — fields unsupported by the provider are silently dropped.

wp_comments_listA

List comments with filters: post, parent, author, status (approved/hold/spam/trash/any), type, search, ordering. Hold status = pending moderation.

wp_comments_getA

Fetch a single comment by id, including author email (edit context).

wp_comments_createA

Create a comment (or reply via parent). When author is omitted, author_name + author_email are required.

wp_comments_updateA

Update a comment. Moderation actions: status=approved (publish), hold (pending), spam, trash. Can also edit content and author fields.

wp_comments_deleteA

Delete a comment. Default to trash (recoverable). force=true with confirm="DELETE_PERMANENTLY_" permanently deletes (requires MODE=full).

wp_users_listA

List users. Filter by search text, roles (comma-separated array), who=authors (only users who have published posts). Context=edit returns email + locale + capabilities (requires manage_options).

wp_users_getA

Fetch a single user by id. Edit context returns email, locale, capabilities (requires manage_options).

wp_users_get_currentA

Return the user associated with the Application Password used to authenticate. Useful for "whoami" checks and discovering current role/capabilities.

wp_users_createA

Create a new WordPress user. Required: username, email, password. Optional: name, first_name, last_name, url, description, roles. Roles default to subscriber.

wp_users_updateA

Partially update a user by id. Can change profile fields, password, or roles. Self-update permitted; updating other users requires elevated capabilities.

wp_users_deleteA

Delete a user (WP REST has no trash for users — always permanent). Required: id, reassign (user id to inherit deleted user's content), confirm="DELETE_USER_". Requires MODE=full.

wp_get_post_typesA

List all post types registered on this site, including built-in (post, page) and custom (WooCommerce products, ACF CPTs, etc.). Returns rest_base, hierarchy, supported features, taxonomies. Use this before wp_cpt_* tools.

wp_get_taxonomiesA

List all taxonomies registered on this site, including custom (e.g., product_cat for WooCommerce). Optional type filter to list only taxonomies associated with a given post type.

wp_get_post_statusesA

List all available post statuses (built-in: publish/draft/pending/private/future and any custom statuses).

wp_get_site_capabilitiesA

High-level summary of what this WP install supports: list of post types (slugs only), taxonomies (slugs only), REST API namespaces, whether the mcp-wordpress-bridge plugin is installed. Useful as a single "what can I do here?" probe.

wp_cpt_listA

List items of any registered Custom Post Type. The post_type parameter must match the rest_base value returned by wp_get_post_types (e.g., "product" for WooCommerce, "event" for The Events Calendar). For built-in posts/pages, prefer wp_posts_list / wp_pages_list.

wp_cpt_getA

Fetch a single item of a Custom Post Type by id. post_type must match rest_base from wp_get_post_types.

wp_cpt_createA

Create a new item of any Custom Post Type. Required: post_type, title. Defaults to draft status. Pass meta object to set custom fields (subject to register_post_meta + show_in_rest registration on the WP side).

wp_cpt_updateB

Partially update an item of any CPT. Only fields provided are changed.

wp_cpt_deleteA

Delete an item of any CPT. Default to trash. force=true with confirm="DELETE_PERMANENTLY_" for hard delete (requires MODE=full).

wp_blocks_listB

List reusable Gutenberg blocks (post type wp_block). These are user-created reusable block compositions, used to insert the same content across multiple posts/pages.

wp_blocks_getA

Fetch a single reusable block by id with full content (Gutenberg block markup).

wp_blocks_createA

Create a new reusable block. Content should be Gutenberg block markup (e.g., text). Status defaults to publish (reusable blocks are typically immediately available for embedding).

wp_blocks_updateA

Partially update a reusable block. NOTE: editing a reusable block updates its content in every post/page that uses it.

wp_blocks_deleteA

Delete a reusable block. Default trash. force=true with confirm="DELETE_PERMANENTLY_" hard-deletes (MODE=full). WARNING: posts/pages referencing this block will show an empty block placeholder.

wp_batchA

Execute up to 25 WP REST requests in a single round-trip via /wp/v2/batch/v1. Use for performance when applying many independent writes. validation="require-all-validate" (default) rejects the batch if any request fails validation; "normal" runs everything best-effort.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/iamsamuelfraga/mcp-wordpress'

If you have feedback or need assistance with the MCP directory API, please join our Discord server