Skip to content

chickensooup/cnki-scholar

v0.2.0MIT

Search CNKI literature metadata, inspect paper records, and trace reference lists with a read-only MCP server and research skill.

CNKI Scholar for ChatGPT / Codex

语言: English | 简体中文

这是一个让 ChatGPT、Codex 等工具查询 CNKI(中国知网)论文信息的小服务。它可以搜索论文题录、读取摘要和关键词、查看论文详情与参考文献,并返回 JSON 或引用信息。

它只读取文献资料,不下载收费全文,不收集 CNKI 账号、密码或 Cookie,也不会尝试绕过验证码和访问限制。

能做什么

工具用途
search_cnki按主题、关键词、篇名、作者、摘要、全文或 DOI 搜索;可以按年份、文献类型和排序方式筛选
get_cnki_paper_detail读取标题、作者、单位、摘要、关键词、DOI、来源、基金、被引/下载数等信息
get_cnki_references读取一篇论文的参考文献

支持的文献类型包括期刊、硕士论文、博士论文、会议、报纸和年鉴。工具名称和参数保持不变,方便接入 MCP 客户端。

两种使用方式

方式一:本地 Docker

适合需要完整 CNKI 工具的人。在安装 Docker Desktop 后运行 scripts/start.ps1,它会启动本地 MCP 服务。详细步骤见下面的“一键启动”。

方式二:只用提示词

适合没有 Docker 或公网服务的人。打开 CHATGPT_PROMPT.md,把内容复制到自己的 GPT 指令或会话开头,也可以直接上传这个文件。

这种方式让 GPT 学会检索步骤,但不会运行本项目的本地 cnki 命令。GPT 能否查到 CNKI 页面,取决于当前会话是否有网页搜索以及 CNKI 页面是否可访问。

一键启动(Windows)

先安装并启动 Docker Desktop,然后在项目根目录运行:

powershell -ExecutionPolicy Bypass -File .\scripts\start.ps1

脚本会自动:

  1. 检查 Docker 是否可用;
  2. 构建镜像;
  3. 在后台启动服务;
  4. 等待 http://127.0.0.1:8000/health 返回成功。

启动成功后:

停止服务:

powershell -ExecutionPolicy Bypass -File .\scripts\start.ps1 -Stop

查看日志:

powershell -ExecutionPolicy Bypass -File .\scripts\start.ps1 -Logs

脚本不会覆盖已有的 .env,也不会打印其中的内容。

不用脚本时

如果已经安装 Docker,也可以直接运行:

docker compose up --build -d
curl http://127.0.0.1:8000/health
docker compose down

在 MCP 客户端中使用

开发配置已经写在根目录的 mcp.json 中,默认地址是:

http://127.0.0.1:8000/mcp

启动服务后,把这个地址添加到支持 Remote MCP 的客户端,然后可以直接说:

帮我在知网上搜索“大语言模型”相关论文,限定 2020 年以后,按被引排序。

也可以要求读取某篇论文的详情或参考文献。详情和参考文献 URL 必须来自 https://kns.cnki.net/...

直接使用上游 cnki 命令

Docker 镜像会自动编译并安装上游 ExquisiteCore/CNKI-searchcnki 命令。它也可以单独运行:

cnki search "深度学习" --size=10
cnki search "大语言模型" --from=2020 --to=2025 --sort=cited --size=30
cnki search "知识图谱" --size=20 --format=citation
cnki detail "https://kns.cnki.net/kcms2/article/abstract?v=..." --with-refs --format=markdown
cnki refs "https://kns.cnki.net/kcms2/article/abstract?v=..."

上游命令支持 JSON、表格、引用和 Markdown 输出。详细参数见 ExquisiteCore/CNKI-search

配置

普通本地使用不需要改配置。需要调整时,可以复制示例文件:

Copy-Item .env.example .env

常用变量:

变量默认值用途
CNKI_TIMEOUT_SECONDS90单次请求最长等待时间
CNKI_MAX_RESULTS100单次最多返回多少条结果
CNKI_MAX_CONCURRENCY2同时向 CNKI 发起的请求数
PORT8000本地服务端口
PUBLISHER_NAMECNKI Scholar contributors页面上显示的维护者名称
SUPPORT_EMAIL支持邮箱

.env 只应放在本机或服务器上,不要提交到 Git。示例文件不包含真实凭据。

公开部署

如果只在自己电脑上使用,到这里就够了。如果要让其他人访问,还需要:

  1. 准备一个可以从公网访问的 HTTPS 域名;
  2. 将域名反向代理到容器的 8000 端口;
  3. 设置 PUBLIC_BASE_URLMCP_ALLOWED_HOSTSPUBLISHER_NAMESUPPORT_EMAIL
  4. 运行 python scripts/configure_plugin.py --base-url https://你的域名 --publisher "你的名称" 生成插件配置。

反向代理示例见 deploy/Caddyfile.example。完整的 OpenAI 提交材料在 submission/ 目录中。

安全说明

  • 只接受 https://kns.cnki.net/... 的论文详情链接;
  • 不提供 PDF/CAJ 下载、付费墙绕过或验证码绕过;
  • 不需要 CNKI 登录账号、校园网密码或机构 Cookie;
  • 服务端不会把搜索结果写入数据库;
  • 公开部署时请关闭详细请求日志,并给日志设置保留期限。

测试

适配层测试不需要连接 CNKI:

python -m unittest discover -s tests -v

当前测试集共 11 项。真实的 CNKI 搜索需要能访问 kns.cnki.net 的部署环境。

项目文件

cnki-mcp/
├── cnki_chatgpt/              # MCP 服务代码
├── skills/                    # 文献检索 skill
├── CHATGPT_PROMPT.md          # 可直接复制到 GPT 的提示词
├── scripts/start.ps1          # Windows 一键启动/停止脚本
├── scripts/configure_plugin.py  # 生成正式插件配置
├── submission/                # 发布材料
├── Dockerfile
├── docker-compose.yml
├── mcp.json
└── plugin.json

许可证

本项目使用 MIT License,版权归 Chengxu Xie(2026)所有。上游 ExquisiteCore/CNKI-search 也使用 MIT License,详见 THIRD_PARTY_NOTICES.md