MCP server providing access to Juhe API services including weather, news, calendar, and oil price data
Server has 8 tools with basic Zod schemas and descriptions, but significant quality gaps. All tools have descriptions (positive), but most are very short (10-30 chars, below the 50-200 char LLM-optimized baseline). Naming is inconsistent: 'hello' lacks verb prefix; 'getToutiaoNews' uses camelCase instead of snake_case; 'calendar_day/month/year' are unclear about what they return. Parameter descriptions are minimal (e.g., '城市名称' for city, '新闻类型' for type). No output schemas documented. Error handling is minimal, tools throw generic errors without recovery guidance. No pagination support despite tools returning lists. No tool annotations (readOnlyHint, etc.). Composition is weak: getToutiaoNews and getToutiaoContent require manual chaining without clear ID passing. Overall, this is a functional but below-average community server.
万年历-获取当天的详细信息,根据传入日期返回当天详细信息
万年历-获取近期假期,根据传入的月份返回近期的假期列表(起始年份为2013年)
万年历-获取当年的节假日列表
获取全国油价
获取今日头条新闻内容
获取今日头条新闻,重点记录uniquekey
获取某个城市的天气信息
Tool names lack consistent verb prefixes and use camelCase instead of snake_case. 'hello' should be 'greet' or 'send_greeting'; 'getWeather' should be 'get_weather'; 'getToutiaoNews' should be 'get_toutiao_news'. LLMs rely on verb_noun naming to infer intent.
Descriptions are too short (10-35 chars, well below 50-200 char baseline). Examples: '打招呼' (4 chars), '获取某个城市的天气信息' (12 chars). LLMs cannot determine when/why to select tools from such brief descriptions. Expand to explain WHAT, WHEN, and WHAT IT RETURNS.
No output schemas documented. Tools return unstructured text (buildTextContent wraps results as plain strings). LLMs cannot plan downstream calls or extract structured data. Document what fields each tool returns (e.g., weather returns temp, humidity, condition).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
打招呼
Error handling is minimal. Tools throw generic errors ('获取万年历近期假期失败') without recovery guidance. Per pattern:recovery-guide, errors should tell LLMs what to do next (e.g., 'City not found. Try search_cities() first.').
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are READ_ONLY but this is not declared in the tool definition. Agents cannot distinguish safe from destructive operations.