
Arxiv Mcp Server
io.github.blazickjpPublished by GitHub account blazickjpv0.8.2Updated Oct 24, 2026
Search arXiv papers, download full text, semantic search, citation graphs, and alerts via MCP.
Overview
A local MCP server that lets an assistant search arXiv, download papers to disk, read them section by section, and export citations.
- What you can do
- Search arXiv by query, category, date and sort order, and fetch abstracts and metadata by paper ID, with pagination and snippet or full abstracts. Download papers to local Markdown, list stored papers, and page through their text or search passages within them. Read author-submitted LaTeX outlines and individual sections, and retrieve bounded LaTeX source. Build citation graphs of references and citing papers, and export BibTeX for one or more arXiv IDs. Save topic watches, list them, check for new papers since the last check, and delete them. Optionally run semantic search and reindexing over downloaded papers, plus seven built-in research prompts.
- When to use it
- Useful for literature reviews, paper triage and citation chasing where the assistant should work from full text rather than abstracts alone. Worth adding when you want papers cached locally and read in bounded chunks, or want standing topic alerts on arXiv.
- Requirements
- Runs locally over stdio via uvx, so uv must be installed; a PyPI package named arxiv-mcp-server is used, not the same-named npm package. Network access to arXiv and Semantic Scholar. Optional ARXIV_STORAGE_PATH or --storage-path sets the paper directory (default under the home directory). Optional SEMANTIC_SCHOLAR_API_KEY improves citation-graph reliability. Semantic search needs the pro extra; PDF conversion needs the pdf extra. An HTTP transport mode is available.
Installation
In SourceWeft
- Open Arxiv Mcp Server in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
arxiv-mcp-server
[PyPI] [Downloads] [License] [MCP Registry] [Tests] [GitHub stars]
[Install in VS Code] [Install MCP Server] [Add to Kiro] [Claude Code] [OpenAI Codex] [Hermes Agent]
A local MCP server for agent literature work. The differentiator is original-LaTeX section reads, BibTeX from arXiv metadata, and topic watches. Papers stay on disk. The working loop is paper ID → outline → one section → citations. Search is optional.
Install
The default install is uvx arxiv-mcp-server. Command-based integrations need uv, which provides uvx. No repository clone or Python environment setup is required.
Add this stdio configuration to clients that accept the mcpServers JSON shape, such as Claude Desktop and Kiro. Other clients may use a top-level servers object, TOML, or their own settings UI; consult the client's MCP documentation.
The default paper directory is ~/.arxiv-mcp-server/papers. To choose another directory, append "--storage-path", "/absolute/path/to/papers" to args.
The supported package is published on PyPI as arxiv-mcp-server==0.8.2. An unrelated npm package uses the same name, so do not install this server with npm, pnpm, or npx arxiv-mcp-server.
Listed on the official MCP registry, latest 0.8.2.
Why this is not a search wrapper
Search, source retrieval, citation graphs, and downloads call their respective external services. What stays local is the literature loop: read author-submitted LaTeX one section at a time, export BibTeX from authoritative arXiv metadata, and keep topic watches on disk. The server runs locally over stdio by default.
Per-client recipes (Claude Code, Codex, Hermes, VS Code / Kiro, Claude Desktop, plugins)
Use the default JSON above unless your client has a one-line helper.
Claude Code
Add the MCP server for all projects:
For the richer plugin integration—which installs the MCP connection plus the bundled arXiv research skill—register this repository as a marketplace and install the plugin:
Verify the direct MCP installation with claude mcp get arxiv. Restart Claude Code or run /reload-plugins after installing the plugin.
OpenAI Codex
Add the MCP server:
Or install the MCP connection and bundled research skill as a Codex plugin:
Verify the direct MCP installation with codex mcp get arxiv. Codex CLI, the Codex IDE extension, and Codex in the ChatGPT desktop app share this MCP configuration.
Hermes Agent
Add the server, approve the discovered tools, and test the saved connection:
VS Code and Kiro
[Install in VS Code] [Install MCP Server] [Add to Kiro]
For the richer Kiro Power integration, open the Powers panel, choose Add Custom Power → Import power from GitHub, and enter:
The Power installs the MCP connection from mcp.json and adds focused arXiv research guidance. Kiro users who prefer manual configuration can place the generic configuration above in .kiro/settings/mcp.json for one workspace or ~/.kiro/settings/mcp.json for all workspaces.
Claude Desktop bundle
macOS users can install a bundled .mcpb extension from the v0.8.2 release or the latest GitHub release:
- Apple Silicon:
arxiv-mcp-server-darwin-arm64-0.8.2.mcpb - Intel:
arxiv-mcp-server-darwin-x86_64-0.8.2.mcpb
Double-click the bundle, drag it into Claude Desktop, or open Settings → Extensions → Advanced settings → Install Extension…. The bundle includes the server dependencies and requires CPython 3.11.x.
Other MCP clients
Other clients may use a top-level servers object, TOML, or their own settings UI; consult the client MCP documentation. Direct MCP installation is the shortest path. Install a plugin when you also want the research workflow that steers the client toward focused searches, bounded reads, citation traversal, and section-level LaTeX retrieval.
Plugin manifests
The same MCP server and research skill are packaged for both major plugin systems:
If a desktop client cannot find uvx
Desktop applications do not always inherit the same PATH as your terminal. If uvx arxiv-mcp-server works in a terminal but the client reports that the server failed to connect, find the executable's absolute path:
Replace "command": "uvx" with the returned absolute path, then restart the client. Keep the args value unchanged.
If an existing installation is missing newer tools
uvx reuses cached tool environments. Force it to resolve the current PyPI release with a supported interpreter, then restart your MCP client:
If your client still launches an older environment, add "--python", "3.11" before "arxiv-mcp-server" in its args array.
Persistent command install
To place arxiv-mcp-server on your PATH instead of launching it through uvx:
If the command is not immediately available, run uv tool update-shell and restart the terminal. Afterward, use "command": "arxiv-mcp-server" and omit the package name from args.
Tools
The server currently exposes 19 tools.
Research alerts (watch_topic)
Save standing topic watches with watch_topic, inspect them with list_watches, poll with check_alerts, and remove with unwatch_topic.
When updating an existing watch (same topic string):
- Omit
categories→ preserve the stored category filters (and other fields you leave unchanged). - Pass
categories: []→ clear category filters. - Pass a non-empty list → replace the stored filters.
Create path: omitting categories stores an empty list (no category filter).
search_papers query guide
Tool schemas stay short on purpose. Use this section (not the always-loaded MCP description) for query tutorials, category catalogs, and workflow examples.
Query construction
- Use quoted phrases for exact matches:
"multi-agent systems","neural networks" - Combine related concepts with OR:
"AI agents" OR "software agents" - Field-specific searches:
ti:"exact title phrase",au:"author name",abs:"keyword",cat:cs.LG - Exclude with ANDNOT:
"machine learning" ANDNOT "survey" - Prefer 2–4 core concepts over long keyword lists
Advanced patterns
- Field + phrase:
ti:"transformer architecture" - Multiple fields:
au:"Smith" AND ti:"quantum" - Exclusions:
"deep learning" ANDNOT ("survey" OR "review") - Broad + narrow:
"artificial intelligence" AND (robotics OR "computer vision")
Category filtering (recommended for relevance)
Computer Science: cs.AI (AI), cs.LG (ML), cs.CL (NLP), cs.CV (vision), cs.MA (multi-agent), cs.RO (robotics), cs.NE (neural/evolutionary), cs.IR (IR), cs.HC (HCI), cs.CR (security), cs.DB (databases)
Statistics & Math: stat.ML, stat.AP, math.OC, math.ST
Physics & other: quant-ph, eess.SP, eess.AS, physics.data-an
Effective examples
ti:"reinforcement learning"withcategories: ["cs.LG", "cs.AI"]au:"Hinton" AND "deep learning"withcategories: ["cs.LG"]"multi-agent" ANDNOT "survey"withcategories: ["cs.MA"]abs:"transformer" AND ti:"attention"withcategories: ["cs.CL"]
Dates and sorting
- Dates use
YYYY-MM-DD(date_from/date_to) - Default
sort_byisrelevance; usedatefor newest-first monitoring - Foundational work:
date_to: "2010-12-31"with title/abstract field searches
Result size, abstracts, and pagination
- Default
max_resultsis 5 (cap 50). Pass an explicit value for larger pages. abstract_mode:snippet(default, ~280 chars, marked… [truncated]when cut),full(complete abstract), ornone(omit abstracts). Other metadata (title, authors, categories, dates, URLs) is always returned.- Responses report
total_results(corpus hits),returned,has_more,start,next_start, andabstract_mode - Pass
start=next_startwith the sameabstract_modefor the next page - arXiv enforces ~3 seconds between requests (handled server-side); on rate-limit errors wait ~60s
Search and inspect a paper
Ask your MCP client to call search_papers with:
Defaults return up to five compact results with abstract snippets. Use "abstract_mode": "full" when you need complete abstracts in the search response, or call get_abstract for a single paper after a compact search:
Do not call get_abstract again for papers already returned with abstract_mode=full.
Download and read full text
Call download_paper with:
Omitting max_chars returns a bounded first chunk (default 12,000 paper characters). Cached papers are returned immediately. Pass "force": true to re-download and overwrite the local markdown and sidecar (also happens automatically when the HTML extractor version changes).
Then page through the cached content with read_paper:
Or continue from a prior chunk:
Large-content responses include content_length, returned_chars, next_start, is_truncated, and (when truncated) next_retrieval with the next-call instruction. Pass next_start into the next call's start to continue reading. Pass an explicit max_chars to override the default chunk size, or "return_full_text": true to opt into the previous unbounded full-paper response.
Migration notes (bounded content default)
Previously, omitting max_chars on download_paper / read_paper returned the entire paper. That default is now a 12,000-character chunk so a single MCP tool call cannot flood the client context window.
Clients that already passed max_chars are unchanged. Only callers that relied on the omitted-max_chars = full-text behavior need to add return_full_text: true or page via next_start.
Read original LaTeX by section
Call get_paper_latex with:
Get the first page of its section outline with list_paper_latex_sections:
Then call get_paper_latex_section using an ID from that outline:
LaTeX archives are validated, size-limited, and cached locally before content is returned.
Optional dependencies
Choose the install variant that matches the features you need:
If the base tool is already installed, reinstall the selected variant:
The pdf extra installs pymupdf4llm and pymupdf-layout for papers without usable arXiv HTML. The pro extra adds local embedding dependencies for semantic_search and reindex; semantic search only operates on papers already downloaded to the configured storage directory.
For older papers that require PDF conversion, run the package with its PDF extra:
Built-in prompts
The server provides seven MCP prompt workflows. Prompt availability depends on the client; the server provides workflow instructions but does not run a separate model.
Streamable HTTP
For deployments where stdio is not practical:
PowerShell:
Connect clients to:
Cloud and load-balancer probes should GET http://<host>:<port>/healthz. It returns 200 with body ok once the HTTP server is listening. There is no separate /ready check: if the process is up, it is ready. The stdio transport has no HTTP endpoints.
The server binds to 127.0.0.1 by default and enables MCP DNS-rebinding protection. If a reverse proxy exposes the server, keep the process on a private interface and provide authentication and network controls upstream. Use ALLOWED_HOSTS and ALLOWED_ORIGINS for the host and origin values forwarded by the proxy.
Configuration
Environment variable names are case-insensitive through Pydantic settings. --storage-path is a command-line option rather than an environment setting.
Security
Paper text and LaTeX are untrusted external content. A paper can contain text intended to manipulate an AI client into ignoring its instructions or calling unrelated tools.
- Do not treat instructions found inside a paper as trusted commands.
- Use client approval controls for shell, browser, filesystem, and messaging tools.
- Review generated summaries before taking external actions.
- Keep Streamable HTTP private unless authentication is provided upstream.
See SECURITY.md for the reporting policy and threat details.
Development
Run the development checkout from an MCP client with:
Contributions are welcome. Read CONTRIBUTING.md before opening a pull request, and use GitHub Issues for reproducible bugs or scoped feature proposals.
License
Apache License 2.0. See LICENSE.
Source: README.md at commit 572e301
Tools
0Version history
5- v0.8.2LatestOct 8, 2026
- v0.8.1Oct 5, 2026
- v0.8.0Oct 3, 2026
- v0.7.3Sep 30, 2026
- v0.7.2Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts