{"_id":"@dhcckb/poetry-graph-mcp","_rev":"2-0360ff6feeb770d623bfd9273d6e418f","name":"@dhcckb/poetry-graph-mcp","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@dhcckb/poetry-graph-mcp","version":"1.0.0","keywords":["mcp","mcp-server","poetry","chinese-classical-literature","knowledge-graph","digital-humanities","song-dynasty","social-network-analysis","gephi","cnkgraph"],"author":{"name":"DHCCKB"},"license":"MIT","_id":"@dhcckb/poetry-graph-mcp@1.0.0","maintainers":[{"name":"thudh","email":"tangchen@mail.tsinghua.edu.cn"}],"homepage":"https://github.com/dhcckb/poetry-graph-mcp#readme","bugs":{"url":"https://github.com/dhcckb/poetry-graph-mcp/issues"},"bin":{"poetry-graph-mcp":"dist/index.js"},"mcp":{"tools":[{"name":"search_poems_by_person","description":"输入一个宋代人名（支持别名、字号自动归一），返回以此人为作者或诗中涉及对象的所有诗文列表。底层调用 CNKGraph 知识图谱 API 的人物检索与诗文查询接口。每条结果包含诗题、创作时间、创作地点、作者标准名和涉及对象。","inputSchema":{"type":"object","required":["person_name"],"properties":{"page":{"type":"integer","default":1,"description":"分页页码"},"role":{"enum":["author","subject","both"],"type":"string","default":"both","description":"检索角色：author=仅作为作者，subject=仅作为诗中涉及对象，both=两者都检索"},"page_size":{"type":"integer","default":50,"description":"每页条数"},"person_name":{"type":"string","description":"要检索的宋代人名，支持标准名、字号、别名"}}}},{"name":"filter_poems_by_relation","description":"在检索结果的基础上，按指定对象（一人或多人）或范围（时间区间、地点）筛选诗文。返回仅与指定对象/范围相关的条目。","inputSchema":{"type":"object","required":["person_name"],"properties":{"page":{"type":"integer","default":1},"location":{"type":"string","description":"创作地点关键词（可选）"},"page_size":{"type":"integer","default":50},"time_range":{"type":"object","properties":{"end":{"type":"string","description":"结束年份或朝代年号"},"start":{"type":"string","description":"起始年份或朝代年号"}},"description":"创作时间范围（可选）"},"person_name":{"type":"string","description":"作者名（必填，确定检索主体）"},"target_persons":{"type":"array","items":{"type":"string"},"description":"要筛选的涉及对象列表，可传多个人名；留空则不按对象筛选"}}}},{"name":"apply_classification_rules","description":"允许用户自定义诗文关系类型的判定规则。内置唱和、寄赠、悼亡、送别、怀古、咏物、山水等常见类型的默认关键词集合，也接受用户传入自定义正则或关键词列表。对检索结果逐条标注关系类型。","inputSchema":{"type":"object","required":["poem_ids"],"properties":{"poem_ids":{"type":"array","items":{"type":"string"},"description":"要分类的诗文 ID 列表，由前序检索工具返回"},"custom_rules":{"type":"array","items":{"type":"object","required":["label"],"properties":{"label":{"type":"string","description":"自定义关系类型名称"},"pattern":{"type":"string","description":"正则表达式（可选，与 keywords 二选一或组合）"},"keywords":{"type":"array","items":{"type":"string"},"description":"匹配关键词列表"},"match_field":{"enum":["title","content","both"],"type":"string","default":"both","description":"在诗题还是正文中匹配"}}},"description":"用户自定义判定规则列表"},"preset_types":{"type":"array","items":{"enum":["changhe","jizeng","daowang","songbie","huaigu","yongwu","shanshui","other"],"type":"string"},"description":"要启用的内置关系类型"}}}},{"name":"export_network_csv","description":"将标注完成的诗文列表导出为 UTF-8 CSV 文件，输出到本地路径。CSV 包含 Gephi 导入所需的全部 6 个字段（作者标准名、涉及对象标准名、关系类型、完整诗题、创作时间、创作地点）。支持覆盖和增量追加两种模式，内置重复数据去重。","inputSchema":{"type":"object","required":["poems","output_path"],"properties":{"mode":{"enum":["overwrite","append"],"type":"string","default":"overwrite","description":"导出模式：overwrite=覆盖（默认），append=增量追加（自动去重）"},"poems":{"type":"array","items":{"type":"object","required":["author_standard_name","target_standard_name","poem_title"],"properties":{"poem_title":{"type":"string"},"creation_time":{"type":"string"},"relation_type":{"type":"string"},"creation_location":{"type":"string"},"author_standard_name":{"type":"string"},"target_standard_name":{"type":"string"}}},"description":"诗文列表，由 classify 工具返回或手动组装"},"output_path":{"type":"string","description":"CSV 输出文件路径（含 .csv 扩展名），如 ~/Downloads/song_poetry_network.csv"}}}}],"server":{"env":{"POETRY_KG_API_BASE":{"default":"https://open.cnkgraph.com","description":"CNKGraph API 基础 URL"},"POETRY_KG_API_TOKEN":{"description":"API 认证令牌"}},"args":["-y","@dhcckb/poetry-graph-mcp"],"name":"poetry-graph-mcp","command":"npx","version":"1.0.0","description":"古典文献知识图谱 MCP Server — 宋代诗人关系网络检索、筛选、分类与 CSV 导出"}},"dist":{"shasum":"79a40e7da7e598fd5f90ee9e503ce54bd95e07b3","tarball":"https://registry.npmjs.org/@dhcckb/poetry-graph-mcp/-/poetry-graph-mcp-1.0.0.tgz","fileCount":43,"integrity":"sha512-DWTa+eo3vcCrP8TC+PCegk6iAWOXtQJSuIOlR9AIN66vzXG0P/TqfAayM5QktqP/mlCoPabYrPQ1zjGyKeARzA==","signatures":[{"sig":"MEUCIQCLKrTy6F5b715G/Uf7++QyLsjctBJytoU+6grtHbud/AIgGNJaKu+pbvYqCJtrQRcuMbamWcEt7RXtlR+DJ96iBHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102289},"main":"dist/index.js","_from":"file:/tmp/dhp-agent-npm-aadkGH/package.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"scripts":{"build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"thudh","email":"tangchen@mail.tsinghua.edu.cn"},"_resolved":"/tmp/dhp-agent-npm-aadkGH/package.tgz","_integrity":"sha512-DWTa+eo3vcCrP8TC+PCegk6iAWOXtQJSuIOlR9AIN66vzXG0P/TqfAayM5QktqP/mlCoPabYrPQ1zjGyKeARzA==","repository":{"url":"git+https://github.com/dhcckb/poetry-graph-mcp.git","type":"git"},"_npmVersion":"10.9.1","description":"古典文献知识图谱 MCP Server — 宋代诗人关系网络检索、筛选、分类与 CSV 导出","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/poetry-graph-mcp_1.0.0_1785214421106_0.3766112709264131","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@dhcckb/poetry-graph-mcp","version":"1.1.0","description":"古典文献知识图谱 MCP Server — 宋代诗人关系网络检索、筛选、分类与 CSV 导出","main":"dist/index.js","bin":{"poetry-graph-mcp":"dist/index.js"},"scripts":{"build":"tsc","start":"node dist/index.js"},"keywords":["mcp","mcp-server","poetry","chinese-classical-literature","knowledge-graph","digital-humanities","song-dynasty","social-network-analysis","gephi","cnkgraph"],"repository":{"type":"git","url":"git+https://github.com/dhcckb/poetry-graph-mcp.git"},"license":"MIT","author":{"name":"DHCCKB"},"engines":{"node":">=18"},"mcp":{"server":{"name":"poetry-graph-mcp","version":"1.1.0","description":"古典文献知识图谱 MCP Server — 宋代诗人关系网络检索、筛选、分类与 CSV 导出","command":"npx","args":["-y","@dhcckb/poetry-graph-mcp"],"env":{"POETRY_KG_API_BASE":{"description":"CNKGraph API 基础 URL","default":"https://open.cnkgraph.com"},"POETRY_KG_API_TOKEN":{"description":"API 认证令牌"}}},"tools":[{"name":"search_poems_by_person","description":"输入一个宋代人名（支持别名、字号自动归一），返回以此人为作者或诗中涉及对象的所有诗文列表。底层调用 CNKGraph 知识图谱 API 的人物检索与诗文查询接口。每条结果包含诗题、创作时间、创作地点、作者标准名和涉及对象。","inputSchema":{"type":"object","properties":{"person_name":{"type":"string","description":"要检索的宋代人名，支持标准名、字号、别名"},"role":{"type":"string","enum":["author","subject","both"],"default":"both","description":"检索角色：author=仅作为作者，subject=仅作为诗中涉及对象，both=两者都检索"},"page":{"type":"integer","default":1,"description":"分页页码"},"page_size":{"type":"integer","default":50,"description":"每页条数"}},"required":["person_name"]}},{"name":"filter_poems_by_relation","description":"在检索结果的基础上，按指定对象（一人或多人）或范围（时间区间、地点）筛选诗文。返回仅与指定对象/范围相关的条目。","inputSchema":{"type":"object","properties":{"person_name":{"type":"string","description":"作者名（必填，确定检索主体）"},"target_persons":{"type":"array","items":{"type":"string"},"description":"要筛选的涉及对象列表，可传多个人名；留空则不按对象筛选"},"time_range":{"type":"object","properties":{"start":{"type":"string","description":"起始年份或朝代年号"},"end":{"type":"string","description":"结束年份或朝代年号"}},"description":"创作时间范围（可选）"},"location":{"type":"string","description":"创作地点关键词（可选）"},"page":{"type":"integer","default":1},"page_size":{"type":"integer","default":50}},"required":["person_name"]}},{"name":"apply_classification_rules","description":"允许用户自定义诗文关系类型的判定规则。内置唱和、寄赠、悼亡、送别、怀古、咏物、山水等常见类型的默认关键词集合，也接受用户传入自定义正则或关键词列表。对检索结果逐条标注关系类型。","inputSchema":{"type":"object","properties":{"poem_ids":{"type":"array","items":{"type":"string"},"description":"要分类的诗文 ID 列表，由前序检索工具返回"},"preset_types":{"type":"array","items":{"type":"string","enum":["changhe","jizeng","daowang","songbie","huaigu","yongwu","shanshui","other"]},"description":"要启用的内置关系类型"},"custom_rules":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"自定义关系类型名称"},"keywords":{"type":"array","items":{"type":"string"},"description":"匹配关键词列表"},"pattern":{"type":"string","description":"正则表达式（可选，与 keywords 二选一或组合）"},"match_field":{"type":"string","enum":["title","content","both"],"default":"both","description":"在诗题还是正文中匹配"}},"required":["label"]},"description":"用户自定义判定规则列表"}},"required":["poem_ids"]}},{"name":"export_network_csv","description":"将标注完成的诗文列表导出为 UTF-8 CSV 文件，输出到本地路径。CSV 包含 Gephi 导入所需的全部 6 个字段（作者标准名、涉及对象标准名、关系类型、完整诗题、创作时间、创作地点）。支持覆盖和增量追加两种模式，内置重复数据去重。","inputSchema":{"type":"object","properties":{"poems":{"type":"array","items":{"type":"object","properties":{"author_standard_name":{"type":"string"},"target_standard_name":{"type":"string"},"relation_type":{"type":"string"},"poem_title":{"type":"string"},"creation_time":{"type":"string"},"creation_location":{"type":"string"}},"required":["author_standard_name","target_standard_name","poem_title"]},"description":"诗文列表，由 classify 工具返回或手动组装"},"output_path":{"type":"string","description":"CSV 输出文件路径（含 .csv 扩展名），如 ~/Downloads/song_poetry_network.csv"},"mode":{"type":"string","enum":["overwrite","append"],"default":"overwrite","description":"导出模式：overwrite=覆盖（默认），append=增量追加（自动去重）"}},"required":["poems","output_path"]}},{"name":"query_biography","description":"直接调用 CNKGraph Biography API，查询一个人与一个或多个交游对象之间的诗文关系。输入 Author（必填）和 Friend（必填，支持单人或多人数组），可选传入时间范围、地点、朝代等筛选条件，一次性返回包含作者标准名、交游对象标准名、关系类型、诗题、创作时间、创作地点的结构化数据列表，结果可直接送入 export_network_csv 导出。","inputSchema":{"type":"object","properties":{"author":{"type":"string","description":"作者名（必填）"},"friends":{"type":"array","items":{"type":"string"},"description":"交游对象列表（必填，支持多人）"},"begin_year":{"type":"string","description":"起始年份（可选）"},"end_year":{"type":"string","description":"结束年份（可选）"},"scope":{"type":"string","description":"空间范围（可选）"},"begin_place":{"type":"string","description":"起始地点（可选）"},"end_place":{"type":"string","description":"结束地点（可选）"},"marked_poem_ids":{"type":"array","items":{"type":"string"},"description":"标记诗文 ID 列表（可选）"},"labels":{"type":"array","items":{"type":"string"},"description":"标签列表（可选）"},"details_in_raw":{"type":"boolean","description":"是否返回原始详情（可选）"},"dynasty":{"type":"string","description":"朝代（可选）"}},"required":["author","friends"]}}]},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0"},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.3.0"},"_id":"@dhcckb/poetry-graph-mcp@1.1.0","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/dhcckb/poetry-graph-mcp/issues"},"homepage":"https://github.com/dhcckb/poetry-graph-mcp#readme","_integrity":"sha512-ZdmQZ49oYyQyM4qxqgUxi7M/14+3QDZ4iVrESqwvVI/wS8TvkhbEdMb/K1YsyIWgPRE7qKaxj0+DsCMRUQSH/Q==","_resolved":"/tmp/dhp-agent-npm-lGdahA/package.tgz","_from":"file:/tmp/dhp-agent-npm-lGdahA/package.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.1","dist":{"integrity":"sha512-ZdmQZ49oYyQyM4qxqgUxi7M/14+3QDZ4iVrESqwvVI/wS8TvkhbEdMb/K1YsyIWgPRE7qKaxj0+DsCMRUQSH/Q==","shasum":"2bd315d318078c0d6ddc024e36ce2777092f47db","tarball":"https://registry.npmjs.org/@dhcckb/poetry-graph-mcp/-/poetry-graph-mcp-1.1.0.tgz","fileCount":47,"unpackedSize":123640,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHK0umCs1BGWe7B24uAalVhuqBrJz6yFomhEDMaSxm3vAiADoUQhEFe1mus33A8JhI5qANr0neMOIG7Hy4a0FaLRrw=="}]},"_npmUser":{"name":"thudh","email":"tangchen@mail.tsinghua.edu.cn"},"directories":{},"maintainers":[{"name":"thudh","email":"tangchen@mail.tsinghua.edu.cn"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/poetry-graph-mcp_1.1.0_1785246598644_0.27997862334349266"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-28T04:53:40.881Z","modified":"2026-07-28T13:49:58.982Z","1.0.0":"2026-07-28T04:53:41.265Z","1.1.0":"2026-07-28T13:49:58.796Z"},"bugs":{"url":"https://github.com/dhcckb/poetry-graph-mcp/issues"},"author":{"name":"DHCCKB"},"license":"MIT","homepage":"https://github.com/dhcckb/poetry-graph-mcp#readme","keywords":["mcp","mcp-server","poetry","chinese-classical-literature","knowledge-graph","digital-humanities","song-dynasty","social-network-analysis","gephi","cnkgraph"],"repository":{"type":"git","url":"git+https://github.com/dhcckb/poetry-graph-mcp.git"},"description":"古典文献知识图谱 MCP Server — 宋代诗人关系网络检索、筛选、分类与 CSV 导出","maintainers":[{"name":"thudh","email":"tangchen@mail.tsinghua.edu.cn"}],"readme":"# poetry-graph-mcp\n\n古典文献知识图谱 MCP Server — 宋代诗人关系网络检索、筛选、分类与 CSV 导出。\n\n## 简介\n\n`poetry-graph-mcp` 是一个 [MCP (Model Context Protocol)](https://modelcontextprotocol.io) Server，连接 [CNKGraph 古典文献知识图谱](https://cnkgraph.com) 的后端 API，为数字人文学者提供以下能力：\n\n1. **人物诗文检索** — 输入宋代人名（支持别名/字号），获取以此人为作者或涉及对象的所有诗文\n2. **关系筛选** — 按指定对象、时间范围、地点筛选相关诗文\n3. **关系分类** — 内置唱和、寄赠、悼亡、送别等类型的关键词集合，支持自定义规则\n4. **CSV 导出** — 输出 Gephi 兼容的网络数据 CSV，含作者、对象、关系类型、诗题、时间、地点\n\n## 安装\n\n```bash\n# 无需预安装，直接通过 npx 使用\nnpx @dhcckb/poetry-graph-mcp\n```\n\n### 环境变量\n\n| 变量 | 说明 | 默认值 |\n|------|------|--------|\n| `POETRY_KG_API_BASE` | CNKGraph API 基础 URL | `https://open.cnkgraph.com` |\n| `POETRY_KG_API_TOKEN` | API 认证令牌 | (空) |\n\n## MCP 配置\n\n在 Claude Desktop 或其他 MCP 客户端中添加：\n\n```json\n{\n  \"mcpServers\": {\n    \"poetry-graph\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dhcckb/poetry-graph-mcp\"],\n      \"env\": {\n        \"POETRY_KG_API_TOKEN\": \"your-api-token\"\n      }\n    }\n  }\n}\n```\n\n## 工具\n\n### search_poems_by_person\n\n检索指定人物的相关诗文。\n\n```json\n{\n  \"person_name\": \"苏轼\",\n  \"role\": \"both\",\n  \"page\": 1,\n  \"page_size\": 50\n}\n```\n\n### filter_poems_by_relation\n\n按对象、时间、地点筛选诗文。\n\n```json\n{\n  \"person_name\": \"苏轼\",\n  \"target_persons\": [\"黄庭坚\"],\n  \"time_range\": { \"start\": \"1070\", \"end\": \"1100\" },\n  \"location\": \"杭州\"\n}\n```\n\n### apply_classification_rules\n\n对诗文进行关系类型分类。\n\n```json\n{\n  \"poem_ids\": [\"poem_001\", \"poem_002\"],\n  \"preset_types\": [\"changhe\", \"jizeng\"],\n  \"custom_rules\": [\n    {\n      \"label\": \"思念\",\n      \"keywords\": [\"思\", \"忆\", \"怀\"],\n      \"match_field\": \"both\"\n    }\n  ]\n}\n```\n\n### export_network_csv\n\n导出为 Gephi 兼容的 CSV 文件。\n\n```json\n{\n  \"poems\": [...],\n  \"output_path\": \"~/Downloads/song_poetry_network.csv\",\n  \"mode\": \"overwrite\"\n}\n```\n\n## CSV 输出格式\n\nUTF-8 编码，含 BOM，6 列：\n\n| 字段 | 说明 |\n|------|------|\n| 作者标准名 | 诗文作者的标准名称 |\n| 涉及对象标准名 | 诗中涉及人物的标准名称 |\n| 关系类型 | 分类后的关系标签（未分类则留空） |\n| 完整诗题 | 诗文完整标题 |\n| 创作时间 | 创作时间（年份/年号） |\n| 创作地点 | 创作地点 |\n\n导入 Gephi：Data Laboratory → Import Spreadsheet，以「作者标准名」和「涉及对象标准名」为节点列，「关系类型」为边属性。\n\n## 内置关系类型\n\n| 类型 | 标识 | 关键词 |\n|------|------|--------|\n| 唱和 | changhe | 和、酬、次韵、依韵、用韵、步韵、奉和、同韵 |\n| 寄赠 | jizeng | 寄、赠、呈、示、献、上、奉寄、寄赠、见寄、见赠 |\n| 悼亡 | daowang | 悼、哭、挽、哀、伤、祭、悲、恸 |\n| 送别 | songbie | 送、别、饯、送别、赠别、留别、送归、送行 |\n| 怀古 | huaigu | 怀古、吊古、古迹、故国、旧游、昔、往昔、怀旧 |\n| 咏物 | yongwu | 咏、赋得、题、画、咏物、赋、吟 |\n| 山水 | shanshui | 山水、登、游、望、行、江、山、湖、溪、峰 |\n| 其他 | other | 杂、感、书、述、言、无题、即事、偶成、漫兴 |\n\n## 数据源\n\n本工具连接 [CNKGraph 古典文献知识图谱](https://cnkgraph.com)（搜韵知识图谱）。\n\n- API 网关: https://open.cnkgraph.com\n- Swagger 文档: https://open.cnkgraph.com/swagger\n- OpenAPI 规范: https://open.cnkgraph.com/Api/index.yaml\n\n## 技术要求\n\n- Node.js ≥ 18\n- TypeScript 5.3+\n- @modelcontextprotocol/sdk 1.x\n\n## License\n\nMIT\n","readmeFilename":"README.md"}