关于 Paper Distill MCP
Paper Distill MCP 是一个学术论文检索与整理的 MCP 服务,可并行查询 11 个数据源,并按相关性、时效性、影响力和新颖性加权排序。项目目前处于早期开发阶段,适合希望定期获取论文推送的研究人员。
主要功能
- 01并行检索 11 个学术数据源
- 02四维加权排序,权重可调
- 03双 AI 盲审与最终决策(可选)
- 04Telegram、Discord、飞书、企业微信推送
- 05Zotero 与 Obsidian 集成
适用场景
- 01按研究主题每日筛选新论文并推送
- 02将推荐论文保存到 Zotero 文献库
- 03为个人研究生成 Obsidian 论文笔记卡片
MCP 相关
作为 MCP 服务运行,通过 uvx、pip 或 Docker 启动,可供 Claude Desktop、Claude Code、Cursor、VS Code 等支持 MCP 的客户端调用其检索、排序和推送工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx paper-distill-mcpOPENALEX_EMAILEmail for OpenAlex polite pool (higher rate limits) and Unpaywall queriesCORE_API_KEY密钥CORE API key for enhanced open-access paper retrieval (free at core.ac.uk)TELEGRAM_BOT_TOKEN密钥Telegram bot token for paper deliveryTELEGRAM_CHAT_IDTelegram chat ID for paper deliveryDISCORD_WEBHOOK_URL密钥Discord webhook URL for paper deliveryZOTERO_LIBRARY_IDZotero user ID for saving papers to your libraryZOTERO_API_KEY密钥Zotero API key for saving papers to your library本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
19收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 搜索查询字符串(例如 "LLM reasoning chain-of-thought") |
| max_results | integer | 否 | 要返回的最大结果数(默认值为 10) |
详细介绍
📚 Paper Distill MCP 服务
基于模型上下文协议构建的学术论文搜索、智能筛选和多平台推送工具。
兼容所有 MCP 客户端:Claude Desktop、Claude Code、Cursor、Trae、Codex CLI、Gemini CLI、OpenClaw、VS Code、Zed 等。
⚠️ 目前仍处于早期开发阶段。 许多功能仍在验证中,可能存在错误或不稳定之处。欢迎反馈和提交错误报告!
✨ 功能
- 🔍 11 个来源并行搜索 — OpenAlex、Semantic Scholar、PubMed、arXiv、Papers with Code、CrossRef、Europe PMC、bioRxiv、DBLP、CORE、Unpaywall
- 🤖 自适应 AI 推送 — Agent 会追踪你不断变化的研究兴趣,并随时间自动优化搜索关键词和推荐
- 📊 四维加权排序 — 相关性 × 时效性 × 影响力 × 新颖性,权重完全可自定义
- 👥 双 AI 盲审 — 两位 AI 审稿人独立筛选论文;首席审稿人综合后,做出最终的推送/候补/舍弃决定(可选)
- 🧹 委托抓取 — 将摘要提取工作交给低成本 Agent 或 API,大幅减少 token 开销
- 🌐 个人论文库网站 — 使用 Astro + Vercel 自动部署;每次推送后,网站会在 30 秒内更新
- 📬 多平台推送 — Telegram / Discord / Feishu / WeCom
- 📦 Zotero 集成 — 通过一条命令将论文保存到 Zotero
- 📝 Obsidian 集成 — 自动生成带 Zotero 双向链接的论文笔记卡片;支持摘要和模板模式
🚀 快速安装
uvx paper-distill-mcp
就这么简单。你的 AI 客户端会自动发现所有工具。基本论文搜索无需 API 密钥。
没有
uv?→curl -LsSf https://astral.sh/uv/install.sh | sh或brew install uv
其他安装方式(pip / Homebrew / Docker / 源码)
pip:
pip install paper-distill-mcp
Homebrew:
brew tap Eclipse-Cj/tap
brew install paper-distill-mcp
Docker:
docker run -i --rm ghcr.io/eclipse-cj/paper-distill-mcp
从源码安装(开发者):
git clone https://github.com/Eclipse-Cj/paper-distill-mcp.git
cd paper-distill-mcp
python3 -m venv .venv && .venv/bin/pip install --upgrade pip && .venv/bin/pip install -e .
🔗 连接 AI 客户端
Claude Desktop
添加到 claude_desktop_config.json(Settings → Developer → Edit Config):
{
"mcpServers": {
"paper-distill": {
"command": "uvx",
"args": ["paper-distill-mcp"]
}
}
}
Claude Code
claude mcp add paper-distill -- uvx paper-distill-mcp
或添加到 .mcp.json:
{
"mcpServers": {
"paper-distill": {
"command": "uvx",
"args": ["paper-distill-mcp"]
}
}
}
Codex CLI(OpenAI)
添加到 ~/.codex/config.toml:
[mcp_servers.paper-distill]
command = "uvx"
args = ["paper-distill-mcp"]
Gemini CLI(Google)
添加到 ~/.gemini/settings.json:
{
"mcpServers": {
"paper-distill": {
"command": "uvx",
"args": ["paper-distill-mcp"]
}
}
}
OpenClaw
mcporter config add paper-distill --command uvx --scope home -- paper-distill-mcp
mcporter list # verify
移除方式:
mcporter config remove paper-distill
OpenClaw — 从源码安装
git clone https://github.com/Eclipse-Cj/paper-distill-mcp.git ~/.openclaw/tools/paper-distill-mcp
cd ~/.openclaw/tools/paper-distill-mcp
uv venv .venv && uv pip install .
mcporter config add paper-distill \
--command ~/.openclaw/tools/paper-distill-mcp/.venv/bin/python3 \
--scope home \
-- -m mcp_server.server
mcporter list
移除方式:
rm -rf ~/.openclaw/tools/paper-distill-mcp && mcporter config remove paper-distill
其他客户端(Cursor、VS Code、Windsurf、Zed、Trae)
JSON 配置相同,但配置文件路径不同:
| 客户端 | 配置路径 |
|---|---|
| Claude Desktop | claude_desktop_config.json |
| Trae | Settings → MCP → Add |
| Cursor | ~/.cursor/mcp.json |
| VS Code | .vscode/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Zed | settings.json |
HTTP 传输(远程/托管)
paper-distill-mcp --transport http --port 8765
🎯 快速开始
连接客户端后,告诉 Agent "initialize paper-distill"。它会调用 setup() 并引导你完成以下步骤:
- 研究主题 — 用通俗语言描述你的兴趣;AI 会提取关键词
- 推送平台 — 设置 Telegram / Discord / Feishu / WeCom(可选)
- 论文库网站 — 构建个人论文库,并自动更新(可选)
- 抓取委托方 — 指定低成本 Agent 或 API 来提取摘要(推荐)
- 偏好设置 — 论文数量、排名权重、评审模式等
- 首次搜索 —
pool_refresh()会填充论文池
随时可以通过对话更新所有设置:
- “下次推送 8 篇论文”
- “添加一个新主题:RAG 检索”
- “启用双 AI 盲审”
- “提高时效性权重”
⚙️ 配置参考
所有参数都通过 configure() 或 add_topic() 设置,无需手动编辑文件。
研究主题(add_topic / manage_topics)
| 参数 | 说明 | 默认值 |
|---|---|---|
key | 主题标识符(例如 "llm-reasoning") | — |
label | 显示名称(例如 "LLM Reasoning") | — |
keywords | 搜索关键词,建议填写 3–5 个 | — |
weight | 主题优先级,范围为 0.0–1.0(越高,论文越多) | 1.0 |
blocked | 暂时停用,不删除 | false |
论文数量与评审(configure)
| 参数 | 选项 | 默认值 | 说明 |
|---|---|---|---|
paper_count_value | 任意整数 | 6 | 每次推送的论文数 |
paper_count_mode | "at_most" / "at_least" / "exactly" | "at_most" | 数量模式 |
picks_per_reviewer | 任意整数 | 5 | 每位评审者的候选名单长度 |
review_mode | "single" / "dual" | "single" | 单 AI 评审或双盲评审 |
custom_focus | 自由文本 | "" | 自定义筛选标准 |
💡 双盲评审:两位独立的 AI 评审者分别筛选论文;首席评审者决定最终推送、超额保留或丢弃哪些论文。未入选的论文会保留到下一轮,而不是丢弃。使用
configure(review_mode="dual")启用。
排名权重(configure)
用于控制论文评分。四项权重之和应约为 1.0。
| 参数 | 衡量内容 | 默认值 |
|---|---|---|
w_relevance | 关键词与主题的匹配度 | 0.55 |
w_recency | 论文的发表时间 | 0.20 |
w_impact | 引用次数(对数归一化) | 0.15 |
w_novelty | 是否为首次出现 | 0.10 |
示例:“优先推荐近期论文” →
configure(w_recency=0.35, w_relevance=0.40)
抓取器 / 摘要提取委托方(configure)
提取摘要是最耗 Token 的步骤。默认由主 Agent 执行,但可以委托给成本更低的模型,大幅降低费用。
| 参数 | 值 | 说明 |
|---|---|---|
summarizer | "self" | 由主 Agent 负责提取(成本最高) |
Agent 名称(例如 "scraper") | 委托给低成本子 Agent | |
| API URL | 调用外部大模型 API(DeepSeek、Ollama 等) |
🔧 强烈推荐:处理 30 篇以上论文时,前沿模型的成本会迅速增加。一个每百万 Token 仅需 $0.14 的模型就能胜任摘要提取。使用
configure(summarizer="scraper")设置。
论文池与扫描批次(configure)
| 参数 | 描述 | 默认值 |
|---|---|---|
scan_batches | 将论文池拆分为 N 个批次,在 N+1 天内完成审阅 | 2(3 天) |
pool_refresh() 会搜索全部 11 个 API 并填充论文池。随后,论文池会拆分为多个批次,供 AI 每日审阅,避免一次性倾倒 60 多篇论文。
scan_batches=2(默认):第 1 天审阅前半部分,第 2 天审阅后半部分,第 3 天完成整理scan_batches=3:每天审阅三分之一,第 4 天完成整理
审阅完所有批次后,论文池即告用尽,下次运行时会自动触发新一轮 API 搜索。
推送平台(环境变量)
| 平台 | 环境变量 | platform 值 |
|---|---|---|
| Telegram | TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID | "telegram" |
| Discord | DISCORD_WEBHOOK_URL | "discord" |
| Feishu | FEISHU_WEBHOOK_URL | "feishu" |
| WeCom | WECOM_WEBHOOK_URL | "wecom" |
⚠️ 重要:请在 MCP 客户端配置的
env字段中设置环境变量,而不是将其设为系统环境变量。否则,send_push()无法访问 Webhook URL,AI 可能会生成直接调用 Webhook 的脚本,导致编码问题。
配置示例(WeCom + Claude Desktop):
{
"mcpServers": {
"paper-distill": {
"command": "uvx",
"args": ["paper-distill-mcp"],
"env": {
"WECOM_WEBHOOK_URL": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY"
}
}
}
}
编辑配置后,重启 MCP 客户端。
推送消息格式(固定):
1. Paper Title (Year)
Journal Name
- One-sentence summary
- Why it was selected
https://doi.org/...
论文库网站(configure)
个人论文库网站,每次推送时自动更新。基于 Astro + Vercel 构建(免费套餐)。
| 参数 | 描述 |
|---|---|
site_deploy_hook | Vercel 部署 Hook URL(触发网站重建) |
site_repo_path | 论文库仓库的本地路径 |
设置步骤(AI Agent 会引导你):
- 从 paper-library-template 创建仓库
- 连接到 Vercel 并部署
- 在 Vercel 中创建部署 Hook(Settings > Git > Deploy Hooks)
- 将 Hook URL 告诉 Agent → 通过
configure(site_deploy_hook=...)保存
设置完成后,每次调用 finalize_review() 都会将摘要 JSON 推送到网站仓库并触发 Vercel 重建。网站会在约 30 秒内更新。
Zotero 集成
使用一条命令即可将论文保存到 Zotero。需要 Zotero 账户和 API 密钥。
获取凭据:
- API 密钥:前往 zotero.org/settings/keys/new → 勾选“Allow library access” + “Allow write access” → 保存密钥
- Library ID:前往 zotero.org/settings/keys → 你的 userID 显示在页面顶部
添加到 MCP 客户端配置:
{
"mcpServers": {
"paper-distill": {
"command": "uvx",
"args": ["paper-distill-mcp"],
"env": {
"ZOTERO_LIBRARY_ID": "your userID",
"ZOTERO_API_KEY": "your API key"
}
}
}
}
设置完成后,推送后回复 collect 1 3,即可将第 1 篇和第 3 篇论文保存到 Zotero,并自动按主题归入文件夹。
所有环境变量
| 变量 | 描述 | 必需 |
|---|---|---|
OPENALEX_EMAIL | 提高 OpenAlex API 速率限制;也用于 Unpaywall | 可选 |
CORE_API_KEY | CORE API 密钥(免费注册) | 可选 |
DEEPSEEK_API_KEY | 通过 DeepSeek 增强搜索 | 可选 |
ZOTERO_LIBRARY_ID + ZOTERO_API_KEY | 将论文保存到 Zotero | 可选 |
SITE_URL | 论文库网站 URL | 可选 |
PAPER_DISTILL_DATA_DIR | 数据目录 | 默认:~/.paper-distill/ |
🛠️ 工具(共 19 个)
设置与配置
| 工具 | 描述 |
|---|---|
setup() | 首次调用 — 检测是否为全新安装,并返回引导式初始化说明 |
add_topic(key, label, keywords) | 添加包含搜索关键词的研究主题 |
configure(...) | 更新任意设置:论文数量、排名权重、审阅模式等 |
搜索与整理
| 工具 | 描述 |
|---|---|
search_papers(query) | 并行搜索 11 个来源 |
rank_papers(papers) | 四维加权评分 |
filter_duplicates(papers) | 与此前推送的论文去重 |
每日工作流(论文池模式)
| 工具 | 描述 |
|---|---|
pool_refresh(topic?) | 搜索全部 11 个 API 并构建论文池 |
prepare_summarize(custom_focus?) | 生成 AI 摘要提取提示词 |
prepare_review(dual?) | 生成审核提示词——由 AI 决定推送、溢出或丢弃 |
finalize_review(selections) | 处理 AI 决策、更新论文池并输出推送消息 |
pool_status() | 论文池状态:数量、扫描日期、是否已耗尽 |
collect(paper_indices) | 将论文保存到 Zotero,并生成 Obsidian 笔记 |
会话与输出
| 工具 | 描述 |
|---|---|
init_session | 检测投递平台并加载研究背景 |
load_session_context | 加载历史研究背景 |
generate_digest(papers, date) | 生成输出文件(JSONL、网站、Obsidian) |
send_push(date, papers, platform) | 推送到 Telegram / Discord / Feishu / WeCom |
collect_to_zotero(paper_ids) | 通过 DOI 将论文保存到 Zotero |
manage_topics(action, topic) | 列出 / 禁用 / 启用 / 重新设置主题权重 |
ingest_research_context(text) | 在不同会话间继承研究背景 |
🏗️ 架构
AI client (Claude Code / Codex CLI / Gemini CLI / Cursor / ...)
↓ MCP (stdio or HTTP)
paper-distill-mcp
├── search/ — 11-source academic search (with OA full-text enrichment)
├── curate/ — scoring + deduplication
├── generate/ — output (JSONL, Obsidian, site)
├── bot/ — push formatting (4 platforms)
└── integrations/ — Zotero API
此服务不会在内部调用任何大模型。搜索、排序和去重都是纯数据操作。智能由你的 AI 客户端提供。
📖 付费论文与开放获取
系统默认搜索所有论文(包括订阅期刊),并通过以下方式尽可能获取免费全文:
- CORE — 全球最大的开放获取聚合平台(2 亿多篇论文),收录来自机构知识库的作者自存档版本
- Unpaywall — 合并搜索结果后,通过 DOI 自动查找合法的免费 PDF(预印本、绿色开放获取、作者版本)
对于没有免费版本的论文,系统会返回 DOI 链接。如果你可以使用机构 VPN,连接后点击 DOI 链接通常就足够了——出版商会根据 IP 识别你的机构。
open_access_url优先级:arXiv > CORE > Unpaywall > OpenAlex > Semantic Scholar > Papers with Code
❓ 常见问题
审核阶段卡住 / 30 多分钟没有响应
症状:prepare_review() 生成的审核提示词导致 AI 客户端卡住或超时。
原因:论文池中的候选论文太多(例如 80–100 篇),导致提示词超出客户端的上下文窗口或输出令牌限制。VS Code Copilot 和一些 IDE 插件的上下文容量有限。
解决方案(任选其一):
- 增大
scan_batches(推荐)——将论文池拆分为更多批次:configure(scan_batches=5) - 减少主题或关键词——主题越少 → 搜索结果越少 → 论文池越小。
- 改用上下文容量更大的客户端——Claude Code(200k)、Claude Desktop(200k)或 Cursor 更适合处理较长的提示词。
安装错误:Requires-Python >=3.10
需要 Python 3.10 或更高版本。macOS 默认自带 Python 3.9——请使用 brew install [email protected] 安装较新版本,或使用 uv。
Docker 镜像拉取失败(中国大陆)
中国大陆无法访问 ghcr.io。请使用 pip 和中国镜像:
pip install paper-distill-mcp -i https://pypi.tuna.tsinghua.edu.cn/simple
🧑💻 开发
git clone https://github.com/Eclipse-Cj/paper-distill-mcp.git
cd paper-distill-mcp
python3 -m venv .venv && .venv/bin/pip install --upgrade pip && .venv/bin/pip install -e .
python tests/test_mcp_smoke.py # 9 tests, no network required
📄 许可证
本项目采用 AGPL-3.0 许可证。详情请参阅 LICENSE。
禁止未经授权的商业使用。 如需咨询商业许可,请联系作者。
📬 联系方式
- 电子邮件:[email protected]
- GitHub Issues:Eclipse-Cj/paper-distill-mcp/issues
欢迎提交错误报告和功能请求。本项目目前处于积极的早期开发阶段——感谢你的耐心与支持 🙏
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。