关于 chinese-history-mcp
chinese-history-mcp 是只读 MCP 服务,可查询涵盖先秦至魏晋的九部古典中文文献,适用于历史研究与资料检索;结果附出处引文和明确的审核状态标记。
主要功能
- 01跨文献搜索历史事件
- 02检索带出处的人物资料与关系
- 03按现代地名查询故事
- 04按受控品质词表检索记录
- 05返回书名、篇章和段落引文
适用场景
- 01追溯多个文献中的同一历史事件
- 02核对人物的引文记载与评价
- 03查找与现代地点相关的历史故事
MCP 相关
该服务向 MCP 客户端提供四种返回 JSON 的工具:事件搜索、人物查询、地点查询和品质查询。结果包含来源引文与审核状态元数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
chinese-history-mcp
一个可溯源的中国历史 MCP 服务。通过 4 个模型上下文协议工具,查询9 部中国古典文献(先秦至魏晋——史记 / 汉书 / 后汉书 / 三国志 / 左传 / 论语 / 孟子 / 吕氏春秋 / 资治通鉴)。每条结果都附有【书名 → 篇章 → 段落】出处,并如实报告其 review_status——服务绝不会声称自己没有的逐条人工审核。
一个可溯源的中国历史故事 MCP 服务:按事件 / 人物 / 今地名 / 品质四轴查询 先秦-汉魏九部正史子书,每条返回都带原文出处,机器生成/机审内容如实标注。
- 运行时零依赖——仅使用 Python 标准库。不必
pip install框架,也不需要 MCP SDK;整个服务只需审查少量文件。 - 只读——以
mode=ro和PRAGMA query_only打开语料库;绝不写入。 - 从设计上保证诚实——每个响应都标注机器生成的标点 / 翻译和机器裁定的状态(符合 AIGC 规范)。
项目缘起:截至 2026 年年中,公开的 MCP 生态中没有中国古典文献 / 中国历史服务。本项目旨在填补这一空白。收入预期为零;目标是打造有用的公共产品。
目录:四个工具 · 安装与运行 · 语料库数据库 · 诚实性 · 数据与溯源 · 设计说明
四个工具
| 工具 | 输入 | 返回内容 |
|---|---|---|
search_events | keyword / book / person / kind / limit | 跨书融合的历史事件,并提供每个来源的溯源信息(书名 · 篇章 · 段落 + 角色:主要 / 详细 / 简要 / 评论 / 佐证)。canonical_summary 是由大模型融合生成的机器叙述。可选的 kind 筛选条件(事件 / 场景 / 评价;不设置 = 全部,包括评价事件)。time_label 可能由已审核的时间锚点推导得出——time_label_source 会说明来源(手动或推导;0.2 之前的数据中省略)。 |
get_person | name(本名或别名) | 人物档案(由大模型综合生成,draft)+ 他人的评价(原文引述,每条均注明出处)+ 归属其名下的品质 + 提及该人物的事件 + 人物间关系(封闭的 26 类词汇——亲属 / 君臣 / 师承 / 结盟 / 仇敌;经机器审核,仅公开 approved / auto_approved 状态,无时间范围;0.2 之前的数据中为空)。 |
query_by_place | place(当今地名) / limit | 发生在现代地点所在地域的古代故事,并附有出处。同名异地时会返回候选项供你判别——绝不会暗中替你选定一个。排除表示方向 / 区域的泛称。 |
query_by_quality | quality(取自含 55 个词条的受控词表,例如忠、谋略) / limit / include_draft | 与某项品质相关的代表性事件、人物和故事,每项都附有原文 evidence_quote 和理由。 |
每次工具调用都会返回 JSON。多来源事件、人物评价和地点 / 品质关联都会附上其确切出处【书名 → 篇章 → 段落】——这正是此服务的意义所在。
安装与运行
需要 Python 3.9+(仅使用标准库——不会安装其他内容)。 服务通过 stdio 使用 MCP(以换行符分隔的 JSON-RPC 2.0)。
pip install chinese-history-mcp
# then (after downloading corpus.db from Releases — see below):
chinese-history-mcp --db /path/to/corpus.db
也可以不安装,直接从检出目录运行:
PYTHONPATH=src python3 -m storyextractor.mcp.server --db /path/to/corpus.db
在 MCP 客户端中配置
Claude Desktop(claude_desktop_config.json)、Cline、Continue 等——添加一个
stdio 服务。安装 chinese-history-mcp 后:
{
"mcpServers": {
"chinese-history": {
"command": "chinese-history-mcp",
"args": ["--db", "/path/to/corpus.db"]
}
}
}
替代方式:从检出目录运行(无需安装),或使用 uvx
{
"mcpServers": {
"chinese-history": {
"command": "python3",
"args": ["-m", "storyextractor.mcp.server", "--db", "/path/to/corpus.db"],
"env": { "PYTHONPATH": "src" },
"cwd": "/absolute/path/to/chinese-history-mcp"
}
}
}
或者使用 uv 实现零安装:
uvx chinese-history-mcp --db /path/to/corpus.db。
手动尝试一次握手
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{}}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
'{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"query_by_quality","arguments":{"quality":"忠","limit":2}}}' \
| chinese-history-mcp --db /path/to/corpus.db
演示与幻觉对比
运行 python3 scripts/mcp_demo.py --db /path/to/corpus.db,即可按脚本演示
全部四种工具(也是一个精简的 MCP 客户端参考示例)。有关同一组问题的**裸大模型
(捏造/无法引用)与本服务(可引用)**并排对比,请参阅
docs/MCP_DEMO.md。
语料库数据库
corpus.db 不在此仓库中(它是一个约 90 MB 的二进制文件)。请从此仓库的
发行版 下载,并将 --db 指向该文件,或设置
STORYEXTRACTOR_DB=/path/to/corpus.db。
数据库在运行时为只读。如果将其托管在只读介质上,请确保发行版文件是通过
sqlite3 corpus.db "VACUUM INTO 'corpus_release.db'" 生成的(单个文件,不带
-wal/-shm 辅助文件)。
诚信说明(请阅读)
此服务旨在保留来源信息,而非将机器输出包装成学术成果。**下游客户端和大模型不得将其结果表述为“经过逐条人工审核”。**每条响应都会标明其性质:
- 事件
review_status='approved'——大多是经批量机器审核认可的可信推断,并非逐条人工审核。 - 人物档案
review_status='draft'——由大模型合成,未经人工审定。 - 质量映射——
auto_approved= 多个大模型达成的机器共识,draft= 待审核;evidence_quote是源文本中的真实子串,rationale是大模型的推理。 - 地点映射——大多来自多个大模型的机器共识(
auto_approved),少数经过人工批准;置信度分为高/中/存疑。 - 文本——原文是公有领域的白文,标点和分段由机器生成;白话文译文完全由机器生成。
此服务也无法消除下游幻觉:它提供的是可引用的检索事实;基于这些事实构建的大模型仍可能围绕它们虚构内容。引用是供人工核验的依据。
范围仅限上述 9 部文本——“未找到”意为“不在此语料库中”,而非“没有发生”。
数据与来源
- 原文:公有领域的古典中文白文(来自公有领域版本的无标点底本文本),并附有自行制作、由机器生成的标点和分段(并非复制自任何现代标注/校勘版本)。
- 白话文译文:整个语料库均为机器生成。
- 标注(事件/实体/地点/品质):借助机器完成,部分层级设有人审门槛;每条记录都会报告其状态。
许可证
- 代码(此仓库):MIT——请参阅 许可证。
- 语料库数据(
corpus.db,通过 Releases 分发):CC BY 4.0。
文本层是在公有领域底本文本上自行制作的(添加标点/分段),因此可自由分发;机器生成的属性均已标注,以符合 AIGC 要求。
设计说明
- 纯标准库手写的 stdio JSON-RPC 2.0(
initialize/tools/list/tools/call+ping/ 通知)。不使用第三方 MCP SDK。 - 只读数据库访问(
src/storyextractor/mcp/db.py):mode=ro+PRAGMA query_only;运行迁移的db.connect在服务运行时不会被使用。 - 测试:
python3 tests/test_mcp_server.py(强制只读、协议格式/错误代码、如实返回review_status、别名令牌精确匹配 + 消歧、转义 LIKE 通配符)——构建临时测试数据库,因此无需corpus.db即可运行。
贡献与项目说明
- CONTRIBUTING.md — 如何运行测试/代码检查,以及本项目秉持的原则。
- CHANGELOG.md — 发布历史。
- SECURITY.md — 威胁面(只读、无网络)以及如何报告问题。
欢迎提交问题和拉取请求。请牢记以下约束:
运行时零依赖、只读、每项结果都有引用、如实返回 review_status。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。