Skip to main content
Glama
rookslog

arXiv Discovery MCP

by rookslog

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DATABASE_URLYesPostgreSQL connection string (default: postgresql+asyncpg://arxiv_mcp:arxiv_mcp_dev@localhost:5432/arxiv_mcp)postgresql+asyncpg://arxiv_mcp:arxiv_mcp_dev@localhost:5432/arxiv_mcp
OPENALEX_EMAILNoEmail for OpenAlex polite pool (recommended; increases rate limit from 1 to 10 req/s)
DEPLOYMENT_MODENolocal or hosted -- controls content license enforcementlocal
OPENALEX_API_KEYNoOpenAlex API key for enrichment

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_papersA

Search for arXiv papers by text, title, author, or category.

Returns paginated results with paper metadata and relevance scores. Use cursor from previous results to get the next page.

Optionally provide profile_slug to get profile-ranked results with ranking explanations on each result.

Response shape: {"results": {"items": [...], "page_info": {...}}, "ranker_snapshot": ...}

Without profile_slug: items include triage_state and collection_slugs; ranking_explanation is null; ranker_snapshot is null.

With profile_slug: items additionally include ranking_explanation and the response includes a ranker_snapshot capturing ranker config.

browse_recentA

Browse recently announced arXiv papers, optionally filtered by category.

Use time_basis to select ordering: announced, submitted, or updated. Note: Many papers may not have announced_date populated. If results are empty with the default time_basis='announced', try time_basis='submitted'.

Optionally provide profile_slug to get profile-ranked results with ranking explanations on each result.

Response shape: {"results": {"items": [...], "page_info": {...}}, "ranker_snapshot": ...}

Without profile_slug: items include triage_state and collection_slugs; ranking_explanation is null; ranker_snapshot is null.

With profile_slug: items additionally include ranking_explanation and the response includes a ranker_snapshot capturing ranker config.

find_related_papersA

Find papers related to one or more seed papers via lexical similarity.

Accepts a single arXiv ID or a list of IDs. When multiple seeds are given, results are merged and deduplicated, keeping the highest score for each paper.

get_paperA

Get metadata for a single paper by its arXiv ID.

triage_paperB

Set the triage state for a paper.

Valid states: seen, shortlisted, dismissed, read, cite-later, archived, unseen.

add_to_collectionB

Add a paper to a collection. Creates the collection if it doesn't exist.

create_watchA

Create a monitored search that tracks new papers matching your query.

Read the watch://{slug}/deltas resource to see papers added since your last check.

add_signalC

Add a signal to an interest profile.

Signal types: seed_paper (arXiv ID), saved_query (query slug), followed_author (author name), negative_example (arXiv ID).

batch_add_signalsA

Add multiple signals to an interest profile in one call.

Each signal dict must have: signal_type, signal_value. Optional per-signal: reason.

Returns a summary with counts and per-signal results. Continues on individual signal errors (partial success is OK).

create_profileB

Create a new interest profile.

Returns the profile summary with slug, name, signal_count, and timestamps.

suggest_signalsA

Generate signal suggestions for an interest profile.

Examines workflow activity (triaged papers, frequent queries, recurring authors) to suggest new signals. With auto_add=True, adds suggestions as pending signals automatically.

Returns candidates list and added_count.

enrich_paperB

Trigger OpenAlex enrichment for a paper to get topics, citations, and related works.

Set refresh=True to re-enrich even if data exists within the cooldown window.

get_content_variantA

Get paper content at the requested fidelity level.

Retrieves paper content as abstract, HTML, or PDF-derived markdown. Use variant='best' (default) to get the highest-quality available format, which tries HTML first then falls back to PDF markdown.

Valid variants: 'abstract', 'html', 'pdf_markdown', 'best'

Returns content with provenance metadata (source, backend, license). For non-abstract variants, respects per-paper license restrictions.

Prompts

Interactive templates invoked by user choice

NameDescription
literature_review_sessionGuided literature review: search, triage, collect, expand, enrich. Start with a search query and optionally a category filter and interest profile. The prompt guides you through discovering papers, triaging them, building collections, expanding via related papers, and enriching metadata.
daily_digestAutomated daily monitoring: check watches, triage new papers, summarize. Reviews all active watches for new papers, performs quick triage on each, and produces a summary organized by watch/collection.
triage_shortlistBatch-evaluate papers in a collection for triage decisions. Reviews each paper against the research interest and recommends triage states with reasoning. Human confirms or overrides.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 13 tools

Disambiguation4/5

Most tools target distinct actions: search, browse, related-papers, get-paper, triage, watch, signals, enrichment, and content retrieval are clearly separated. The only mild ambiguity is between search_papers and browse_recent since both return ranked paper lists with optional profile_slug, but their descriptions make the query-vs-recency distinction clear.

Naming Consistency4/5

The majority follow a verb_noun pattern such as get_paper, create_profile, add_signal, and enrich_paper. Minor deviations like browse_recent (verb + adjective) and batch_add_signals break the pattern slightly, but the naming remains predictable and readable.

Tool Count5/5

13 tools is a well-scoped count for an arXiv discovery server. Each tool contributes a meaningful capability without redundancy, and the set is neither too thin nor overloaded.

Completeness3/5

The discovery side is well covered with search, browse, get, related papers, content variants, and enrichment. However, the personalization surface has notable lifecycle gaps: you can create profiles, create watches, add signals, and add to collections, but there are no remove, delete, or list operations for these resources.

Maintenance

ActivityInactive
ResponsivenessNo issues