WP Audit MCP Server
Allows auditing Cloudflare security settings (e.g., SSL/TLS encryption, TLS version) and applying recommended configurations via the Cloudflare API.
Offers tools for comprehensive WordPress site audits, database cleanup, SEO meta description management, and removal of leftover artifacts from deleted plugins.
Allows checking and optimizing WP Rocket caching plugin settings, including cache preload, lazy loading, and mobile cache.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WP Audit MCP Serveraudit the WordPress site example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WP Audit MCP Server
MCP (Model Context Protocol) server for comprehensive WordPress site audits on WP Engine.
What is This?
This is an MCP server that gives Claude Code specialized tools for auditing and optimizing WordPress sites hosted on WP Engine. Instead of manually running PHP scripts and API calls, you can simply ask Claude to audit a site and it will use these tools automatically.
Related MCP server: wp-cli-mcp
How It Works
┌─────────────────────────────────────────────────────────────────┐
│ Your Computer │
│ │
│ Claude Code ◄──stdio──► wp-audit-mcp (Node.js) │
│ │ │
│ ├──SSH──► WP Engine sites │
│ │ (runs WP-CLI/PHP) │
│ │ │
│ └──HTTPS──► CloudFlare API │
└─────────────────────────────────────────────────────────────────┘Claude Code starts the MCP server as a local subprocess
They communicate via stdin/stdout (not network)
When you ask Claude to audit a site, it calls the MCP tools
The MCP server connects to WP Engine via SSH and runs PHP scripts
For CloudFlare, it makes API calls directly
Features
Tool | Description |
| Full site audit (content counts, database size, SEO status, plugin artifacts) |
| Database cleanup (orphaned data, revisions, transients, action scheduler) |
| Remove leftover tables/options from deleted plugins |
| Check meta description coverage |
| Auto-generate or manually set meta descriptions |
| Check and optimize WP Rocket settings |
| Clear all caches (WordPress, WP Rocket, page builders, WP Engine) |
| Audit CloudFlare security settings |
| Apply recommended CloudFlare settings |
| Parse and summarize Ahrefs site audit exports |
Installation
Prerequisites
1. Node.js 18+
Download from nodejs.org or use a version manager:
# Check your version
node --version # Should be v18.x or higher
# macOS (with Homebrew)
brew install node
# Windows (with Chocolatey)
choco install nodejs
# Linux (Ubuntu/Debian)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs2. Claude Code
Install Claude Code if you haven't:
npm install -g @anthropic-ai/claude-code3. SSH Access to WP Engine
You need SSH key-based authentication to WP Engine sites.
Generate an SSH key (if you don't have one):
ssh-keygen -t ed25519 -C "your-email@example.com"Add your public key to WP Engine:
Log into WP Engine Portal
Go to My Profile → SSH Keys
Click Add SSH Key
Paste contents of
~/.ssh/id_ed25519.pub
Test the connection:
# Replace SITEID with your WP Engine environment name
ssh SITEID@SITEID.ssh.wpengine.net 'echo "Connected successfully"'4. CloudFlare Global API Key (Optional)
Only needed if you want to use the CloudFlare tools.
Log into CloudFlare Dashboard
Click your profile icon → My Profile
Go to API Tokens tab
Find Global API Key → Click View
Copy the key (you'll need this when running CloudFlare tools)
Note: Use the Global API Key, not an API Token. The Global API Key works with all zones.
Step-by-Step Installation
Step 1: Clone the Repository
# Clone to a permanent location (not in a project folder)
git clone https://github.com/markahope-aag/wp-audit-mcp.git ~/wp-audit-mcp
# Or on Windows
git clone https://github.com/markahope-aag/wp-audit-mcp.git C:\tools\wp-audit-mcpStep 2: Install Dependencies and Build
cd ~/wp-audit-mcp # or C:\tools\wp-audit-mcp on Windows
# Install Node.js dependencies
npm install
# Build the TypeScript code
npm run buildYou should see a dist/ folder created with the compiled JavaScript.
Step 3: Configure Claude Code
Claude Code uses a .mcp.json file to know about MCP servers. You need to add this server to that file.
Option A: Use the configure script
# Run from your project directory (where you use Claude Code)
~/wp-audit-mcp/configure.sh .
# Windows
C:\tools\wp-audit-mcp\configure.sh .Option B: Manual configuration
Create or edit .mcp.json in your project directory:
{
"mcpServers": {
"wp-audit": {
"command": "node",
"args": ["/Users/yourname/wp-audit-mcp/dist/index.js"]
}
}
}Important: Use the full absolute path to dist/index.js:
macOS/Linux:
/Users/yourname/wp-audit-mcp/dist/index.jsWindows:
C:/tools/wp-audit-mcp/dist/index.js(use forward slashes)
Step 4: Restart Claude Code
# Start Claude Code in your project directory
cd /path/to/your/project
claudeWhen Claude Code starts, it will automatically start the MCP server. You should see it connect without errors.
Step 5: Verify Installation
Ask Claude:
What MCP tools do you have available for WordPress audits?Claude should list the wp_baseline, wp_cleanup, and other tools.
Configuration Details
The .mcp.json File
The .mcp.json file tells Claude Code which MCP servers to start. It can be placed in:
Project directory (recommended) - Tools available for that project
Home directory (
~/.mcp.json) - Tools available globally
Example with multiple servers:
{
"mcpServers": {
"wp-audit": {
"command": "node",
"args": ["/Users/yourname/wp-audit-mcp/dist/index.js"]
},
"memory": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-memory"],
"env": {
"MEMORY_FILE_PATH": "./.claude/memory.json"
}
}
}
}How Tools Connect to WP Engine
The MCP server uses SSH to connect to WP Engine and run WP-CLI commands:
# This is what happens behind the scenes
ssh SITEID@SITEID.ssh.wpengine.net 'wp eval-file /tmp/script.php'The site_id parameter you provide is the WP Engine environment name, which you can find in:
WP Engine Portal URL:
my.wpengine.com/installs/SITEIDOr in the site's "Overview" page
SSH Configuration (Optional)
For convenience, you can add WP Engine sites to ~/.ssh/config:
Host wpengine-mysite
HostName mysite.ssh.wpengine.net
User mysite
IdentityFile ~/.ssh/id_ed25519This doesn't affect how the MCP server works, but makes manual SSH easier.
Usage
Basic Commands
Once installed, just talk to Claude naturally:
Audit the WordPress site "mysite" on WP EngineOr be more specific:
Use wp_baseline with site_id "mysite"Example Session
You: I need to audit the site "clientsite" - check SEO, clean up the database,
and fix CloudFlare settings. Zone ID is abc123def456.
Claude: I'll run a comprehensive audit. Let me start with the baseline...
[Uses wp_baseline]
Now checking SEO meta descriptions...
[Uses wp_seo_check]
I found 15 pages missing meta descriptions. Should I auto-generate them?
You: Yes, generate them.
Claude: [Uses wp_seo_fix with mode "auto"]
Done. Now checking CloudFlare...
[Uses cloudflare_check]
Found issues: SSL is "flexible" (should be "full"), TLS 1.0 (should be 1.2).
Should I fix these?
You: Yes, fix all CloudFlare issues.
Claude: [Uses cloudflare_fix]
All CloudFlare settings updated. Let me clear all caches...
[Uses wp_clear_cache]
Audit complete! Here's the summary...Tools Reference
wp_baseline
Run comprehensive baseline audit on a WordPress site.
Parameters:
site_id: WP Engine environment name (required)
Returns: Content counts, database size, orphaned data, SEO status,
WP Rocket settings, deleted plugin artifactswp_cleanup
Clean orphaned data and optimize database.
Parameters:
site_id: WP Engine environment name (required)
delete_revisions: Delete post revisions (default: true)
Actions: Removes orphaned postmeta, termmeta, commentmeta, auto-drafts,
transients, old action scheduler entries. Closes pingbacks.wp_plugin_artifacts
Remove database artifacts from deleted plugins.
Parameters:
site_id: WP Engine environment name (required)
plugins: Array of plugins to clean (optional - cleans all if empty)
Options: yoast, rankmath, aioseo, wsal, revslider,
layerslider, woocommerce, jetpack
dry_run: Preview changes without applying (default: false)
Actions: Drops orphaned tables, deletes leftover optionswp_seo_check
Check meta description status for pages/posts.
Parameters:
site_id: WP Engine environment name (required)
post_type: 'page', 'post', or 'all' (default: 'page')
Returns: Count of pages with/without meta descriptions, list of missingwp_seo_fix
Add meta descriptions to content.
Parameters:
site_id: WP Engine environment name (required)
mode: 'auto' or 'manual' (default: 'auto')
post_type: For auto mode (default: 'page')
descriptions: For manual mode - {postId: "description"} object
dry_run: Preview changes (default: false)
Auto mode: Extracts first 155 chars from page content
Manual mode: Sets specific descriptions for specific post IDswp_rocket_fix
Check and fix WP Rocket settings.
Parameters:
site_id: WP Engine environment name (required)
dry_run: Preview changes (default: false)
Fixes: Enables cache preload, sitemap preload, lazy loading, mobile cachewp_clear_cache
Clear all caches on the site.
Parameters:
site_id: WP Engine environment name (required)
Clears: WordPress object cache, transients, WP Rocket, WP Super Cache,
Elementor, Beaver Builder, Divi, WP Engine page cachecloudflare_check
Check CloudFlare security and performance settings.
Parameters:
zone_id: CloudFlare Zone ID (required)
email: CloudFlare account email (required)
api_key: CloudFlare Global API Key (required)
Checks: SSL mode, min TLS version, HSTS, Bot Fight Mode,
AI bot protection, crawler protectioncloudflare_fix
Apply recommended CloudFlare settings.
Parameters:
zone_id: CloudFlare Zone ID (required)
email: CloudFlare account email (required)
api_key: CloudFlare Global API Key (required)
fix_ssl: Fix SSL to 'full' (optional)
fix_tls: Fix min TLS to 1.2 (optional)
fix_hsts: Enable HSTS with 6-month max-age (optional)
fix_bots: Enable bot protection (optional)
fix_all: Apply all fixes (default: auto-detects what's needed)ahrefs_extract
Extract and summarize an Ahrefs site audit ZIP file.
Parameters:
zip_path: Full path to Ahrefs ZIP export (required)
output_dir: Directory to extract to (optional)
Returns: Summary of errors, warnings, and notices from the auditTypical Audit Workflow
Baseline:
wp_baseline- Understand the site's current stateAhrefs:
ahrefs_extract- Parse Ahrefs audit file if providedCloudFlare:
cloudflare_check→cloudflare_fix- Fix security settingsDatabase:
wp_cleanup→wp_plugin_artifacts- Clean up databaseSEO:
wp_seo_check→wp_seo_fix- Fix missing meta descriptionsCaching:
wp_rocket_fix- Optimize WP RocketFinish:
wp_clear_cache- Clear all caches
Troubleshooting
"SSH connection failed"
Verify SSH key is added to WP Engine Portal
Test manually:
ssh SITEID@SITEID.ssh.wpengine.net 'echo test'Check that
site_idmatches the WP Engine environment name exactly
"MCP server not found"
Verify the path in
.mcp.jsonis absolute and correctCheck that
npm run buildcompleted without errorsVerify
dist/index.jsexists
"CloudFlare authentication failed"
Use the Global API Key, not an API Token
Verify the email matches your CloudFlare login
Check the Zone ID is correct (found in CloudFlare dashboard overview)
Tools not appearing in Claude
Restart Claude Code completely
Check
.mcp.jsonis in the current directoryLook for errors when Claude Code starts
Supported Platforms
Windows - Via Git Bash, WSL, or native (with forward slashes in paths)
macOS - Native terminal
Linux - Native terminal
Development
# Run in development mode (watches for changes)
npm run dev
# Build for production
npm run build
# The server communicates via stdio, so to test manually:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.jsLicense
MIT
Contributing
Issues and pull requests welcome at github.com/markahope-aag/wp-audit-mcp.
Available Tools
10 toolsahrefs_extractA
Extract and summarize an Ahrefs site audit ZIP file. Extracts to a temp directory and provides a summary of issues found (errors, warnings, notices).
| Name | Required | Description | Default |
|---|---|---|---|
| zip_path | Yes | Full path to the Ahrefs ZIP export file | |
| output_dir | No | Directory to extract files to (default: temp/ahrefs-{sitename}) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It says extraction goes to a temp directory and that a summary of errors/warnings/notices is provided, but it does not disclose whether the temp directory is cleaned up, what happens if the directory already exists, or what the summary structure looks like. This is partial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loaded with the core action, and every word serves a purpose. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 simple parameters and no output schema, so the description needs to explain return behavior. It mentions 'summary of issues found' but not the exact format or whether extracted files persist after execution. Adequate but with gaps in post-extraction behavior and return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described in the schema (zip_path and output_dir, including default). The description doesn't add significant extra meaning beyond echoing the temp directory default; the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Extract and summarize an Ahrefs site audit ZIP file.' It specifies the resource (Ahrefs site audit ZIP) and the action (extract and summarize), and distinguishes itself from sibling tools that target WordPress/Cloudflare, as this is the only Ahrefs-specific tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when handling an Ahrefs site audit ZIP file. It does not explicitly mention alternatives or exclusions, but since siblings are unrelated (wp_*, cloudflare_*), there is no ambiguity about which tool to choose for this task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloudflare_checkB
Check CloudFlare security and performance settings for a zone. Returns SSL mode, TLS version, HSTS status, and bot protection settings with recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | CloudFlare account email | ||
| api_key | Yes | CloudFlare Global API Key | |
| zone_id | Yes | CloudFlare Zone ID (32-character hex string) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does list expected return outputs, which adds value, but it does not explicitly state that the operation is read-only, nor does it cover error behavior, rate limits, or permission requirements beyond the schema. The tool name 'check' implies non-destructive behavior, but an explicit statement would be stronger for a no-annotation context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that names the action and resource, then lists return items. Every word carries weight; there is no fluff or repetition. This is exemplary conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple check tool with three well-documented parameters and no output schema, the description adequately explains the return value categories and recommendations. However, it could be more complete by explicitly noting the read-only nature and when to pair it with cloudflare_fix. The overall structure is solid, but minor gaps prevent a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents each parameter (email, api_key, zone_id) clearly. The description adds no further semantic meaning to the parameters, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks CloudFlare security and performance settings for a zone, listing specific return items (SSL mode, TLS version, HSTS status, bot protection). This is specific and understandable, but it does not explicitly distinguish itself from the sibling tool cloudflare_fix, so it misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like cloudflare_fix. The description does not mention exclusions, prerequisites, or scenarios where another tool would be more appropriate. This leaves the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloudflare_fixA
Apply recommended CloudFlare security settings. Can fix SSL mode, TLS version, HSTS, and bot protection. By default, checks current settings and only fixes what's needed.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | CloudFlare account email | ||
| api_key | Yes | CloudFlare Global API Key | |
| fix_all | No | Apply all fixes regardless of current state | |
| fix_ssl | No | Fix SSL to 'full' mode (default: auto-detect if needed) | |
| fix_tls | No | Fix min TLS to 1.2 (default: auto-detect if needed) | |
| zone_id | Yes | CloudFlare Zone ID (32-character hex string) | |
| fix_bots | No | Enable bot protection (default: auto-detect if needed) | |
| fix_hsts | No | Enable HSTS (default: auto-detect if needed) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses a meaningful behavioral trait: 'By default, checks current settings and only fixes what's needed.' This is useful for agents to predict incremental behavior. However, it does not mention side effects, reversibility, API key permissions, or return values, which are relevant for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and free of redundancy. It communicates the core action and key default behavior without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, no output schema, no annotations), the description provides a good high-level overview and default behavior, but lacks details about what the function returns, potential side effects, or success/failure indicators. This is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description doesn't add significant meaning beyond the schema; the list of fix targets (SSL, TLS, HSTS, bots) mirrors the parameter descriptions, and the default behavior is already encoded in the schema descriptions. The description adds minimal extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it applies recommended CloudFlare security settings, enumerates the specific fixes (SSL mode, TLS version, HSTS, bot protection), and implicitly distinguishes itself from the sibling cloudflare_check tool by focusing on applying fixes rather than checking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case ('Apply recommended CloudFlare security settings') and explains the default behavior of checking before fixing. However, it does not explicitly state when to use this tool instead of cloudflare_check or provide exclusion scenarios, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_baselineA
Run a comprehensive baseline audit on a WordPress site. Returns content counts, database size, orphaned data counts, SEO meta status, WP Rocket settings, and deleted plugin artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | WP Engine environment name (e.g., 'reynoldstransf') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the tool's behavior by listing the output categories (content counts, database size, etc.), implying a read-only audit. However, it does not explicitly state that it makes no changes, nor does it mention performance implications or permissions, which leaves some ambiguity for a comprehensive audit tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the primary action and then enumerates the key return categories in a comma-separated list. There is no wasted wording, and the structure makes it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a fairly complex audit tool with no output schema, so the description must compensate by explaining return values. It lists six major categories, which gives a solid conceptual overview. However, it lacks detail on the structure or format of the returns and does not mention potential side effects or performance considerations, leaving some gaps for a tool of this scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a complete description of the single parameter (site_id as 'WP Engine environment name'), achieving 100% schema coverage. The description adds no additional parameter meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a comprehensive baseline audit on a WordPress site, with a specific verb and resource. It lists six distinct return categories, which distinguishes it from sibling tools like wp_seo_check or wp_plugin_artifacts that focus on narrower areas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage as a broad audit for getting an overview, but it does not explicitly state when to use this instead of the more specific sibling tools, nor does it mention any exclusions or prerequisites. The context is present but not fully explicit, so it earns a 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_cleanupA
Run database cleanup on a WordPress site. Removes orphaned postmeta/termmeta, old revisions, auto-drafts, expired transients, old action scheduler entries, and closes pingbacks.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | WP Engine environment name (e.g., 'reynoldstransf') | |
| delete_revisions | No | Whether to delete post revisions (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly lists destructive actions (removes orphaned postmeta, revisions, auto-drafts, etc.) and even includes 'closes pingbacks'. This is substantive disclosure, though it stops short of stating irreversibility or backup requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence. It front-loads the purpose and follows with a concise list of actions, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main behavior thoroughly for a 2-parameter tool with no output schema. It lacks details like thresholds for 'old' or output expectations, but given the scope, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already well-documented. The description does not add extra parameter-level meaning, but the baseline is 3, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs database cleanup on a WordPress site and enumerates specific items removed (orphaned postmeta/termmeta, revisions, auto-drafts, etc.). This differentiates it from sibling tools like wp_clear_cache or wp_seo_check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool ('Run database cleanup'), implying it is for database maintenance issues. However, it does not explicitly mention alternatives or when not to use it, though sibling tool names are visible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_clear_cacheA
Clear all caches on a WordPress site including WP object cache, transients, WP Rocket, Elementor, Beaver Builder, and WP Engine page cache.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | WP Engine environment name (e.g., 'reynoldstransf') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It transparently lists what will be cleared, indicating a mutating/destructive operation, but does not mention prerequisites like admin credentials or potential side effects such as temporary performance impact. The enumeration of affected caches adds value but leaves some 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence listing all affected cache types without redundancy or unnecessary words. Every element earns its place, maximizing clarity in minimal space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description thoroughly explains what the tool does and which caches are affected. It lacks mention of side effects or post-condition, but for basic selection and invocation, the scope of behavior is well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%—the only parameter, site_id, is already described as 'WP Engine environment name' in the schema. The description adds no additional parameter meaning, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Clear' with resource 'all caches on a WordPress site' and enumerates cache types (WP object cache, transients, WP Rocket, Elementor, Beaver Builder, WP Engine), distinguishing it clearly from sibling tools like wp_rocket_fix or cloudflare_fix. This is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this is the comprehensive cache clearing tool by listing all cache types, providing strong context for when to use it. It does not explicitly name alternatives or exclusions, but the scope of 'all caches' guides selection appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_plugin_artifactsA
Remove database artifacts (tables and options) left behind by deleted plugins. Supports Yoast, Rank Math, AIOSEO, WP Activity Log, RevSlider, LayerSlider, WooCommerce, and Jetpack.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, only report what would be deleted without making changes (default: false) | |
| plugins | No | List of plugins to clean up. Options: 'yoast', 'rankmath', 'aioseo', 'wsal', 'revslider', 'layerslider', 'woocommerce', 'jetpack'. Leave empty to clean all detected artifacts. | |
| site_id | Yes | WP Engine environment name (e.g., 'reynoldstransf') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It explicitly states the action is 'remove' which implies destructive behavior, and specifies the affected data (tables and options). However, it does not mention irreversibility, permissions, or the availability of dry_run, which is important for a destructive tool. This is a moderate gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core function and followed by a necessary list of supported plugins. Every word is useful, no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description plus schema cover the tool's purpose, parameters, and supported plugins. Without an output schema, return values are not described, but this is not critical for a cleanup tool. The main gap is the lack of explicit safety/usage context (e.g., when to dry_run, warnings about deletion), which could be improved but is not essential for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters (site_id, plugins, dry_run) are already described in the schema. The description does not add semantic meaning beyond what the schema provides, only listing supported plugins which is also present in the plugins parameter description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it removes database artifacts (tables and options) left behind by deleted plugins. This specific verb+resource combination clearly differentiates it from siblings like wp_cleanup or wp_baseline, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for cleaning up after deleted plugins, and lists supported plugins. While it does not explicitly name alternatives or exclusions, the context is clear enough for an agent to infer when to use this tool. A slight lack of explicit 'when-not-to-use' guidance prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_rocket_fixA
Check and fix WP Rocket settings. Enables cache preload, sitemap preload, lazy loading, and mobile cache.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, only report what would be changed | |
| site_id | Yes | WP Engine environment name (e.g., 'reynoldstransf') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of disclosing behavior. It does state that it enables four specific settings, which is meaningful. However, it does not disclose potential side effects, reversibility, or the existence of a dry-run mode that is present in the schema but not highlighted for safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the clear purpose ('Check and fix WP Rocket settings') followed by a specific list of enabled features. Every word earns its place with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simpler tool with two parameters and no output schema, the description covers the core function but lacks usage scenarios, side effects, and return-value information. Given the absence of annotations and the presence of sibling tools with overlapping purposes, more contextual detail would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds context about which settings are affected, but it does not explain the two parameters (site_id and dry_run) beyond what the schema already states. No additional parameter-level meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource pair ('Check and fix WP Rocket settings') and enumerates the exact features it enables (cache preload, sitemap preload, lazy loading, mobile cache). This clearly distinguishes it from sibling tools like wp_seo_fix and cloudflare_fix, which target different systems.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage is appropriate when WP Rocket settings need to be checked or fixed, but it does not explicitly state when to use it over alternatives or provide exclusions. Sibling tools like wp_cleanup and wp_clear_cache are not mentioned, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_seo_checkA
Check SEO meta description status for all published pages and posts. Returns a list of content missing meta descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | WP Engine environment name (e.g., 'reynoldstransf') | |
| post_type | No | Post type to check (default: 'page'). Use 'all' for pages and posts. | page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly communicates the read-only nature through 'Check' and 'Returns', and adds scope details ('all published pages and posts') and output type ('list of content missing meta descriptions'). It does not discuss side effects, but the wording implies none.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary action and ending with the output. No filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only check with only two params and no output schema, the description is sufficient. It covers purpose, scope, and output. Missing info like return format or edge cases is not critical for this tool class.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds context around 'all published pages and posts' which aligns with the post_type parameter, but does not provide new parameter-level detail beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb 'Check' with a clear resource 'SEO meta description status' and scope 'all published pages and posts'. Clearly distinguishes from sibling wp_seo_fix, which implies fixing rather than checking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states what it does (checks status) and what it returns (list of missing meta descriptions), making it clear this is a diagnostic tool. It does not explicitly name alternatives, but the scope and output strongly imply when to use it versus tools like wp_seo_fix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_seo_fixA
Add meta descriptions to pages/posts. Can auto-generate from content or set specific descriptions for specific post IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 'auto' = generate descriptions from content for all missing pages. 'manual' = set specific descriptions (requires descriptions parameter) | auto |
| dry_run | No | If true, only show what would be changed without making changes | |
| site_id | Yes | WP Engine environment name (e.g., 'reynoldstransf') | |
| post_type | No | Post type to fix (for auto mode). Default: 'page' | page |
| descriptions | No | For manual mode: object mapping post IDs to descriptions. Example: {"123": "Description for post 123", "456": "Description for post 456"} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the transparency burden. 'Add' clearly indicates a write operation, and the two modes are disclosed. However, the dry_run parameter is not mentioned in the description—a notable gap since it controls whether changes are actually made. The description also doesn't state whether existing descriptions are overwritten or only missing ones. This makes it moderately transparent but not fully explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with a clear verb and resource. Every phrase adds value—no filler or repetition. It efficiently conveys the core purpose and both operational modes, making it highly concise while remaining informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description must provide complete context. It covers the main actions but omits important behavioral details such as dry_run's effect, what happens to existing descriptions, and what the tool returns/outputs. Given the 5-parameter schema and nested object, the description is adequate but not complete—an agent would need to rely on the schema for dry_run semantics and still might miss side effects. A score of 3 reflects this gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (mode, dry_run, site_id, post_type, descriptions) clearly documented in the schema itself. The description adds minimal extra meaning beyond summarizing the two modes. Since the schema carries the parameter detail, a baseline score of 3 is appropriate; the description does not meaningfully enrich parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Add meta descriptions to pages/posts.' It distinguishes itself from sibling tools like wp_seo_check by focusing on fixing (adding/updating) rather than checking. The two modes (auto-generate from content or set specific descriptions) further clarify its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use each mode: 'auto-generate from content' for bulk fixing, and 'set specific descriptions for specific post IDs' for targeted edits. It does not explicitly mention wp_seo_check as an alternative or provide exclusion criteria, but the mode breakdown gives practical usage context. Lacks explicit 'when not to use' guidance, so a 4 is appropriate.
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.
10 tool updates
v1.0.0- First observed
ahrefs_extract - First observed
cloudflare_check - First observed
cloudflare_fix - First observed
wp_baseline - First observed
wp_cleanup - First observed
wp_clear_cache - First observed
wp_plugin_artifacts - First observed
wp_rocket_fix - First observed
wp_seo_check - First observed
wp_seo_fix
TDQS
Scored across 10 tools
Each tool has a distinct primary purpose, but wp_baseline overlaps with wp_seo_check and wp_rocket_fix by reporting similar data, and wp_cleanup/wp_plugin_artifacts both perform cleanup. Descriptions clarify scope, so an agent can still select correctly, but there is minor ambiguity.
Names consistently use lowercase snake_case and provider prefixes (wp_, cloudflare_, ahrefs_). Many follow a verb_noun pattern (wp_seo_check, cloudflare_fix), but some are noun-like (wp_baseline, wp_plugin_artifacts), making the convention slightly mixed but still readable.
With 10 tools, the set is well-scoped for a WordPress audit/maintenance server. Each tool addresses a distinct area—audit, cleanup, SEO, caching, performance, security, and plugin artifacts—without unnecessary redundancy.
The tool set provides check/fix pairs for SEO and Cloudflare, plus clear, cache, rocket, cleanup, and artifact removal operations, covering common WordPress maintenance workflows. The baseline audit ties everything together. No significant operational gaps for the stated purpose.
Maintenance
Related MCP Connectors
SEO MCP server for keyword research, SERP analysis, audits, and Search Console workflows.
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
WordPress MCP server: publish posts, AI images, SEO and full site management, self-hosted
WordPress MCP server: generate SEO posts, AI images, autoblog & WooCommerce on your self-hosted site
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for WordPress automation that enables users to manage content, themes, and site configurations using AI-driven workflows and the WordPress REST API. It provides a wide array of tools for site planning, management, and optimization compatible with tools like Cursor and Claude.70 npm1ISC
- AlicenseBqualityDmaintenanceMCP server that gives AI tools full WordPress management via WP-CLI. 30+ tools for themes, plugins, posts, menus, users, database, scaffolding, and cache. Works locally or over SSH.349 npm5MIT
- AlicenseAqualityCmaintenanceMCP server providing WP-CLI, MySQL, and filesystem access for Local by Flywheel WordPress sites, enabling direct management without HTTP endpoints.108 npm7MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables safe reconnaissance, mutation, and verification of WordPress sites through guarded, typed verbs with dry-run previews and change-packet audit records.MIT