MCP server for annotating classical Chinese poetry with four tones and pingze.
Project description
诗歌四声平仄标引 MCP
这是一个为古典诗歌逐字标引四声和平仄的 MCP Server,并保留数据来源、候选读音和人工复核状态。
项目支持两种运行模式:
- 本地完整研究版读取陆泉宇现有的私有 Excel 字表,提供较完整的证据字段;
- 公开安装版读取最小化衍生 SQLite 数据库,不包含原始 Excel、无关字段、整理备注、负责人信息或本机路径。
公开衍生数据库仍可被安装者提取和分析,因此它解决的是“不公开原始工作文件”,不是数据内容的密码学保密。
已实现的能力
lookup_character_tones
查询一个汉字的四声和平仄,可选传入诗句或词组作为上下文。定音优先级固定为:
- 《平水韵》
- 《广韵》
- 数据库字表
- 多音字词表“表1定音”
- 多音字词表“表2多音词组”
- 《广韵》未收字补充表(校订1.0)
同一级字表只有在四声唯一时才直接定音。若存在多个声调,工具保留全部记录并继续查询下一优先级。
annotate_poem_tones
标引一首诗的逐字四声和平仄。参数:
text:诗歌原文。unresolved_strategy:exclude或prosody_assisted。expected_chars_per_line:可选的预期句长,如 5 或 7;只用于检查,不会截断原文。
两种“多”处理方式:
exclude:保留“多”,并按被检验规则的单位排除样本:二四异声按句,联内“对”按联,跨联“粘”按相邻句组。结果中的rule_sample_eligibility会分别列出可用与排除单位。prosody_assisted:按照旧代码的随韵、二四异声、粘对和对式逻辑,选择合律度最高的读音。所有此类结果均标记为prosody_inferred,不会伪装成字书定音。
首句入韵允许按内置邻韵组通押;若多个最高合律方案并列且某位置仍不能唯一,保守地保留“多”。
get_annotation_method
返回当前服务版本、算法优先级、策略说明和五个私有数据文件的 SHA-256 指纹。结果不包含本机绝对路径,可用于论文方法记录和结果复算。
输出形式
MCP 工具返回结构化 JSON,同时提供便于阅读的三行式文本。例如:
白 日 依 山 盡
入 入 平 平 上
仄 仄 平 平 仄
逐字结果还包括:
- 原字与内部检索用规范字形;
- 最终四声和平仄;
- 候选四声、候选平仄和韵部;
- 每一级字表的查询记录;
- 定音来源与证据;
- 是否为格律推断;
- 是否需要人工复核;
- 该诗是否可用于完整四声或平仄统计。
- 二四异声、联内相对、跨联相粘各自应排除的句、联或相邻句组。
本机安装
当前电脑已完成安装。需要重建环境时,在 PowerShell 中运行:
cd "<项目目录>"
.\setup_local.ps1
启动 stdio MCP Server:
.\run_server.ps1
stdio 服务启动后不会出现普通交互界面;它等待 MCP 客户端通过标准输入输出调用。
公开安装包模式
在没有 config.local.toml 时,程序自动使用随包分发的精简衍生数据库。发布到 PyPI 后,用户可以运行:
uvx dhcckb-poetry-tone-mcp
当前只构建了本地待审 wheel,尚未上传璇琮或 PyPI。
从私有字表重新生成衍生数据库:
.\.venv\Scripts\python.exe .\scripts\build_public_bundle.py --config .\config.local.toml
构建并检查发行包:
.\.venv\Scripts\python.exe -m pip wheel . --no-deps --wheel-dir .\dist
.\.venv\Scripts\python.exe .\scripts\verify_distribution.py .\dist\dhcckb_poetry_tone_mcp-0.3.0-py3-none-any.whl
客户端配置
可直接参考 mcp-client-config.json。其中已经写入当前电脑的 Python、项目和本地配置路径。
不通过 MCP 的快速演示
$env:POETRY_TONE_MCP_CONFIG=(Resolve-Path '.\config.local.toml').Path
.\.venv\Scripts\python.exe .\scripts\demo.py "白日依山盡,黃河入海流。" --line-length 5
测试“排除样本”策略:
.\.venv\Scripts\python.exe .\scripts\demo.py "東丆東東東,東東東東東。" --strategy exclude --line-length 5
测试“随韵而协”策略:
.\.venv\Scripts\python.exe .\scripts\demo.py "東丆東東東,東東東東東。" --strategy prosody_assisted --line-length 5
需要完整 JSON 时追加 --json。
验证
运行全部自动测试:
$env:POETRY_TONE_MCP_CONFIG=(Resolve-Path '.\config.local.toml').Path
.\.venv\Scripts\python.exe -m pytest
目前测试覆盖:
- 六级证据链优先级;
- 《平水韵》多调时回退《广韵》;
- 数据库字表补充;
- 多音字固定定音与词组定音;
exclude与prosody_assisted;- 原文和繁简字形保留;
- 标准 MCP stdio 初始化、工具发现、工具调用和资源读取。
- 本地完整字表与公开衍生数据库的核心结果一致性;
- wheel 不包含原始工作簿、本机绝对路径或本地配置文件。
既有 Excel 回归对照:
.\.venv\Scripts\python.exe .\scripts\compare_existing.py --limit 200
报告位于 verification/旧版标引对照报告.json。它只用于观察新旧流程差异,不代替人工金标准准确率评测。
本地完整研究版与公开衍生包的对照:
.\.venv\Scripts\python.exe .\scripts\compare_bundle.py --limit 200
报告位于 verification/完整字表与公开衍生包对照报告.json。
当前未纳入
- 格律合规检测与病犯统计;
- Excel/CSV 批量导出;
- 词律、曲律与赋律;
- 远程 HTTP 部署。
数据范围与暂行许可
公开发行包只包含运行标引所需的最小化衍生 SQLite 数据库,不包含原始 Excel 工作簿、本地路径、释义、反切、声母、等第、整理备注或负责人信息。
本版本采用“保留所有权利”的暂行研究与演示条款。允许为个人学术研究、教
学、评估和演示目的下载、安装并运行未经修改的版本;不得未经书面许可重新
分发、商业使用、修改,或抽取并独立利用所附衍生数据库。详见 LICENSE。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file dhcckb_poetry_tone_mcp-0.3.0.tar.gz.
File metadata
- Download URL: dhcckb_poetry_tone_mcp-0.3.0.tar.gz
- Upload date:
- Size: 1.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Bun/1.3.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7eb2f7a62ae2aca3bd61dc2b7e27ced176d6660f55f67b5e7c8d2d2478847be0
|
|
| MD5 |
f1d75acc2990edb00fe8fb9ae2192be8
|
|
| BLAKE2b-256 |
222b34e5e3220cfe9e182b58e1e5d4cbd77fbe40b7512a1d243f49b800185a96
|