Paper DistillBLOCK
MCP server for academic paper search, curation, and multi-platform push
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](LICENSE) [](https://www.python.org/) [](https://pypi.org/project/paper-distill-mcp/) [](https://github.com/Eclipse-Cj/paper-distill-mcp/actions/workflows/ci.yml)
Academic paper search, intelligent curation, and multi-platform delivery — built on the Model Context Protocol.
Compatible with all MCP clients: Claude Desktop, Claude Code, Cursor, Trae, Codex CLI, Gemini CLI, OpenClaw, VS Code, Zed, and more.
⚠️ Early development stage. Many features are still being validated and may contain bugs or instabilities. Feedback and bug reports are warmly welcome!
✨ Features
- 🔍 11-source parallel search — OpenAlex, Semantic Scholar, PubMed, arXiv, Papers with Code, CrossRef, Europe PMC, bioRxiv, DBLP, CORE, Unpaywall
- 🤖 Adaptive AI delivery — the agent tracks your evolving research interests and automatically refines search keywords and recommendations over time
- 📊 4-dimensional weighted ranking — relevance × recency × impact × novelty, fully customizable weights
- 👥 Dual-AI blind review — two AI reviewers independently shortlist papers; a chief reviewer synthesizes a final push/overflow/discard decision (optional)
- 🧹 Scraper delegation — offload abstract extraction to a low-cost agent or API to cut token spend significantly
- 🌐 Personal paper library site — Astro + Vercel auto-deploy; site updates within 30 seconds of each push
- 📬 Multi-platform delivery — Telegram / Discord / Feishu / WeCom
- 📦 Zotero integration — save papers to Zotero with one command
- 📝 Obsidian integration — auto-generate
b1c2b4719bb4OBSERVED · 2026-10-07Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add paper-distill-mcp --env CORE_API_KEY=${CORE_API_KEY} --env TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN} --env DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL} --env ZOTERO_API_KEY=${ZOTERO_API_KEY} -- uvx paper-distill-mcp==0.2.4Exposed tools (19)
11 read · 7 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
add_topic | write | Add a research topic for paper search. |
collect | write | Collect pushed papers to Zotero and optionally create Obsidian notes. |
collect_to_zotero | write | Add papers to Zotero library by their IDs/DOIs. |
configure | write | Update pipeline configuration. |
filter_duplicates | destructive | Remove papers already pushed (by DOI match against papers.jsonl). |
finalize_review | write | Process AI review decisions, update pool, and generate push output. |
generate_digest | read | Generate all daily output files (pushes.jsonl, papers.jsonl, Astro site JSON, Obsidian notes). |
ingest_research_context | read | Ingest research context from other AI conversations for cross-AI context inheritance. |
init_session | write | Initialize a research session. Call this first to set up push channels and load context. |
load_session_context | read | Load previous research context into current session. |
manage_topics | read | Manage research topic preferences. |
pool_refresh | read | Refresh the paper search pool by querying 9 academic APIs. |
pool_status | read | Show current pool status: paper counts by status, scan day, topics searched. |
prepare_review | read | Prepare the review prompt for today |
prepare_summarize | read | Generate a summarization prompt for unsummarized papers in today |
rank_papers | read | Score and rank papers using 4-factor weighted formula. |
search_papers | read | Search academic papers across 9 sources (OpenAlex, Semantic Scholar, PubMed, arXiv, Papers with Code, CrossRef, Europe PMC, bioRxiv, DBLP). |
send_push | write | Format and send daily paper distill to a messaging platform. |
setup | read | Check setup status and guide first-time configuration. |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (1 observation(s))
- Network
- declared (6 observation(s))
- Shell
- declared (1 observation(s))
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (5)
".env" ... httpx.
module = __import__(mod, fromlist=[fn_name])
filter_duplicates
.mcp.json.example
> No `uv`? → `curl -LsSf https://astral.sh/uv/install.sh | sh` or `brew install uv`
Gates applied: no_behavioural_pass.
b1c2b4719bb4full audit observations/trust-audit/mcp-server/eclipse-cj__paper-distill.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-07 | b1c2b4719bb4 | BLOCK | D | 69 | first audit |
Questions
What is the Paper Distill MCP server?
MCP server for academic paper search, curation, and multi-platform push
What tools does Paper Distill expose?
19 in total: 11 read-only, 7 that write, and 1 that can delete or overwrite (filter_duplicates). Every one is listed on this page with its risk.
Is Paper Distill safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Paper Distill need?
It reads CORE_API_KEY, DEEPSEEK_API_KEY, DISCORD_WEBHOOK_URL, NCBI_API_KEY, S2_API_KEY, TELEGRAM_BOT_TOKEN and ZOTERO_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Paper Distill run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on PyPI as paper-distill-mcp.
How current is this page?
The grade is for one exact copy of the source (b1c2b4719bb4), read on 2026-10-07. The repository is watched and re-audited when it changes.