Paper Distill MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CORE_API_KEY | No | CORE API key for open-access paper retrieval | |
| OPENALEX_EMAIL | No | Email for OpenAlex polite pool (higher rate limits) | |
| ZOTERO_API_KEY | No | Zotero API key for saving papers | |
| TELEGRAM_CHAT_ID | No | Telegram chat ID for paper delivery | |
| ZOTERO_LIBRARY_ID | No | Zotero user ID for saving papers | |
| TELEGRAM_BOT_TOKEN | No | Telegram bot token for paper delivery | |
| DISCORD_WEBHOOK_URL | No | Discord webhook URL for paper delivery |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_papersA | 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. |
| rank_papersA | 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. |
| filter_duplicatesB | Remove papers already pushed (by DOI match against papers.jsonl). |
| generate_digestC | Generate all daily output files (pushes.jsonl, papers.jsonl, Astro site JSON, Obsidian notes). |
| send_pushB | Format and send daily paper distill to a messaging platform. Supported platforms: telegram, discord, feishu (飞书/Lark), wecom (企业微信 webhook). |
| collect_to_zoteroA | 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. |
| manage_topicsC | Manage research topic preferences. |
| ingest_research_contextA | 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). |
| init_sessionA | 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:
|
| load_session_contextA | 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. |
| setupA | 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. |
| add_topicB | Add a research topic for paper search. |
| configureB | Update pipeline configuration. All parameters are optional — only provided values are changed. |
| pool_refreshA | 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. |
| prepare_reviewA | 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. |
| finalize_reviewB | 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. |
| collectA | 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). |
| pool_statusB | 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_summarizeA | Generate a summarization prompt for unsummarized papers in today's batch. Returns a dict with:
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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_topics | Current research topic preferences (topic_prefs.json). |
| get_history | Recent push history (last 30 entries from pushes.jsonl). |
| get_config | System configuration (API keys redacted). |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Eclipse-Cj/paper-distill-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server