MCP server for Hugo sites, distributed as a precompiled Go binary — provides tools for reading, searching, and managing Hugo static site content
Server has 15 tools with explicit schemas and descriptions. Naming follows verb_noun convention (list_pages, get_page, search_pages, delete_page). Descriptions are present but brief (10-80 chars), below the 50-200 char LLM-optimized baseline. Parameters have types and descriptions, but many lack constraints (enums, ranges, patterns). Output schemas are not documented in the provided code. Error handling and recovery guidance are absent. Tool annotations (readOnlyHint/destructiveHint) are declared in test code, indicating implementation, but not visible in tool definitions themselves. Destructive tools (delete_page, delete_page_asset, delete_bundle) lack confirmation/dry-run patterns.
Delete a content bundle (destructive operation)
Delete a page (destructive operation)
Delete a page asset (destructive operation)
Get server capabilities and tool registry digest
Get changelog information
Get site feed with pagination
Get a single page by slug with optional content rendering and term inclusion
Destructive tools (delete_page, delete_page_asset, delete_bundle) lack confirmation/dry-run patterns. No input schema visible for delete operations, and descriptions are minimal (35 chars). Agents cannot safely preview consequences before executing irreversible actions.
Output schemas are not documented. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream field names and risk broken tool chains. get_page, search_pages, list_pages, and others lack return type documentation.
Descriptions are too brief (avg 45 chars, baseline 50-200). Examples: 'List pages with pagination support' (35 chars), 'Get site feed with pagination' (30 chars). Descriptions lack WHEN to use, prerequisites, or dependencies. LLMs cannot distinguish between similar tools (list_pages vs get_recent_posts).
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2025-06-18+ | v2 |
Get recently published posts with pagination
Get basic site information including name, URL, and default language
Get site sitemap with optional taxonomy exclusion and summary-only mode
List all categories used in the site
List pages with pagination support
List all tags used in the site
Rollback a prior page revision (recoverable, not destructive)
Search pages by query with optional field filtering and match mode
Parameters lack constraints. 'limit' and 'offset' have no min/max bounds; 'response_mode' has no enum values; 'match' in search_pages mentions 'any' and 'title_exact' in description but not as formal enum. Free-form strings invite hallucinated values.
No error handling or recovery guidance visible. Tools do not document what happens on invalid input (e.g. slug not found, limit > 50), what errors are retryable, or how to self-correct. Agents cannot distinguish between transient and permanent failures.