A traceable Chinese-history MCP server: 4 tools over 9 classical texts, every result cited (book→chapter→paragraph). Zero runtime dependencies.
Four well-defined tools with complete JSON schemas, clear descriptions, and proper parameter typing. Tool names follow verb_noun convention (search_, get_, query_). Descriptions are detailed (150-250 chars) and explain WHAT, WHEN, and output semantics. All parameters have type and description. However, output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal (no recovery guidance). No tool annotations (readOnlyHint, etc.). Composition is sound: each tool has one responsibility, names are distinct, and parameters are well-constrained.
查人物画像 + 他者评价 + 参与事件 (逐条带出处)。画像 (profile) 为 LLM 综合生成、review_status=draft (未逐条人核); 他者评价 excerpt 是公版原文照抄可溯源; 附史料评为的品质。库内为先秦-汉魏人物。
用今天的地名反查发生在这块土地上的古籍故事 + 出处。今地名可为省/地级市/区县 (如 '西安'、'陕西西安'、'洛阳')。古今映射多为多 LLM 机审共识 (auto_approved); 同名异地/古名多解时返回候选列表让你消歧, 绝不替你单选; 方向性泛称 (江东/关中) 不收录。
按品质 (德性/才能/性情/为政…) 查代表性最强的事件/人物/故事 + 原文证据。品质取自 55 词受控词表 (如 忠/谋略/勇/仁/残暴/骄), 可用中文名或英文 slug。映射是【判断】非事实: auto_approved=机审高置信、draft=待人审; evidence_quote 是原文真子串; 默认只出机审通过。
查跨书融合历史事件 + 逐源出处。同一史事在史记/汉书/资治通鉴等多书的记载被合并为一条, 每个来源带【书·篇·段】与角色 (主叙/详述/简述/评论/旁证)。返回 review_status (approved=机审批量过审的可信推定, 非逐条人审); canonical_summary 为 LLM 融合的机器叙述。
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Forces trial-and-error parsing and wastes tokens on clarification.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All four tools are read-only but this is not declared in the schema, forcing LLMs to infer safety from descriptions alone.
Error handling lacks recovery guidance. Code shows _dispatch_tool raises KeyError on unknown tool name, but no structured error response with actionable next steps for LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Parameter 'book' in search_events lists valid values in description but not as enum constraint. LLMs may hallucinate invalid book slugs instead of picking from the documented list.
Parameter 'kind' in search_events uses pipe-delimited string in description ('事件'|'场景'|'评价') instead of enum. Should be declared as enum type for machine-parseable constraints.