arxiv-mcp-server
Публичный размещённый сервер: https://arxiv.caseyjhand.com/mcp
Инструменты
Четыре инструмента для поиска и чтения статей arXiv:
Название инструмента | Описание |
| Поиск статей arXiv по запросу с фильтрами по категории и сортировке. |
| Получение полных метаданных одной или нескольких статей arXiv по ID. |
| Получение полного текста статьи arXiv из её HTML-представления или из PDF, если HTML-представления нет. |
| Вывод таксономии категорий arXiv, опционально отфильтрованной по группе. |
arxiv_search
Поиск статей по свободным текстовым запросам с префиксами полей и булевыми операторами.
Префиксы полей:
ti:(заголовок),au:(автор),abs:(аннотация),cat:(категория),all:(все поля)Булевы операторы:
AND,OR,ANDNOTОпциональный фильтр по категории, сортировка (relevance, submitted, updated) и постраничная навигация
Категория принимает код конечного узла (
cs.CL) или целый архив (astro-ph,cs,math) — архив без указания подкласса охватывает его предметные классы, а также устаревшие плоские статьи, поданные до его разделенияsubmitted_from/submitted_toограничивают дату подачи (включительно, UTCYYYY-MM-DD). Последовательные окна покрывают совпадения без пропусков — статья, поданная ровно на стыке полуночи, попадает в оба окна, поэтому дедуплицируйте по ID — так можно получить результаты за пределами потолка пагинации в 10 000Возвращает запрос в том виде, в котором он реально выполнялся, со всеми включёнными фильтрами — повторный запуск воспроизводит тот же набор результатов
Возвращает до 50 результатов на запрос с полными метаданными, включая аннотацию
arxiv_get_metadata
Получение полных метаданных одной или нескольких статей по известному arXiv ID.
Пакетное получение до 10 статей за один запрос
Принимает как версионированные (
2401.12345v2), так и неверсионированные (2401.12345) IDПоддерживается устаревший формат ID (
hep-th/9901001)Сообщает о ненайденных ID отдельно от найденных статей
arxiv_read_paper
Чтение полного текста статьи arXiv.
Сначала пробует родной HTML arXiv, затем ar5iv, затем текст, извлечённый из PDF — поле
sourceсообщает, какой источник ответилУдаляет HTML-шапку и служебную обвязку и сворачивает MathML в LaTeX, ограниченный знаками доллара (
$…$встроенный,$$…$$блочный), чтобы лимит символов расходовался на содержимое статьиВозвращает сырой HTML — без разбора и извлечения; LLM интерпретирует содержимое напрямую. Текст, извлечённый из PDF, — это обычный текст: проза надёжна, но математика, таблицы и структура заголовков уплощаются
max_charactersпо умолчанию равен 100 000; передайтеnull, чтобы получить всю статью за один вызов. Сырой HTML для статей с большим объёмом математики может составлять 500 КБ–3 МБ+, что больше, чем большинство клиентов принимает в одном результате инструмента — вместо этого листайте с помощьюstart
arxiv_list_categories
Вывод кодов и названий категорий arXiv для ознакомления.
~155 категорий в 8 группах верхнего уровня (cs, math, physics, q-bio, q-fin, stat, eess, econ)
Опциональный фильтр по группе для сужения результатов
Статические данные — всегда выполняется успешно
Related MCP server: Research Server
Ресурсы
Шаблон URI | Описание |
| Метаданные статьи по arXiv ID. Процентно-кодируйте слэш устаревшего ID — |
| Полная таксономия категорий arXiv. |
Возможности
Построен на @cyanheads/mcp-ts-core:
Декларативные определения инструментов — один файл на инструмент, фреймворк обрабатывает регистрацию и валидацию
Единая обработка ошибок во всех инструментах
Подключаемая аутентификация (
none,jwt,oauth)Структурированное логирование с опциональной трассировкой OpenTelemetry
Запускается локально (stdio/HTTP) из той же кодовой базы
Специфика arXiv:
Только чтение, аутентификация не требуется — API arXiv бесплатен, метаданные имеют лицензию CC0
Очередь запросов с ограничением скорости, обеспечивающая 3-секундную задержку обхода arXiv
Адаптивная пауза при ограничении скорости (5s → 10s → 20s → 30s), учитывает
Retry-AfterПовторные попытки с экспоненциальной задержкой при временных сбоях
Цепочка резервных источников контента: родной HTML arXiv → ar5iv → извлечение текста из PDF (оба HTML-рендера используют LaTeXML, поэтому они склонны отказывать одновременно; PDF — это артефакт, который есть у каждой статьи, и он также покрывает сбой ar5iv, не позволяя одному сбою сорвать чтение)
Полная таксономия категорий arXiv, встроенная как статические данные
Опциональное локальное зеркало метаданных OAI-PMH (SQLite + FTS5) — включается по желанию, устраняет подверженность ограничению скорости для
arxiv_searchиarxiv_get_metadata. См. Опционально: локальное зеркало.
Начало работы
Публичный размещённый экземпляр
Публичный экземпляр доступен по адресу https://arxiv.caseyjhand.com/mcp — установка не требуется. Подключите любой MCP-клиент к нему через Streamable HTTP:
{
"mcpServers": {
"arxiv-mcp-server": {
"type": "streamable-http",
"url": "https://arxiv.caseyjhand.com/mcp"
}
}
}Самостоятельное размещение / Локально
Добавьте в конфигурацию вашего MCP-клиента (например, claude_desktop_config.json):
{
"mcpServers": {
"arxiv-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/arxiv-mcp-server@latest"]
}
}
}Предварительные требования
Bun v1.3.0 или выше.
Установка
Клонируйте репозиторий:
git clone https://github.com/cyanheads/arxiv-mcp-server.gitПерейдите в каталог:
cd arxiv-mcp-serverУстановите зависимости:
bun installКонфигурация
Вся конфигурация опциональна — сервер работает из коробки с разумными значениями по умолчанию.
Переменная | Описание | По умолчанию |
| Базовый URL API arXiv. |
|
| Минимальная задержка между запросами к API arXiv (мс). |
|
| Таймаут для загрузки текста статей — HTML-рендеров и загрузок PDF (мс). |
|
| Таймаут для поисковых запросов и запросов метаданных к API (мс). |
|
| Включить локальное зеркало метаданных OAI-PMH для поиска и метаданных. |
|
| Путь к SQLite для зеркала. |
|
| UTC-выражение cron для ежедневного обновления внутри процесса (только режим HTTP). | не задано |
| Переходить к живому API при промахе локального поиска по ID. |
|
| Направлять запросы с |
|
| Базовый URL конечной точки OAI-PMH arXiv. |
|
| Минимальная задержка между запросами OAI-PMH (мс). |
|
| Бюджет прерывания для одного запланированного обновления в подпроцессе (мс). |
|
| Транспорт: |
|
| Порт для HTTP-сервера. |
|
| Режим аутентификации: |
|
| Уровень логирования (RFC 5424). |
|
Запуск сервера
Локальная разработка
Сборка и запуск:
bun run build bun run start:http # or start:stdioЗапуск проверок и тестов:
bun run devcheck # Lint, format, typecheck, audit bun run test # Vitest
Опционально: локальное зеркало
Для самостоятельных развёртываний за одним исходящим IP-адресом задержка обхода arXiv ~3 секунды на IP-адрес сериализует одновременных пользователей. Опциональное локальное зеркало устраняет подверженность ограничению скорости для arxiv_search и arxiv_get_metadata, обслуживая запросы из хранилища SQLite + FTS5, наполняемого через OAI-PMH. arxiv_read_paper продолжает использовать живой API — полный сбор контента запрещён политикой данных arXiv.
Отключено по умолчанию. Чтобы включить:
# 1. Cold-start harvest (~4.4h sequential, resumable from checkpoint). One-time per installation.
bun run mirror:init
# 2. Enable the mirror.
export ARXIV_MIRROR_ENABLED=true
# 3. Start the server — reads switch to the mirror once the harvest completes.
bun run start:httpЕжедневное инкрементальное обновление (небольшая дельта; длительность зависит от темпа выдачи страниц OAI-PMH arXiv) через:
bun run mirror:refresh # wire to cron / systemd timer / launchd, OR
# set ARXIV_MIRROR_REFRESH_CRON to schedule it in HTTP mode (spawned as a child process)
bun run mirror:verify # schema version + PRAGMA integrity_check / quick_checkОбновления схемы. Зеркало записывает версию схемы и выполняет миграцию на месте при первом открытии более новым сервером — никогда не повторный сбор и не отдельный шаг оператора. Обновление, добавившее comment и journal_ref в полнотекстовый индекс (#37), перестраивает этот индекс из уже сохранённых строк, поэтому поиски co: и jr: работают по зеркалу, собранному до этого обновления. Перестройка выполняется при запуске, до того как хранилище ответит на первый запрос чтения, и в процессе выводит строки прогресса mirror migration v2→v3 (fts rebuild) — на зеркале с полным корпусом первый запуск после обновления, как ожидается, займёт заметно больше времени, чем обычно. Прерванная перестройка повторяется при следующем открытии, а не остаётся наполовину применённой. bun run mirror:verify выводит версию схемы, которую содержит файл, и завершается с ненулевым кодом, если миграция так и не завершилась.
Замечания по поведению. Расхождение ранжирования: FTS5 BM25 отличается от внутреннего ранжирования arXiv, поэтому sortBy=relevance против зеркала возвращает другой top-K, чем живой API. Запросы, отсортированные по submitted по убыванию в пределах ARXIV_MIRROR_RECENT_DAYS_LIVE дней, направляются в живой API, чтобы покрыть промежуток между ночными обновлениями. Устойчивость обновления: после завершения первоначального холодного сбора выполняющееся или завершившееся сбоем ежедневное обновление продолжает обслуживать существующий набор данных из зеркала — arxiv_search и arxiv_get_metadata не переключаются на живой API во время окна обновления (#21). Плановое обновление в HTTP-режиме выполняется в дочернем процессе, поэтому синхронные записи SQLite при сборе никогда не блокируют цикл обработки событий запросов — поиск и метаданные остаются отзывчивыми на протяжении всего процесса (#22). Зеркало хранит только последнюю версию; чтение по отдельным версиям продолжает использовать живой API. Полное описание см. в #12.
Docker
docker build -t arxiv-mcp-server .
docker run -p 3010:3010 arxiv-mcp-serverСтруктура проекта
Каталог | Назначение |
| Определения инструментов ( |
| Определения ресурсов ( |
|
|
| Необязательное OAI-PMH-зеркало — сборщик, хранилище SQLite + FTS5, транслятор запросов, исполнитель. |
| Разбор и валидация переменных окружения с помощью Zod. |
| Скрипты жизненного цикла зеркала ( |
| Модульные и интеграционные тесты. |
| Документ с описанием архитектуры и структура каталогов. |
Руководство по разработке
См. CLAUDE.md с рекомендациями по разработке и архитектурными правилами. Краткая версия:
Обработчики выбрасывают исключения, фреймворк ловит их — никаких
try/catchв логике инструментовИспользуйте
ctx.logдля доменного логированияОграничение частоты запросов управляется
ArxivService— не добавляйте задержки для отдельных инструментовarXiv API возвращает HTTP 200 для всего — проверяйте content-type и тело ответа
Участие в разработке
Приветствуются issue и pull request. Перед отправкой запустите проверки:
bun run devcheck
bun testЛицензия
Apache-2.0 — подробности см. в LICENSE.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.
Search and download academic papers from arXiv, PubMed, bioRxiv, medRxiv, Google Scholar, Semantic…
arXiv MCP — preprint server search (free, no auth)
Academic research search across PubMed and arXiv
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceEnables AI assistants to search and retrieve academic papers from arXiv through MCP tools, supporting search by various criteria, detailed paper information, category browsing, and PDF content extraction.41292-
- FlicenseBqualityDmaintenanceEnables searching arXiv papers and retrieving paper metadata through MCP tools.42-
- AlicenseAqualityCmaintenanceMCP server for searching and retrieving arXiv papers with full-text PDF extraction.52MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching arXiv, fetching metadata, reading papers as section-aware Markdown, listing recent papers, and downloading PDFs via five MCP tools.232MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/cyanheads/arxiv-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server