用途
chinese-history-mcp 旨在填补公共 MCP 生态中缺少中国古典历史/中文历史服务器的空白。它面向需要从先秦至汉魏经典文本中检索可引用事实的场景,让下游 LLM 或应用能够基于带出处的原文进行回答,而不是凭空生成。项目定位为公共公益性质,收入预期为零。
主要能力
服务器提供四个 MCP 工具,覆盖九部经典文本(先秦-汉魏):史记、汉书、后汉书、三国志、左传、论语、孟子、吕氏春秋、资治通鉴。支持按以下四轴查询:
- 事件
- 人物
- 今地名
- 品质
每次工具调用返回 JSON。多来源事件、人物评价、地点/品质关联均携带精确的【书 → 章 → 段】引用。
使用方式
需要 Python 3.9+(仅标准库,不安装其他依赖)。服务器通过 stdio 上的 MCP 协议通信(换行分隔的 JSON-RPC 2.0)。
安装
pip install chinese-history-mcp
或直接在检出目录运行,无需安装。
在 MCP 客户端中配置
Claude Desktop(claude_desktop_config.json)、Cline、Continue 等:添加一个 stdio 服务器。安装后配置如下:
(配置内容见官方仓库文档)
零安装方式:uvx chinese-history-mcp --db /path/to/corpus.db
手动握手测试
python3 scripts/mcp_demo.py --db /path/to/corpus.db
运行四个工具的脚本化演示,同时也可作为最小 MCP 客户端参考。
语料库数据库
corpus.db 不在仓库中(约 90 MB 二进制文件)。从仓库的 Releases 下载,并通过 --db 指向它,或设置环境变量 STORYEXTRACTOR_DB=/path/to/corpus.db。运行时数据库为只读。
诚实性说明
服务器设计目标是提供溯源,而非将机器输出伪装成学术成果。下游客户端和 LLM 不得将其结果呈现为“逐条经过人工审核”。每条响应都标注内容性质:
- 事件 review_status='approved':多为机器批量批准的可靠推断,并非逐条人工审核。
- 人物档案 review_status='draft':由 LLM 合成,未经人工审查。
- 品质映射:auto_approved = 多 LLM 机器共识,draft = 待审核;evidence_quote 是来源中的真实子串,rationale 是 LLM 的推理。
- 地点映射:多为多 LLM 机器共识(auto_approved),少数经人工批准;confidence 分为 high/medium/doubtful 三档。
- 文本:原文为公共领域白文,带机器生成的标点/分词;白话翻译完全由机器生成。
服务器不能消除下游幻觉:它提供可引用的检索事实,但基于其上的 LLM 仍可能围绕这些事实编造。引用是供人工核验的锚点。
范围仅限于上述九部文本——“未找到”意味着“不在本语料库中”,而非“历史上未发生”。
数据与来源
- 原文:公共领域古典中文白文(来自公共领域版本的未标点基础文本),标点和分词为自行生成、机器产出(并非复制任何现代校注本)。
- 白话翻译:全语料库机器生成。
- 注释(事件/实体/地点/品质):机器辅助,部分层级有人工审核门控;每条记录报告状态。
- 代码(本仓库):MIT,见 LICENSE。
- 语料数据(corpus.db,通过 Releases 分发):CC BY 4.0。
文本层基于公共领域基础文本自行生成(标点/分词),因此可自由分发;机器生成的属性全程标注以符合 AIGC 合规要求。
设计说明
- 纯标准库手写 stdio JSON-RPC 2.0(initialize / tools/list / tools/call + ping / notifications),无第三方 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 即可运行。
限制
- 语料范围仅为九部文本,不覆盖其他历史资料。
- 部分内容为机器生成或机器审核,并非逐条人工审核。
- 服务器本身不消除下游幻觉。
- 运行时数据库只读,不执行写入。
- 收入预期为零,目标为公共公益。
- 贡献时需遵守约束:零运行时依赖、只读、每条结果带引用、诚实 review_status。