WordPress integration for Model Context Protocol
Two tools identified: create_post (WRITE) and get_posts (READ_ONLY). Both have brief descriptions and basic input schemas visible in examples/wordpress-example.js, but several critical quality gaps reduce scores significantly. Naming follows verb_noun pattern (create_post, get_posts) which is good. However, descriptions are minimal (12-18 chars), parameter descriptions are generic/missing, output schemas are undocumented, and no error guidance is provided. The codebase shows HTTP transport and TypeScript/Express setup, but tool definitions are inferred from example file rather than directly visible in core tool registration code.
Create a WordPress post
Get WordPress posts
Descriptions are critically short (under 20 chars). 'Create a WordPress post' and 'Get WordPress posts' provide minimal context for LLM tool selection.
Parameter descriptions are missing or trivial. 'Post status (draft, publish, private)' states enum values but does not explain what status means in the WordPress context or when to use each value. Parameters 'perPage' and 'page' lack guidance on valid ranges (1-100? 1-1000?).
Output schemas are not documented. No visible specification of what create_post returns (post_id? post_url? timestamp?) or what get_posts returns (array of objects with what fields?). LLM cannot plan downstream calls without knowing response structure.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 42 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 50 | - | v1 |
No error handling or recovery guidance. If create_post fails due to invalid status or missing content, the tool provides no hint for the LLM to self-correct or retry. Per pattern:recovery-guide, errors must guide next steps.
get_posts lacks pagination metadata. No indication of total count, next_cursor, or whether results are truncated. Large result sets will blow context window without pagination guidance.
Tool definitions are inferred from examples/wordpress-example.js rather than directly visible in explicit tool registration code (e.g., server.tool() calls in src/server or src/index). Source code snippet provided does not show core tool handler implementations.
create_post description omits side-effect declaration. Per pattern:command-tool, tools that modify state must explicitly say so ('Creates a new post'). This is critical for agent safety and idempotency planning.
No parameter constraints documented. 'status' enum is stated in description but not formally constrained in input schema. 'title' and 'content' lengths are unbounded, can they be empty? Max length?