Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Cnki

FreeNot checked

Enables AI assistants to search CNKI (China National Knowledge Infrastructure), download PDFs, and import them into Zotero with automatic PDF attachment.

GitHubEmbed

About

Enables AI assistants to search CNKI (China National Knowledge Infrastructure), download PDFs, and import them into Zotero with automatic PDF attachment.

README

CI License: MIT Python 3.10+

把中国知网(CNKI)的文献检索 → 双排序去重 → PDF 下载 → 导入 Zotero(含 PDF 自动关联)→ 元数据核对更新封装成 MCP 工具,供 Claude 等 AI 助手一键调用。

An MCP server that lets an AI assistant search CNKI, download article PDFs, and import them into Zotero — with built-in deduplication, citation-based sorting, and PDF metadata reconciliation.

✨ 功能

  • 多维排序检索:分别按「发表时间」和「引用量」取前 N 篇,合并去重后作为工作集
  • 两级去重:(1) 两种排序结果间按标题去重;(2) 与 Zotero 已有文献对比,跳过已存在条目
  • 引用量采集:检索结果中自动提取每篇论文的引用次数(CNKI td.quote
  • 下载 单篇或批量 PDF/CAJ 到本地
  • 导入 Zotero:优先本地 connector(localhost:23119),PDF 直接上传并关联为子附件;Zotero 未运行时降级云 API(仅元数据)
  • 元数据核对与更新:通过 PyMuPDF 提取 PDF 内嵌元数据(标题/作者/DOI),与 Zotero 条目比对生成差异表,用户确认后一键 PATCH 更新
  • 登录态持久化:Cookie 保存/恢复,几小时内免重复登录

🧰 MCP 工具

工具 说明
cnki_login_status 检查机构登录状态
cnki_open_login_page 打开登录页,等待手动完成机构登录并保存 Cookie
cnki_save_cookies 手动保存当前 Cookie
cnki_search 按关键词检索期刊论文(相关度排序,含引用量)
cnki_download_pdf 下载单篇 PDF/CAJ
cnki_import_to_zotero 把元数据列表导入 Zotero(可带 pdf_path 自动关联 PDF)
cnki_batch 一键:多排序检索 → 去重 → 下载 → 导入 Zotero → 元数据差异预览
cnki_preview_metadata_updates 对指定 PDF 列表提取元数据,生成与现有数据的差异对比表
cnki_apply_metadata_updates 将用户确认的差异 PATCH 更新到 Zotero 条目

cnki_batch 主要参数

参数 默认值 说明
top_n_by_time 50 按发表时间取前 N 篇(0 = 禁用此排序)
top_n_by_citations 50 按引用量取前 N 篇(0 = 禁用此排序)
check_zotero_dup True 跳过 Zotero 中已有的文献
download_pdf True 是否下载 PDF
import_zotero True 是否导入 Zotero
download_interval_min 6.0 两篇之间最小间隔(秒),防风控
download_interval_max 12.0 两篇之间最大间隔(秒),随机化
captcha_wait 120 等待用户完成验证码的最长秒数;0 = 跳过

📦 环境要求

  • Python 3.10+(MCP SDK 要求)
  • Playwright + 系统 Chrome(或内置 Chromium)
  • 有效的 CNKI 机构访问权限(校园网/VPN/机构账号)
  • 可选:Zotero 7+ 桌面端(用于 PDF 自动关联)
  • 可选:Zotero API Key + Library ID(用于 Zotero 查重、元数据更新)

🚀 安装

方式 A:pip 安装(推荐,提供 cnki-mcp 命令)

pip install git+https://github.com/wuruiqi/cnki-mcp.git
python -m playwright install chromium   # 若无系统 Chrome

方式 B:克隆源码

git clone https://github.com/wuruiqi/cnki-mcp.git
cd cnki-mcp
pip install -r requirements.txt
python -m playwright install chromium
cp .env.example .env                     # 按需修改配置

注册到 MCP 客户端

pip 安装后(最简洁):

{
  "mcpServers": {
    "cnki": { "type": "stdio", "command": "cnki-mcp" }
  }
}

克隆源码方式

{
  "mcpServers": {
    "cnki": {
      "type": "stdio",
      "command": "python",
      "args": ["/abs/path/to/cnki-mcp/server.py"]
    }
  }
}

⚙️ 配置(.env)

所有项均可选。详见 .env.example

变量 默认 说明
ZOTERO_LOCAL_API http://127.0.0.1:23119 Zotero 本地 connector 地址
ZOTERO_API_KEY Zotero Web API Key(Zotero 查重 + 元数据更新需要)
ZOTERO_LIB_ID Zotero 用户/库 ID(同上)
PDF_DIR ./downloads PDF 暂存目录
PROFILE_DIR ./.browser_profile 浏览器持久化目录
COOKIE_FILE ./.cnki_cookies.json Cookie 存储文件
DELETE_PDF_AFTER_IMPORT true 成功关联 Zotero 后删除暂存 PDF

提示:若需在导入后用 cnki_preview_metadata_updates 核对 PDF 元数据,请先将 DELETE_PDF_AFTER_IMPORT=false,或直接使用 cnki_batch 返回结果中自动生成的 metadata_preview

📖 典型使用流程

1. cnki_login_status              → 检查登录态
2. cnki_open_login_page           → 机构登录(如需)
3. cnki_batch "螺旋推进 散粒体"    → 检索+排序+去重+下载+导入
   ↳ 返回 metadata_preview        → 查看 PDF 与 CNKI 元数据差异
4. cnki_apply_metadata_updates    → 确认后更新 Zotero 条目

⚠️ 说明与限制

  • PDF 自动关联需 Zotero 桌面端在运行;未运行则降级为仅写元数据。
  • cnki_apply_metadata_updates 需要 Zotero 云 API(在 .env 中配置 ZOTERO_API_KEY + ZOTERO_LIB_ID)。
  • CNKI 每页约显示 20 条,top_n > 20 时实际返回数量受限(分页支持规划中)。
  • 若系统配置了 HTTP 代理,访问 Zotero 本地端口已通过 httpx(trust_env=False) 处理。
  • CNKI 验证码(CAPTCHA):批量下载时如触发人机验证,下载将自动暂停并在控制台打印提示,请在保持打开的浏览器窗口中手动完成滑块验证后继续(等待上限 captcha_wait 秒,默认 120 秒)。浏览器须保持可见(headless=False,默认已满足)。
  • 仅供个人学习研究用途,请遵守 CNKI 服务条款与所在机构的使用规定。

🛠 开发

pytest tests/test_unit.py -v    # 离线单元测试(19 个用例)

诊断脚本见 tests/inspect_* 检查 DOM 选择器,probe_* 测试 Zotero 端点)。 实测要点与 2026 改版适配记录见 CLAUDE.md

License

MIT

from github.com/wuruiqi/cnki-mcp

Install Cnki in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install cnki-mcp

Installs into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.

First time? Get the CLI: curl -fsSL https://unyly.org/install | sh

Or configure manually

Run in your terminal:

claude mcp add cnki-mcp -- uvx --from git+https://github.com/wuruiqi/cnki-mcp cnki-mcp

FAQ

Is Cnki MCP free?

Yes, Cnki MCP is free — one-click install via Unyly at no cost.

Does Cnki need an API key?

No, Cnki runs without API keys or environment variables.

Is Cnki hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Cnki in Claude Desktop, Claude Code or Cursor?

Open Cnki on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Cnki with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All ai MCPs