A Next.js MCP server providing news, gaming, academic paper search, and utility tools
This server has 5 tools with varying quality. Tool names follow verb_noun convention (arxiv_search, game_tool, hackernews_get, echo, get_news) but some are overly generic or combine multiple concerns. Descriptions exist for all tools and most parameters, but many lack sufficient detail for LLM disambiguation. Schema definitions are present using Zod but output structures are not documented. The game_tool is particularly problematic, it bundles 4 unrelated operations (freeGame_epic, newGame_metacritic, search_metacritic, newGame_switch2) into a single tool with weak enum documentation. Parameter descriptions are brief (many under 100 chars) and lack format constraints. Error handling is minimal, most tools return generic error text wrapped in JSON. No tool has documented output schemas, which forces LLMs to guess at response structure. arxiv_search has the best documentation with detailed category information; hackernews_get and get_news lack context on why users would pick one type over another.
Search arXiv for academic papers using various search prefixes
Echo a message
Multi-purpose game tool for Epic/Steam free games and Metacritic data
Get news data from various platforms, 获取各平台新闻数据
Get Hacker News stories or a specific item by ID
game_tool combines 4 unrelated operations (epic/steam games, metacritic releases, metacritic search, switch 2 games) into one tool with weak semantic separation. The type enum lacks descriptions for each variant's purpose and when to use each. This violates single-responsibility principle and forces LLMs to reason about which subcommand applies.
No tool documents its output schema. Responses return JSON strings wrapped in text/content blocks, but the LLM has no machine-readable schema describing field names, types, or nested structure. This forces LLMs to infer structure from examples, risking parsing errors and hallucination.
Parameter descriptions are terse and lack actionable context. E.g., hackernews_get's 'limit' param says 'Maximum number of stories to return (default: 10, max: 500)' but doesn't explain when to use limit vs item_id or how pagination works. get_news type enum has Chinese text mixed with English but no description of what each platform returns or when to prefer one.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 50 | - | v1 |
echo tool is diagnostic/testing only ('Echo a message') with no clear use case in a production agent. It should be removed or renamed to clarify it's a health check, not a business tool.
Error handling is minimal. All tools catch errors and return text like 'Error searching arXiv: {message}' but don't guide recovery. No distinction between retryable (network timeout), user-fixable (invalid parameter), or fatal errors. No suggestions for next steps.
get_news parameter description includes enum values without semantic explanation. Chinese platform names (bilibili, zhihu, tieba, sspai, etc.) lack English descriptions of what type of content each returns, when they're updated, or quality/reliability notes that would help an LLM choose.
arxiv_search's category documentation is excessive (nested cs.* subcategories in the description), wasting tokens. This detail should be in a reference link or extracted to a separate discovery tool, not embedded in the parameter description.