MCP server for WordPress post and category management via REST API
Server has 8 tools with basic Zod schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, mostly short), and input schemas are present with type definitions. However, descriptions lack actionable context for LLM selection, parameter descriptions are minimal, output schemas are undocumented, and error handling is generic. No tool annotations (readOnlyHint/destructiveHint), no pagination support for list operations, and no guidance on recovery paths. Naming is clear and verb-based (create_, edit_, list_, get_, delete_), which is a strength. The server follows basic patterns but misses critical production-grade details like field-level documentation, structured error responses, and output schema documentation.
Create a new WordPress category
Create a new WordPress post
Delete a WordPress category
Edit an existing WordPress category
Edit an existing WordPress post
Get a specific WordPress post by ID
List all WordPress categories
Output schemas completely undocumented. Tools return text responses with no structured field definitions. LLMs cannot plan downstream calls or extract typed data.
List tools (list_posts, list_categories) lack pagination parameters (limit, offset/cursor) and return unbounded results. Large result sets will exhaust context windows.
Tool descriptions are too short (10-50 chars) and lack context. No explanation of WHEN to use each tool, prerequisites, or what it returns. Descriptions should be 50-200 chars with actionable guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
List all WordPress posts
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Destructive tools (delete_category) and write tools (create_post, edit_post) should declare their risk profile for agent safety.
Error responses are generic text strings with no recovery guidance. Errors should categorize as retryable/user-fixable/fatal and suggest next steps (e.g., 'Try search_posts() with a partial title').