Atlas / MCP servers / eclipse-cj / Paper Distill

Paper DistillBLOCK

mcp/eclipse-cj/paper-distill

MCP server for academic paper search, curation, and multi-platform push

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
19 11r · 7w · 1d
Transport
stdio · streamable-http
License
AGPL-3.0
Stars
67
01

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
Read from source at commit b1c2b4719bb4OBSERVED · 2026-10-07
Advertisement
02

Connect

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-code (pypi)
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.4
03

Exposed 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.

ToolRiskDescription
add_topicwriteAdd a research topic for paper search.
collectwriteCollect pushed papers to Zotero and optionally create Obsidian notes.
collect_to_zoterowriteAdd papers to Zotero library by their IDs/DOIs.
configurewriteUpdate pipeline configuration.
filter_duplicatesdestructiveRemove papers already pushed (by DOI match against papers.jsonl).
finalize_reviewwriteProcess AI review decisions, update pool, and generate push output.
generate_digestreadGenerate all daily output files (pushes.jsonl, papers.jsonl, Astro site JSON, Obsidian notes).
ingest_research_contextreadIngest research context from other AI conversations for cross-AI context inheritance.
init_sessionwriteInitialize a research session. Call this first to set up push channels and load context.
load_session_contextreadLoad previous research context into current session.
manage_topicsreadManage research topic preferences.
pool_refreshreadRefresh the paper search pool by querying 9 academic APIs.
pool_statusreadShow current pool status: paper counts by status, scan day, topics searched.
prepare_reviewreadPrepare the review prompt for today
prepare_summarizereadGenerate a summarization prompt for unsummarized papers in today
rank_papersreadScore and rank papers using 4-factor weighted formula.
search_papersreadSearch academic papers across 9 sources (OpenAlex, Semantic Scholar, PubMed, arXiv, Papers with Code, CrossRef, Europe PMC, bioRxiv, DBLP).
send_pushwriteFormat and send daily paper distill to a messaging platform.
setupreadCheck setup status and guide first-time configuration.
04

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.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (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)

HIGHNetwork egress · net.env_exfil · CWE-200, CWE-319
search/query_all.py:29
".env" ... httpx.
Why it matters. reads secrets in the same file that sends data out
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
paper_digest/pipeline.py:108
module = __import__(mod, fromlist=[fn_name])
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
filter_duplicates
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mcp.json.example
.mcp.json.example
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:40
> No `uv`? → `curl -LsSf https://astral.sh/uv/install.sh | sh` or `brew install uv`

Gates applied: no_behavioural_pass.

Audited 2026-10-07 · audit v0.4.1 · source sha b1c2b4719bb4full audit observations/trust-audit/mcp-server/eclipse-cj__paper-distill.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-07b1c2b4719bb4BLOCKD69first audit
06

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.

Advertisement