Model Context Protocol server for Igor's blog at idvork.in. Provides tools for interacting with blog posts and repository information.
This FastMCP server exposes 9 tools for blog interaction. Most tools have descriptions and basic parameter definitions. However, there are significant gaps in schema completeness, parameter descriptions are often minimal or missing, and no output schemas are documented. Error handling exists but lacks guidance for recovery. Tool naming is generally verb-noun compliant. The server is well-structured with environment config and caching, but the tool definitions themselves fall short of production-grade baselines.
Get all blog posts (returns JSON)
Get information about the blog
Search blog posts (returns JSON)
Get recent changes/commits from the GitHub repository
List all available repositories
Get a random blog post
Get a random blog post URL
Output schemas are not documented for any tool. LLMs cannot determine what fields to expect or plan downstream operations. Pattern baseline: 100% of A+ tools have documented return types.
Parameter descriptions are minimal or missing context. For example, 'repo' parameter is described as 'Repository name (optional, defaults to DEFAULT_REPO)' but does not explain valid values, format constraints, or when to use it vs list_repos. Baseline: 100% of A+ tools have all param descriptions.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 17 | - | v1 |
Read a specific blog post by URL
Get the most recent blog posts (returns JSON)
No error handling guidance provided. When tools fail (e.g., repo not found, GitHub API rate limit), there are no recovery hints or categorization of errors as retryable vs user-fixable. Pattern baseline: 100% of A+ tools include recovery guidance.
No pagination documented for tools returning lists (blog_search, recent_blog_posts, all_blog_posts, list_repos). These tools should declare limit, offset/cursor, and total_count in schema. Baseline: tools returning lists must support pagination.
Tools provide no guidance on when to use one vs another. E.g., random_blog vs random_blog_url vs recent_blog_posts all return blog-related data with overlapping purposes. Descriptions should clarify the distinction.
Parameter 'repo' is repeated across 8 tools but is not enumerated. LLM must call list_repos first to discover valid values. Constraint as enum would improve discoverability.
No tool composition guidance. If an LLM wants to search and then read a post, it must infer the chain from tool names alone. Response from blog_search should include a field (e.g., url, post_id) that read_blog_post accepts directly.