Skip to main content
Glama
Eclipse-Cj

Paper Distill MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CORE_API_KEYNoCORE API key for open-access paper retrieval
OPENALEX_EMAILNoEmail for OpenAlex polite pool (higher rate limits)
ZOTERO_API_KEYNoZotero API key for saving papers
TELEGRAM_CHAT_IDNoTelegram chat ID for paper delivery
ZOTERO_LIBRARY_IDNoZotero user ID for saving papers
TELEGRAM_BOT_TOKENNoTelegram bot token for paper delivery
DISCORD_WEBHOOK_URLNoDiscord webhook URL for paper delivery

Capabilities

Features and capabilities supported by this server

CapabilityDetails
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

NameDescription
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:

  • 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 is specified, the response will include ask_platform — you MUST ask the user which platform to use, then call init_session again with platform=<user_choice>.

  • If only one platform is configured, it is auto-selected.

  • The send_push tool also accepts a platform parameter, so the user can override per-push even after init.

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:

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

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
get_topicsCurrent research topic preferences (topic_prefs.json).
get_historyRecent push history (last 30 entries from pushes.jsonl).
get_configSystem 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