Skip to content
Agentmart
Submit a tool

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

IndexedAGPL-3.0Local (stdio)★ 68
Write a review

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.

We use your email only for this newsletter. Privacy

About

Academic paper search across 11 sources with AI curation, ranked push, Zotero and Obsidian support.

No 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_review
  • ingest_research_context
  • pool_status
  • prepare_review
  • prepare_summarize
  • rank_papers
  • search_papers
  • setup

Write 5 · Create, change, send or run things.

  • add_topic
  • collect_to_zotero
  • configure
  • manage_topics
  • send_push

Delete 1 · Delete, drop, revoke or wipe things.

  • filter_duplicates

Not yet classified 5 · We could not tell from the name and description.

  • collect
  • generate_digest
  • init_session
  • load_session_context
  • pool_refresh

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • CORE_API_KEY
  • DISCORD_WEBHOOK_URL
  • TELEGRAM_BOT_TOKEN
  • ZOTERO_API_KEY

Other settings (environment variables or headers).

  • OPENALEX_EMAIL
  • TELEGRAM_CHAT_ID
  • ZOTERO_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_topic

    Add 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)

  • collect

    Collect 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_zotero

    Add 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

  • configure

    Update 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_duplicates

    Remove papers already pushed (by DOI match against papers.jsonl). Args: papers: List of paper dicts to filter

  • finalize_review

    Process 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_digest

    Generate 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_context

    Ingest 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_session

    Initialize 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_context

    Load 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_topics

    Manage 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_refresh

    Refresh 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_status

    Show 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_review

    Prepare 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_summarize

    Generate 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_papers

    Score 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_papers

    Search 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_push

    Format 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)

  • setup

    Check 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
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)