Model Context Protocol (MCP) server for read-only, domain-specific Blogger API access.
Server defines 4 blog query tools with HTTP transport via FastMCP/Uvicorn. All tools have descriptions and input schemas visible in code. Naming follows verb_noun convention (get_, search_, list_). However, schemas lack completeness in parameter descriptions, output schemas are not explicitly documented, and error handling is minimal. Tool annotations are present (readOnlyHint, openWorldHint) which is good. The server implements domain-based access control, which is a security positive. Overall: functional definitions with moderate gaps typical of C-tier community servers.
Retrieves public information about a Blogger blog given its URL. ONLY works for allowed, pre-configured domains.
Fetches the most recent public blog posts for a specified blog URL. ONLY works for allowed, pre-configured domains.
Fetches the most recent public blog posts (Titles only) for a specified blog. ONLY works for allowed, pre-configured domains.
Searches for blog posts in a specified blog by query terms. ONLY works for allowed, pre-configured domains.
Output schemas not documented. Tools return dicts but LLMs cannot see what fields to expect in responses. This forces LLMs to guess at downstream field names and breaks tool chaining.
Parameter descriptions are minimal and do not explain format/constraints. 'blog_url' lacks guidance on expected format (http vs https, domain suffix). 'query_terms' has no length limit or character restrictions documented. 'num_posts' lacks minimum/maximum bounds.
Error handling is present but not actionable. The code returns dict errors like {'error': 'Access denied...'} and {'error': 'Failed to retrieve...'} but does not provide recovery guidance (e.g., 'Try a different domain' or 'Check blog URL format').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Tool descriptions mention 'ONLY works for allowed, pre-configured domains' but do not explain how to discover which domains are allowed or what to do if access is denied. LLM cannot self-correct.
Result limits not documented. Tools like 'get_recent_posts' and 'search_posts' accept 'num_posts' parameter but no guidance on maximum allowed value or default behavior if LLM requests 1000 items.