Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOSTNoHTTP bind host.127.0.0.1
PORTNoHTTP bind port.8000
TRANSPORTNoTransport mode: stdio, http, or streamable-http.stdio
MAX_RESULTSNoServer-side cap for result counts.50
ALLOWED_HOSTSNoAdditional accepted HTTP Host values.
ALLOWED_ORIGINSNoAdditional accepted HTTP Origin values.
REQUEST_TIMEOUTNoUnprefixed fallback for ARXSOURCE_REQUEST_TIMEOUT, used only when the prefixed variable is not set. Values ≤ 0 fall back to the 30s default.
ARXSOURCE_MAX_BACKOFFNoMaximum backoff delay in seconds (Retry-After can exceed this and causes immediate rate_limited return). Values ≤ 0 fall back to default.30
ARXSOURCE_MAX_RETRIESNoMaximum retry attempts for transient failures (timeouts, connections, 429, 503).2
ARXSOURCE_MAX_TOTAL_TIMENoTotal budget in seconds for each tool call (HTML + PDF combined for download_paper). Values ≤ 0 fall back to default. Very small budgets (under ~6s) may leave insufficient time for HTML-to-PDF fallback due to the process-wide 3s rate-limiter delay.50
SEMANTIC_SCHOLAR_API_KEYNoFree Semantic Scholar API key for citation_graph. Get one at https://www.semanticscholar.org/product/api#api-key to avoid rate limits. Unauthenticated requests work until quota exhausted.
ARXSOURCE_CONNECT_TIMEOUTNoConnection timeout in seconds for all arXiv requests. Values ≤ 0 fall back to default.10
ARXSOURCE_INITIAL_BACKOFFNoInitial exponential backoff delay in seconds.2.0
ARXSOURCE_REQUEST_TIMEOUTNoPer-attempt read timeout in seconds for all arXiv requests (API, HTML, PDF, LaTeX). Values ≤ 0 fall back to default.30
ARXSOURCE_HTTP_406_MAX_RETRIESNoMaximum retry attempts for HTTP 406 (IP-level throttling, use minimal retries).1

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
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_papersA

Search arXiv by query with optional categories, date range, sort, and pagination.

Query: prefer quoted phrases; ti:/au:/abs:/cat:; AND/OR/ANDNOT. Unprefixed terms match title+abstract (not authors). Use categories (cs.AI, cs.LG, cs.CL, cs.CV, cs.MA, cs.RO, stat.ML, quant-ph). Catalog/examples: README 'search_papers query guide'.

Dates YYYY-MM-DD (date_from/date_to). sort_by relevance|date. max_results default 5 (cap 50). abstract_mode none|snippet|full (default snippet). start default 0; response: total_results, returned, has_more, next_start, abstract_mode. Pass next_start with same abstract_mode. Use get_abstract after compact search — not after abstract_mode=full.

arXiv ~3s between requests (server-side). Transient 429/503 are retried with backoff; persistent rate limits return status=rate_limited.

download_paperA

Download a paper from arXiv and return its text content. Tries the HTML version first for clean extraction; falls back to PDF conversion if HTML is unavailable. Stores the paper locally. Returned text is bounded to roughly 12,000 characters by default so one call cannot return an unbounded paper body. When is_truncated is true, call again with start=next_start (see next_retrieval) to continue, or pass return_full_text=true for the entire remaining paper. Set force=true to re-fetch and overwrite a cached paper (required to replace a newer stored arXiv version with an older one).

list_papersA

List all papers that have been downloaded and stored locally via download_paper. Returns id, title, authors, published, and arxiv_version/versioned_id from local metadata — no live re-fetch. Set compact=true to return arXiv IDs only. Returns an empty list if no papers have been downloaded yet. Workflow: search_papers -> download_paper -> list_papers -> read_paper.

read_paperA

Read the text content of a paper that was previously downloaded via download_paper. Returns the paper in markdown format, bounded to roughly 12,000 characters by default so one call cannot return an unbounded paper body. When is_truncated is true, call again with start=next_start (see next_retrieval) to continue, or pass return_full_text=true for the entire remaining paper. Will fail with a clear error if the paper has not been downloaded yet — call download_paper first. Workflow: search_papers -> download_paper -> read_paper.

get_abstractA

Fetch abstract and metadata by arXiv ID without downloading the paper. Use before download_paper to assess relevance. Returns title, authors, abstract, categories, published date, and PDF URL. After compact search, use for one full abstract; skip if search used abstract_mode=full.

semantic_searchA

Semantic similarity search over papers you have already downloaded locally via download_paper. Supports free-text queries (e.g. 'attention mechanisms for long sequences') or finding papers similar to a given paper_id. IMPORTANT: only searches your local downloaded collection — will return empty results if no papers have been downloaded yet. Use search_papers to find papers on arXiv, then download_paper to add them to the local index before using this tool. Requires pro dependencies: uvx --from 'arxsource-mcp[pro]' arxsource-mcp (or uv tool install 'arxsource-mcp[pro]').

reindexA

Rebuild the local semantic index for downloaded papers.

citation_graphA

Return papers citing an arXiv paper and papers that it references using Semantic Scholar's citation graph. Results are bounded (default 50) to stay within the unauthenticated quota. Graphs are cached on disk to reduce repeated API calls. Under load, a free Semantic Scholar API key (https://www.semanticscholar.org/product/api#api-key) makes this reliable; without a key, persistent rate limits return status=rate_limited with an unmistakable warning instead of failing hard.

export_citationsA

Export BibTeX citations for one or more arXiv papers using authoritative arXiv metadata (title, authors, year, primary category), never model-generated fields. Version suffixes (e.g. '2401.12345v2') are preserved and citation keys are deterministic. Returns the rendered BibTeX plus per-paper status/error. BibTeX only; RIS/CSL-JSON are not yet supported.

find_paper_codeA

Find where the code and artifacts for an arXiv paper live: the GitHub repository (with stars) and project page, plus the most-downloaded Hugging Face models and datasets and linked Spaces. Uses the public Hugging Face Hub API (no key). A paper with nothing linked returns found=false, not an error; a failed sub-lookup is listed in warnings and the rest is still returned.

watch_topicA

Save or update a persistent research topic watch. When checked via check_alerts, returns only papers published since the last check — acting as a standing alert for new work on a topic. New watches seed last_checked to creation time so the first check does not dump historical matches. The topic string uses the same query syntax as search_papers (quoted phrases, field specifiers, boolean operators). Examples: '"diffusion models" AND ti:"video generation"', 'au:"LeCun" AND cs.LG'. Calling watch_topic with the same topic string updates the existing watch rather than creating a duplicate. On update, omit categories to preserve existing filters; pass categories: [] to clear them. Pair with check_alerts to poll for new papers.

check_alertsA

Check all saved topic watches for newly published papers since the last check. Omitting the topic parameter runs ALL saved watches and returns new papers for each. Passing a topic string checks only that specific watch. Advances each watch's drain cursor after running: when a page is truncated by max_results, has_more=true and check_start advances so later calls return the next papers in the same window (Atom date bounds alone are day-granular and would otherwise re-hit the boundary); last_checked tracks the newest returned paper. When the page is not full, last_checked becomes now and the drain cursor resets. Use watch_topic to register topics before calling this. Returns a clear not-found error if a topic is provided but no matching watch exists. Returns a summary with new paper counts, has_more, and full paper metadata per topic.

list_watchesA

List all saved topic watches without checking for new papers. Returns each watch's topic, categories, last_checked timestamp, and other stored fields. Does not update last_checked — use this to inspect what is saved. Use unwatch_topic to remove a watch, or check_alerts to poll for new papers.

unwatch_topicA

Delete a saved topic watch by exact topic string. The topic must match the stored watch_topic value exactly. Returns a clear not-found error if no matching watch exists. Use list_watches to inspect saved watches before deleting.

get_paper_latexA

Download, safely process, cache, and return bounded original LaTeX source. Use section tools for targeted reading.

list_paper_latex_sectionsA

Return a compact outline of headings from original LaTeX source.

get_paper_latex_sectionA

Return one bounded LaTeX section by outline ID or title (whitespace/case normalized; macros expanded).

get_paper_outlineA

Return a paginated heading outline for a downloaded paper (markdown). Stable hierarchical section IDs; use read_paper_section to fetch one.

read_paper_sectionA

Return one bounded markdown section by outline ID (or unique title). Does not include sibling or parent sections.

search_paper_textA

Search a downloaded paper for bounded matching passages with section/source offsets. Suppresses high-overlap near-duplicates and prefers section-diverse hits. Lightweight substring search; no Torch.

Prompts

Interactive templates invoked by user choice

NameDescription
research-discoveryBegin research exploration on a specific topic
deep-paper-analysisAnalyze a specific paper in detail
summarize_paperSummarize a paper with key methods, results, and limits
compare_papersCompare two or more papers on methods and results
literature_reviewSynthesize a literature review for a topic and paper set
literature-synthesisSynthesize findings across multiple papers
research-questionFormulate research questions based on literature

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 20 tools

Disambiguation3/5

Core search, download, watch, and citation tools are clearly distinct, but several tools retrieve paper content through overlapping paths: read_paper, read_paper_section, get_paper_latex, get_paper_latex_section, get_paper_outline, list_paper_latex_sections, and search_paper_text. An agent may hesitate between markdown and LaTeX section tools, and between download_paper (which returns text) and read_paper.

Naming Consistency4/5

Nearly all tools use snake_case with a verb_noun pattern, which is predictable. There are minor inconsistencies such as list_paper_latex_sections vs get_paper_latex_section (plural vs singular) and mixing read/get/list verbs across similar paper-section operations.

Tool Count3/5

Twenty tools is on the heavy side for an arXiv research assistant. Many are justified by distinct workflows, but the several overlapping paper-reading and LaTeX-section tools could be consolidated to reduce surface area.

Completeness4/5

The surface is comprehensive: search, download, abstract retrieval, local semantic search, citations, code/artifact lookup, topic alerts, and LaTeX access are all covered. Minor gaps include no tool to remove locally stored papers or clear the semantic index, and citation export is limited to BibTeX only.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues