A collection of MCP servers for web content fetching, Hacker News search, Reddit search, Mermaid diagram generation, MySQL queries, and file searching with ripgrep
This MCP server exhibits significant gaps in definition quality across multiple dimensions. Of 21 tools, 15 have adequate schemas and descriptions, but naming inconsistencies, missing error handling guidance, and underdocumented parameter relationships are pervasive. Two tools (searchReddit, getRedditComments) appear twice with conflicting schemas, indicating poor composition and potential confusion. Tools like fetchWebContent and execute_sql lack actionable error messages. No tool demonstrates confirmation patterns for potentially destructive operations. Parameter descriptions exist but many lack clarity on constraints, formats, and dependencies. The average per-tool score is 52, reflecting the C-grade baseline for community MCP servers.
Check if ripgrep is installed on your system
Execute a read-only SQL query on the MySQL server. Write operations (CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, etc.) are not permitted.
Extract text from PDF or DOCX files
Fetch text content from a webpage using Playwright
Find files by name pattern without searching content
Generate a diagram image from Mermaid syntax
Get the content of a file
Duplicate tool definitions with conflicting schemas: searchReddit appears twice with different parameter structures (sort vs sort_type, different enums). getRedditComments appears twice with different sort_type values. This violates tool composition principle and will confuse LLMs about which version to invoke.
No error recovery guidance in any tool. Error messages in fetch.ts and hacker-news.ts throw generic UserError without suggesting next steps. Per pattern:recovery-guide, errors should say 'Try X instead' or 'Call Y to resolve this.' Example: fetchWebContent catch block should offer 'Consider reducing waitTime or checking the URL'.
Missing parameter constraints and formats. 'search' tool accepts 'pattern' as free-form string, no mention of regex vs literal, or validation rules. 'replace-preview' does not clarify if replacement supports backreferences.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Get a snippet from a file (specific lines)
Get all comments for a specific Hacker News story
Get details for a specific Hacker News item by ID
Get the current largest item ID from Hacker News
Get comments for a specific Reddit post
Get comments for a specific Reddit post
Get the latest stories from Hacker News by category
Get a user profile from Hacker News
List all file types supported by ripgrep
Preview text replacements (doesn't modify files)
Search file contents using ripgrep
Search for posts on Reddit by keyword
Search for posts on Reddit by keyword
Select a directory to search in with ripgrep
Weak or vague tool names fail verb-noun convention. 'check-ripgrep' is vague, does it validate installation, run diagnostics, or return version? 'select-directory' suggests UI interaction but is actually a parameter validator. Better: 'validate_ripgrep_installed', 'set_search_directory'. Per naming baseline, 90% of A+ tools start with clear action verbs.
Missing descriptions for context and use-case guidance. 'getMaxItemId' description is only ~40 chars and does not explain when an LLM should call it (e.g., 'Call before getStories to validate item ID ranges'). When? Prerequisites? Many descriptions are under 100 chars.
No confirmation pattern for destructive operations. 'execute_sql' description warns about read-only restriction but does not show a confirmation or dry-run mechanism. Per pattern:confirmation-request, irreversible operations should support preview or confirmation.
Parameter relationships undocumented. 'search' tool has mutually exclusive flags (ignoreCase vs smartCase) but descriptions do not state the precedence or interaction. 'searchReddit' has sort and sort_type that interact, no documentation of which overrides.
No pagination guidance for list-like tools. Hacker News tools accept 'limit' but do not document whether they support offset/cursor-based pagination, or what happens when limit exceeds the available pool. Per pattern:paginated-result, tools returning lists should describe pagination behavior.
Inconsistent parameter naming across similar tools. Reddit tools use 'q' for query; web content uses URL directly; ripgrep uses 'pattern'. No consistent convention for 'search input'. Per review:name-clarity baseline, consistent parameter naming reduces LLM confusion.
Output schemas not explicitly documented. Tools return JSON text blobs (hacker-news.ts returns JSON.stringify) with no type hint. Per pattern:response-shaper, output must be documented so LLMs know what fields to expect. Example: getStories returns {stories: [], count: number, metadata: {}}, but this is implicit from code, not in the schema.