Paper Distill MCP
Academic paper search across 11 sources with AI curation, ranked push, Zotero and Obsidian support.
Connector by Eclipse-Cj · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/eclipse-cj-paper-distill-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 8 read · 5 write · 1 delete · 5 not yet classified
- Secrets
- 4 (API keys, tokens or passwords)
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 19
Read from the source code; the running server may list different tools.
Read 8 · Look things up without changing anything.
finalize_reviewingest_research_contextpool_statusprepare_reviewprepare_summarizerank_paperssearch_paperssetup
Write 5 · Create, change, send or run things.
add_topiccollect_to_zoteroconfiguremanage_topicssend_push
Delete 1 · Delete, drop, revoke or wipe things.
filter_duplicates
Not yet classified 5 · We could not tell from the name and description.
collectgenerate_digestinit_sessionload_session_contextpool_refresh
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
CORE_API_KEYDISCORD_WEBHOOK_URLTELEGRAM_BOT_TOKENZOTERO_API_KEY
Other settings (environment variables or headers).
OPENALEX_EMAILTELEGRAM_CHAT_IDZOTERO_LIBRARY_ID
Tools (19)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_topicAdd a research topic for paper search. Args: key: Short identifier (e.g. "llm-reasoning", "rag-retrieval"), lowercase with hyphens label: Human-readable name (e.g. "LLM Reasoning") keywords: Search keywords for this topic (3-5 recommended) weight: Priority weight 0.0-1.0 (default 1.0 = highest priority)
collectCollect pushed papers to Zotero and optionally create Obsidian notes. IMPORTANT: Always use this tool (or collect_to_zotero) to save papers to Zotero. NEVER call the Zotero API directly or generate scripts to do so. Use after finalize_review. Paper indices refer to the latest push (1-based, e.g. "1,3" to collect papers 1 and 3). Args: paper_indices: Comma-separated 1-based indices (e.g. "1,3") obsidian_mode: "none" (Zotero only), "summary" (with AI summary note), or "template" (empty template for user notes)
collect_to_zoteroAdd papers to Zotero library by their IDs/DOIs. IMPORTANT: Always use this tool to add papers to Zotero. NEVER call the Zotero Web API directly or generate scripts (PowerShell, curl, etc.) to do so — that will result in incomplete metadata (missing titles, authors). This tool handles full metadata enrichment automatically. Looks up papers in papers.jsonl, creates Zotero journal article items and maps them to collections based on topic tags. Args: paper_ids: List of paper DOIs or IDs to add to Zotero
configureUpdate pipeline configuration. All parameters are optional — only provided values are changed. Args: paper_count_mode: "at_most", "at_least", or "exactly" paper_count_value: Number of papers per push (e.g. 6) custom_focus: Custom screening criteria (e.g. "prefer clinical trials over reviews") review_mode: "single" (one AI reviews) or "dual" (two AIs review independently) w_relevance: Ranking weight for topic relevance (default 0.55) w_recency: Ranking weight for publication recency (default 0.20) w_impact: Ranking weight for citation impact (default 0.15) w_no…
filter_duplicatesRemove papers already pushed (by DOI match against papers.jsonl). Args: papers: List of paper dicts to filter
finalize_reviewProcess AI review decisions, update pool, and generate push output. Takes the AI's review response (JSON with push/overflow/discard decisions), updates paper statuses in the pool, appends pushed papers to papers.jsonl, and returns formatted push message. Args: selections: JSON string with review decisions, e.g. '[{"index": 1, "action": "push", "tldr": "..."}, ...]' is_final: True for final review (no discard allowed, only push/overflow)
generate_digestGenerate all daily output files (pushes.jsonl, papers.jsonl, Astro site JSON, Obsidian notes). Args: papers: Final selected papers with annotations date: Date string in YYYY-MM-DD format topics: Optional topics data for research note generation
ingest_research_contextIngest research context from other AI conversations for cross-AI context inheritance. Extracts keywords from the markdown text and appends to interests.jsonl. Use session_id to isolate different chat sessions (prevents context pollution when multiple OpenClaw/AI sessions run concurrently). Args: markdown_text: Markdown text containing research context (e.g. from another AI's summary) session_id: Optional session identifier to isolate contexts (e.g. "openclaw-abc123"). If provided, only this session's interests are used for search_now. search_now: If True, also run…
init_sessionInitialize a research session. Call this first to set up push channels and load context. Detects configured platforms, manages channels, and optionally loads previous research context. Returns session info for the AI client to present to the user. IMPORTANT for AI clients: - NEVER call external APIs (Zotero, webhooks, etc.) directly or generate scripts (PowerShell, curl, Python) to do so. Always use the built-in tools (collect, collect_to_zotero, send_push, etc.). Direct API calls will result in incomplete data and encoding issues. - If multiple platforms are detected and no `platform`…
load_session_contextLoad previous research context into current session. Call this after init_session if user chose to load context. Returns accumulated keywords and summaries from interests.jsonl. Args: session_id: If provided, only load context from this session. If None, load all previous context.
manage_topicsManage research topic preferences. Args: action: One of "list", "block", "unblock", "set_weight" topic: Topic key (required for block/unblock/set_weight, e.g. "llm-news") weight: New weight value (only for set_weight action, 0.0-1.0)
pool_refreshRefresh the paper search pool by querying 9 academic APIs. Call this when pool is exhausted or when adding a new research topic. Searches: OpenAlex, Semantic Scholar, PubMed, arXiv, Papers with Code, CrossRef, Europe PMC, bioRxiv, DBLP. Args: topic: Optional single topic key to search (for new topics). If None, refreshes all topics.
pool_statusShow current pool status: paper counts by status, scan day, topics searched. Returns: Dict with total, by_status, scan_day, total_scan_days, exhausted, etc.
prepare_reviewPrepare the review prompt for today's scan batch. Returns a structured prompt listing candidate papers for the AI to review. The AI should respond with push/overflow/discard decisions in JSON format. If pool is exhausted, returns "POOL_EXHAUSTED" — call pool_refresh first. Args: dual: Enable dual review mode (two reviewers each pick 3 papers)
prepare_summarizeGenerate a summarization prompt for unsummarized papers in today's batch. Returns a dict with: - prompt: the summarization prompt (structured fields to extract) - summarizer: who should process this prompt ("self", agent name, or API URL) - paper_count: how many papers need summarizing If summarizer is NOT "self", the calling agent should delegate this prompt to the specified agent or API instead of processing it directly. This can save significant token costs. Args: custom_focus: Optional custom screening criteria to include
Show 4 more tools
rank_papersScore and rank papers using 4-factor weighted formula. Factors: relevance (0.55), recency (0.20), impact (0.15), novelty (0.10). Uses topic_prefs.json for relevance scoring and papers.jsonl for novelty detection. Args: papers: List of paper dicts (from search_papers) top_n: Return top N papers after ranking
search_papersSearch academic papers across 9 sources (OpenAlex, Semantic Scholar, PubMed, arXiv, Papers with Code, CrossRef, Europe PMC, bioRxiv, DBLP). Returns deduplicated, merged results sorted by cross-source hits + citation count. Each paper has: title, year, doi, authors, abstract, source, citation_count, etc. Args: query: Search query string (e.g. "LLM reasoning chain-of-thought") max_results: Maximum number of results to return (default 10)
send_pushFormat and send daily paper distill to a messaging platform. Supported platforms: telegram, discord, feishu (飞书/Lark), wecom (企业微信 webhook). Args: date: Date string in YYYY-MM-DD format papers: Papers to include in the push message platform: Target platform - "telegram", "discord", "feishu", or "wecom" (default: telegram)
setupCheck setup status and guide first-time configuration. Call this FIRST when starting a new session. Returns setup state and instructions for the AI client on what to ask the user. If setup is complete, returns current config summary. If first run, returns step-by-step instructions for the AI to follow.
Signals
- Stars
- 68
- Forks
- 4
- Open issues
- 0
- Contributors
- 2
- Weekly downloads
- 73
- Last commit
- Mar 24, 2026 (7 months ago)
- Last release
- Mar 19, 2026 (7 months ago)
- Last package publish
- Mar 19, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.Eclipse-Cj/paper-distill-mcp- Version
- 0.2.4
- Auth
- API key
- Packages
- pypi paper-distill-mcp
- License
- AGPL-3.0
- Repository
- github.com/Eclipse-Cj/paper-distill-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Paper Distill MCP. Agent Mart. https://agentmart.dev/connectors/eclipse-cj-paper-distill-mcp (last updated 2026-10-24)