MCP server that extracts, validates, and indexes Gutenberg block schemas and markup from any WordPress plugin
wp-blockmarkup-mcp presents well-structured tool definitions with consistent naming, clear descriptions, and comprehensive input schemas. All 6 tools follow verb_noun naming conventions (search_*, get_*, list_, validate_). Descriptions are concise (100-200 chars), exceeding the 10-1024 character baseline and meeting LLM-optimized expectations. Input schemas use Zod with explicit type declarations and descriptions for all parameters. However, output schemas are not formally documented, responses are formatted as markdown text rather than structured objects. Error handling is basic (try/catch with generic messages). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only and idempotent. These gaps prevent a higher score despite solid naming and parameter definition.
Get validated markup examples for a Gutenberg block. Optionally filter by features used (color, typography, spacing, align). Every returned example has been extracted from the block's actual source.
Get the complete schema for a Gutenberg block: all attributes with types/defaults, support configurations, variations, and validation status. Use the full block name (e.g. "core/paragraph").
List all attributes for a Gutenberg block with their types, defaults, allowed values, sources, and selectors. Useful for constructing specific attribute combinations.
Search Gutenberg blocks across all indexed sources using full-text search. Returns BM25-ranked results with block metadata, type classification, and validation status.
Search for Gutenberg block variations across all indexed sources by name, title, or description. Returns matched variations with their attributes and inner block structure.
Output schemas not formally documented. Responses formatted as markdown text rather than structured JSON objects with typed fields. LLMs must parse unstructured text to extract values for downstream tool calls.
No tool annotations present. All 6 tools are read-only and idempotent, but lack explicit readOnlyHint/idempotentHint annotations. LLMs cannot determine safety characteristics without trying.
Error messages provide no recovery guidance. Handlers return generic 'Error getting block schema: <message>' without suggesting next steps (e.g., 'Block not found. Try search_blocks() first').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 72 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 51 | - | v1 |
Validate raw Gutenberg block markup. Checks structural format (comment delimiters, JSON attributes) and verifies the block name exists in indexed sources. For static blocks, checks attribute names/types against the block schema. Also catches preset reference mismatches where var:preset|group|slug expands to a non-kebab CSS variable in inline style (a common cause of editor "block recovery" prompts).
Limit constraints not enforced in all tools. search_blocks and search_variations accept limit 1-100, but handlers do not validate this constraint. A limit of 101 would pass the Zod schema validation (max:100) but may not be caught at runtime.