Skip to main content
Glama
gaupoit

WordPress MCP Server

by gaupoit

WordPress MCP Server

Manage your WordPress site with AI. Create posts, update content, and query your site—all through natural conversation.

Python 3.10+ MCP License: MIT

What is this?

WordPress MCP is a Model Context Protocol server that connects AI assistants like Claude Code and Cursor to your WordPress site via the REST API.

Instead of switching between your terminal and WordPress admin, just ask:

You: "Create a draft post about our new product launch"
You: "Show me all posts from last week"
You: "Update post 42 to published status"
You: "What plugins are installed on my site?"

Related MCP server: WordPress MCP Server

Demo

Here's a real conversation showing the draft-to-publish workflow:

You: Create a draft post titled "Why AI Tools Matter for Content Creators"

Claude: I'll create that draft post for you.

✓ Created draft post:
  ID: 142
  Title: Why AI Tools Matter for Content Creators
  Status: draft
  Link: https://your-site.com/?p=142

You: Add some content about productivity and automation

Claude: I'll update the post with content about productivity and automation.

✓ Updated post 142 with new content.

You: Show me my draft posts

Claude: Here are your draft posts:

| ID  | Title                                      | Date       |
|-----|-------------------------------------------|------------|
| 142 | Why AI Tools Matter for Content Creators  | 2026-01-03 |
| 138 | Upcoming Features Preview                  | 2026-01-02 |
| 135 | Team Update Q1                             | 2025-12-28 |

You: Publish post 142

Claude: ✓ Published! Your post is now live at:
https://your-site.com/2026/01/03/why-ai-tools-matter-for-content-creators/

Features

  • Full CRUD for Posts - Create, read, update, and delete posts

  • Content Management - List pages, media, and plugins

  • Search & Filter - Find posts by status, keyword, or date

  • Draft Workflow - Create drafts, review, then publish

  • Secure Auth - Uses WordPress Application Passwords

Quick Start

1. Install

git clone https://github.com/gaupoit/wordpress-mcp.git
cd wordpress-mcp
uv sync

2. Create a WordPress Application Password

  1. Go to WordPress Admin → Users → Profile

  2. Scroll to Application Passwords

  3. Enter a name (e.g., "Claude Code") and click Add New

  4. Copy the generated password (you won't see it again!)

3. Configure Claude Code

Add to your Claude Code MCP config (~/.claude.json):

{
  "mcpServers": {
    "wordpress": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/wordpress-mcp", "wordpress-mcp"],
      "env": {
        "WORDPRESS_URL": "https://your-site.com",
        "WORDPRESS_USER": "your-username",
        "WORDPRESS_APP_PASSWORD": "xxxx-xxxx-xxxx-xxxx"
      }
    }
  }
}

4. Restart Claude Code

# Quit and restart
claude

Verify with /mcp - you should see "wordpress" listed.

Available Tools

Reading Content

Tool

Description

wp_site_info

Get site name, URL, timezone

wp_get_posts

List posts (filter by status, search)

wp_get_post

Get single post with full content

wp_get_pages

List all pages

wp_get_media

List media library items

wp_get_plugins

List installed plugins

Writing Content

Tool

Description

wp_create_post

Create a new post (draft or published)

wp_update_post

Update title, content, status, or excerpt

wp_delete_post

Move to trash or permanently delete

Example Workflows

Blog Publishing

You: "Create a draft post titled 'Getting Started with AI' with an intro paragraph"
You: "Show me my draft posts"
You: "Update post 123 - add a conclusion section"
You: "Publish post 123"

Content Audit

You: "List all draft posts"
You: "Search posts for 'outdated'"
You: "What plugins are currently active?"

Bulk Operations

You: "Show me all posts with 'beta' in the title"
You: "Get the full content of post 45, 46, and 47"
You: "Move posts 45 and 46 to trash"

Environment Variables

Variable

Required

Description

WORDPRESS_URL

Yes

Your WordPress site URL (e.g., https://example.com)

WORDPRESS_USER

Yes

WordPress username

WORDPRESS_APP_PASSWORD

Yes

Application password (not your login password!)

Requirements

  • Python 3.10+

  • WordPress 5.6+ (for Application Passwords)

  • WordPress REST API enabled (default on most sites)

Troubleshooting

"Authentication failed"

  • Verify your Application Password is correct (no spaces)

  • Ensure the user has permission to access REST API

  • Check if a security plugin is blocking REST API

"Connection refused"

  • Verify WORDPRESS_URL includes https://

  • Check if your site is behind a firewall/VPN

Server not appearing in Claude Code

  • Run /mcp to see error messages

  • Test manually: cd wordpress-mcp && uv run wordpress-mcp

  • Restart Claude Code completely (/quit then claude)

Roadmap

  • Categories and tags management

  • User management

  • Custom post types support

  • Media upload

  • Comments management

  • WooCommerce integration

Contributing

Contributions welcome! Please open an issue first to discuss what you'd like to change.

License

MIT


Built with FastMCP and the WordPress REST API.

Available Tools

9 tools
wp_create_postA

Create a new WordPress post.

Args:
    title: The title of the post.
    content: The content/body of the post (supports HTML and Gutenberg blocks).
    status: Post status - 'draft', 'publish', 'pending', 'private'. Default is 'draft'.
    excerpt: Optional excerpt/summary of the post.

Returns:
    Created post with id, title, status, date, and link.
ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
contentYes
statusNodraft
excerptNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the creation action and return format, but lacks details on permissions required, error conditions, rate limits, or whether the operation is idempotent. The mention of HTML and Gutenberg blocks support adds some behavioral context, but overall disclosure is basic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns) and front-loaded purpose. Every sentence adds value: the first states the action, subsequent lines explain parameters and returns. It could be slightly more concise by integrating the default status note into the status description more smoothly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description does a fair job covering basics: purpose, parameters, and return format. However, for a creation tool with mutation implications, it lacks details on authentication needs, error handling, and side effects. The return description is helpful but not exhaustive (e.g., missing potential error responses).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It effectively explains all 4 parameters: title and content are clearly defined, status includes enum values and default, and excerpt is noted as optional. This adds significant meaning beyond the bare schema, though it doesn't detail format constraints or validation rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Create') and resource ('WordPress post'), making the purpose immediately understandable. It distinguishes from siblings like wp_update_post and wp_delete_post by specifying 'new' creation. However, it doesn't explicitly contrast with wp_get_posts or other retrieval tools beyond the obvious action difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the action 'Create a new WordPress post' but provides no explicit guidance on when to use this versus alternatives like wp_update_post for modifications or wp_get_post for retrieval. No prerequisites, exclusions, or comparative context with sibling tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_delete_postA

Delete a WordPress post.

Args:
    post_id: The ID of the post to delete.
    force: If False (default), moves to trash. If True, permanently deletes.

Returns:
    Confirmation with id, deleted status, and previous post info.
ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes
forceNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: the destructive nature of the operation, the trash vs permanent deletion behavior based on force parameter, and what information is returned. It doesn't mention authentication requirements or rate limits, but covers the core mutation behavior adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with clear sections (Args, Returns), uses minimal sentences that each earn their place, and is appropriately sized for a 2-parameter destructive operation. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no annotations and no output schema, the description provides good coverage: purpose, parameter semantics, and return information. It could mention authentication requirements or error cases, but given the tool's relative simplicity, it's mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining both parameters: post_id's purpose and force's behavior (default false moves to trash, true permanently deletes). It adds crucial semantic meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Delete') and target resource ('a WordPress post'), distinguishing it from sibling tools like wp_create_post and wp_update_post. It's not a tautology of the name and provides unambiguous purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through the force parameter explanation (trash vs permanent deletion), but doesn't explicitly state when to use this tool versus alternatives like wp_update_post or other deletion methods. It provides clear operational guidance but lacks sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_get_mediaA

Get media items from WordPress media library.

Args:
    per_page: Number of items to return (1-100). Default is 10.
    media_type: Filter by type - 'image', 'video', 'audio', or 'application'.

Returns:
    List of media items with id, title, url, mime_type, and alt_text.
ParametersJSON Schema
NameRequiredDescriptionDefault
per_pageNo
media_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It implies a read-only operation ('Get') and describes the return format, which is helpful. However, it lacks details on permissions, rate limits, pagination beyond per_page, or error handling, leaving behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the purpose, followed by clear sections for Args and Returns. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no annotations, but has output schema), the description is fairly complete. It covers the purpose, parameters, and return values, though it could improve by adding usage guidelines or more behavioral context to be fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains per_page as 'Number of items to return (1-100)' with a default, and media_type as a filter with specific values ('image', 'video', 'audio', 'application'), compensating well for the schema's lack of details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'media items from WordPress media library', which is specific and unambiguous. It distinguishes from siblings like wp_get_posts or wp_get_pages by focusing on media items, though it doesn't explicitly contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention sibling tools like wp_get_posts (which might include media) or wp_site_info (which could provide media-related info), nor does it specify prerequisites or contexts for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_get_pagesA

Get pages from WordPress.

Args:
    per_page: Number of pages to return (1-100). Default is 10.
    search: Search term to filter pages by title/content.

Returns:
    List of pages with id, title, status, slug, and link.
ParametersJSON Schema
NameRequiredDescriptionDefault
per_pageNo
searchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return format ('List of pages with id, title, status, slug, and link'), which is helpful, but doesn't mention important behavioral aspects like authentication requirements, rate limits, pagination behavior beyond the per_page parameter, or whether this is a read-only operation (though 'Get' implies it).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns) and uses minimal space effectively. Every sentence adds value, though the initial 'Get pages from WordPress.' could be slightly more informative about scope or limitations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no annotations, but has output schema), the description is reasonably complete. It explains parameters well and describes the return format. The output schema existence means it doesn't need to fully document return values, though it could benefit from mentioning authentication or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides excellent parameter semantics that go well beyond the input schema. The schema has 0% description coverage, but the description explains both parameters thoroughly: 'per_page: Number of pages to return (1-100). Default is 10.' and 'search: Search term to filter pages by title/content.' This fully compensates for the schema's lack of documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get pages') and resource ('from WordPress'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like wp_get_posts or wp_get_post, which reduces it from a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like wp_get_posts or wp_get_post. It mentions what the tool does but offers no context about appropriate use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_get_pluginsA

Get installed plugins from WordPress. Requires authentication.

Args:
    status: Filter by status - 'active', 'inactive', or 'all'. Default is 'all'.

Returns:
    List of plugins with name, plugin slug, status, version, and description.
ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds valuable context: it specifies authentication requirements and describes the return format (list of plugins with specific fields). This goes beyond the input schema, covering aspects like data structure and access control, though it doesn't mention rate limits or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the purpose, followed by authentication note, and then structured sections for Args and Returns. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 parameter, no nested objects) and the presence of an output schema (which handles return values), the description is largely complete. It covers purpose, authentication, parameter details, and return format. However, it could improve by mentioning potential errors or linking to sibling tools for broader context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning beyond the input schema, which has 0% schema description coverage. It explains the 'status' parameter's purpose ('Filter by status'), valid values ('active', 'inactive', or 'all'), and default ('all'). This fully compensates for the schema's lack of documentation, providing clear semantics for the single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get installed plugins from WordPress.' It specifies the verb ('Get') and resource ('installed plugins'), and distinguishes it from sibling tools like wp_get_posts or wp_get_media by focusing on plugins. However, it doesn't explicitly contrast with all siblings, such as wp_site_info, which might also provide plugin-related data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating 'Requires authentication,' which suggests a prerequisite context. It doesn't provide explicit guidance on when to use this tool versus alternatives like wp_site_info or other wp_get_* tools, nor does it specify exclusions or detailed scenarios. The usage is implied but not fully articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_get_postA

Get a single post by ID with full content.

Args:
    post_id: The ID of the post to retrieve.

Returns:
    Post with id, title, content (raw), excerpt, status, date, slug, and link.
ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the tool retrieves data ('Get') with 'full content', which implies a read-only operation, but doesn't mention behavioral traits like error handling, authentication needs, or rate limits. The description is basic but doesn't contradict any annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose in the first sentence. The Args and Returns sections are structured clearly with no wasted words, making it easy to scan and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is reasonably complete. It covers purpose, parameters, and return values. However, it lacks details on error cases or behavioral context, which would be beneficial for a read operation without annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that 'post_id' is 'The ID of the post to retrieve', which clarifies the parameter's purpose beyond the schema's title 'Post Id'. However, it doesn't provide format details or constraints, leaving some gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get a single post by ID with full content'), identifies the resource ('post'), and distinguishes it from siblings like wp_get_posts (plural) which likely retrieves multiple posts. It explicitly mentions 'full content' which adds specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying 'by ID' and 'single post', suggesting it's for retrieving a specific post rather than listing multiple posts (wp_get_posts) or other resources. However, it doesn't explicitly state when not to use it or name alternatives, though the sibling list provides clear options.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_get_postsA

Get posts from WordPress.

Args:
    status: Post status filter - 'publish', 'draft', or 'all'. Default is 'publish'.
    per_page: Number of posts to return (1-100). Default is 10.
    search: Search term to filter posts by title/content.

Returns:
    List of posts with id, title, status, date, slug, excerpt, and link.
ParametersJSON Schema
NameRequiredDescriptionDefault
statusNopublish
per_pageNo
searchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that this is a read operation ('Get'), describes the return format, and mentions default values, which adds useful context. However, it lacks information about authentication needs, rate limits, pagination behavior beyond per_page, or error handling, leaving behavioral gaps for a tool with filtering capabilities.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement followed by organized Args and Returns sections. Every sentence adds value: the opening establishes context, parameter explanations are necessary given schema gaps, and the return format disclosure is essential with no output schema in the context signals. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters with 0% schema coverage and no annotations, the description does well by documenting all parameters and the return format. However, as a read operation with filtering capabilities, it could benefit from mentioning authentication requirements or pagination limits. The context signals indicate an output schema exists, so the return format explanation is somewhat redundant but still helpful for clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must compensate fully. It successfully adds meaning for all 3 parameters: explaining what 'status' filters (with enum-like values), what 'per_page' controls (with range context), and what 'search' filters by (title/content). This goes beyond the bare schema to provide practical usage context, though it doesn't specify exact search behavior (e.g., partial matches).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'posts from WordPress', making the purpose immediately understandable. It distinguishes from siblings like wp_create_post (create) and wp_delete_post (delete) by focusing on retrieval, though it doesn't explicitly contrast with wp_get_post (singular) or wp_get_pages (different resource).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving posts with filtering options, but provides no explicit guidance on when to use this vs. alternatives like wp_get_post (for single posts) or wp_get_pages (for pages). The context of filtering by status/search suggests when it might be useful, but lacks clear when-not-to-use statements or prerequisite information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_site_infoB

Get WordPress site information.

Returns:
    Site info including name, description, url, home, gmt_offset, and timezone.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns site information and lists specific fields, but doesn't mention whether this is a read-only operation, if it requires authentication, potential rate limits, error conditions, or the format of the return data. This leaves significant gaps for a tool that presumably queries a WordPress site.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately concise, with the purpose stated upfront followed by a clear list of return fields. Both sentences earn their place by providing essential information without redundancy, though minor improvements in formatting could make it perfect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It explains what the tool does and what it returns, but lacks context about authentication, errors, or how it fits with sibling tools. For a basic read operation, this is acceptable but leaves room for improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, and the baseline for this situation is 4, as it avoids unnecessary repetition while focusing on the tool's purpose and output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('WordPress site information'), making it immediately understandable. However, it doesn't explicitly differentiate this tool from potential sibling tools like 'wp_get_posts' or 'wp_get_plugins' beyond the resource type, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'wp_get_posts' and 'wp_get_plugins' available, there's no indication of whether this tool is for general site metadata, how it relates to other get operations, or any prerequisites for its use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_update_postA

Update an existing WordPress post.

Args:
    post_id: The ID of the post to update.
    title: New title (optional).
    content: New content (optional).
    status: New status - 'draft', 'publish', 'pending', 'private', 'trash' (optional).
    excerpt: New excerpt (optional).

Returns:
    Updated post with id, title, status, date, and link.
ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes
titleNo
contentNo
statusNo
excerptNo

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but provides minimal behavioral context. It mentions the tool updates posts and describes return values, but doesn't cover important aspects like required permissions, whether changes are reversible, error handling, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns), uses bullet-like formatting for parameters, and every sentence adds value. No redundant information or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 5 parameters and no annotations or output schema, the description provides good parameter documentation and return value information, but lacks important behavioral context like permissions, side effects, and error conditions that would be needed for safe operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description provides meaningful parameter documentation including all 5 parameters, their optionality, and for the status parameter, lists all possible enum values ('draft', 'publish', 'pending', 'private', 'trash'). This significantly compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Update an existing WordPress post') and distinguishes it from siblings like wp_create_post (create) and wp_delete_post (delete). It identifies the exact resource being modified.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by specifying it's for updating existing posts, but doesn't explicitly state when to use this versus wp_create_post or wp_get_post. No guidance on prerequisites, permissions, or error conditions is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv1.0.0
    • First observedwp_create_post
    • First observedwp_delete_post
    • First observedwp_get_media
    • First observedwp_get_pages
    • First observedwp_get_plugins
    • First observedwp_get_post
    • First observedwp_get_posts
    • First observedwp_site_info
    • First observedwp_update_post

TDQS

A3.9/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose targeting specific WordPress resources and actions. There is no ambiguity between tools like wp_get_post (single post retrieval), wp_get_posts (multiple posts listing), wp_get_pages (pages listing), and wp_get_media (media library access). Each tool's name and description make its unique function immediately apparent.

Naming Consistency5/5

All tools follow a perfect wp_verb_noun naming pattern throughout the entire set. The structure is consistently snake_case with clear action verbs (create, delete, get, update) followed by specific nouns (post, media, pages, plugins, site_info). This predictable naming convention makes the tool set highly readable and discoverable.

Tool Count5/5

With 9 tools, this server is well-scoped for WordPress content management. Each tool earns its place by covering essential WordPress operations: post CRUD (create, get, update, delete), content listing (posts, pages, media), plugin management, and site information. The count is neither too sparse nor bloated, providing comprehensive coverage without overwhelming complexity.

Completeness4/5

The tool set provides excellent coverage for WordPress content management with complete post lifecycle operations and key content retrieval functions. Minor gaps exist: there's no media upload/creation tool, no page creation/update/delete operations, and no user management tools. However, the core post workflow is fully covered, and agents can work effectively with the provided surface.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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

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