Skip to main content
Glama
404Simon

research-mcp

by 404Simon

Research MCP

MCP-сервер только для чтения для академических исследований. Позволяет LLM-агенту искать статьи, просматривать метаданные, переходить по графу цитирования, генерировать BibTeX и читать полные тексты PDF-файлов открытого доступа — всё через инструменты FastMCP.

Требования

  • Python 3.13+

  • uv

  • Доступ в интернет к публичным API (API-ключ не требуется)

Как это работает

API

Назначение

Semantic Scholar

Основной поиск, метаданные, TLDR, граф цитирования. Используется первым.

OpenAlex

Автоматический резерв, когда Semantic Scholar ограничивает запросы; также поиск PDF открытого доступа.

arXiv

Отдельный поиск препринтов (source="arxiv"), поиск по arXiv ID и прямое скачивание PDF. Лучше всего подходит для поиска конкретных свежих статей по точному названию.

DBLP

Обзоры материалов конференций (venue_proceedings) и поиск в рамках конференции. Канонический источник для ответа на вопрос «что принимает эта конференция».

Crossref

Генерация BibTeX (transform/application/x-bibtex).

PyMuPDF

Извлечение текста из PDF.

Semantic Scholar ограничивает частоту запросов при использовании без ключа, поэтому каждый запрос повторяется с экспоненциальной задержкой (с учётом Retry-After), прежде чем произойдёт переход на OpenAlex. Результаты всегда сообщают агенту, какой источник был использован. API arXiv требует соблюдения интервала ~3 с между запросами, и сервер соблюдает это правило; DBLP сбрасывает соединения при быстрых последовательных запросах, поэтому страницы с материалами конференций тоже запрашиваются с вежливой задержкой 3 с.

Кэширование

Все нестабильные ответы API, результаты поиска, корпуса материалов конференций и PDF-файлы кэшируются на диске в ~/.cache/research-mcp/ (api/ для JSON-ответов, pdf/ для скачанных PDF):

  • Свежие попадания в кэш выдаются мгновенно — повторные запросы не обращаются к сети.

  • Корпуса конференций (собранные из страниц DBLP) кэшируются целиком, поэтому повторные обзоры программы конференции выполняются мгновенно, даже если DBLP перестанет отдавать страницу.

  • Устаревший запасной вариант: если API недоступен или ограничивает запросы, всё равно выдаётся последний кэшированный ответ, так что агент всё равно получает ответ.

  • TTL кэша: 7 дней для arXiv и BibTeX (стабильные данные), 24 часа для поиска/метаданных и DBLP. Переопределите расположение с помощью RESEARCH_MCP_CACHE_DIR.

Конфигурация

Зарегистрируйте сервер в MCP-конфигурации вашего агента разработки. Например, в opencode.json для Opencode:

{
  "mcp": {
    "research-mcp": {
      "command": [
        "uvx",
        "--from",
        "git+https://github.com/404Simon/research-mcp",
        "research-mcp"
      ],
      "enabled": true,
      "type": "local"
    }
  }
}

Переменные окружения (все необязательные)

Переменная

Назначение

SEMANTIC_SCHOLAR_API_KEY

Установите для гарантированных 1 RPS и более высокой надёжности (в противном случае используется OpenAlex).

RESEARCH_MCP_CACHE_DIR

Где кэшируются ответы API и PDF. По умолчанию: ~/.cache/research-mcp/.

Инструменты

search_papers

Ищет академические статьи по ключевым словам с необязательными фильтрами по месту публикации и году. Возвращает структурированные результаты: название, год, место публикации, авторов, DOI, аннотацию, число цитирований и ссылку на PDF открытого доступа, если он доступен.

Аргумент

Тип

Описание

query

string (обяз.)

Поисковые термины

venue

string (необяз.)

Фильтр по месту публикации, например e-Energy, VLDB

year_start

int (необяз.)

Самый ранний год публикации

year_end

int (необяз.)

Самый поздний год публикации

limit

int (необяз.)

Максимум результатов (по умолчанию 20)

source

string (необяз.)

auto (по умолчанию), semanticscholar, openalex или arxiv

source="arxiv" выполняет поиск в API препринтов arXiv и является рекомендуемым способом находить конкретные свежие статьи по точному названию, например query='ti:"carbon intensity" AND abs:forecast' (синтаксис полей arXiv передаётся без изменений). Все результаты кэшируются, поэтому повторные поиски выполняются мгновенно.

venue_proceedings

Обзор материалов конференции или журнала (того, что там реально публикуется). Используйте его, чтобы проверить, подходит ли идея статьи для такой конференции, как ACM e-Energy.

Аргумент

Тип

Описание

venue

string (обяз.)

Название конференции или журнала (например, e-Energy) или ключ потока DBLP (например, conf/eenergy)

year

int (необяз.)

Только статьи за один год (например, 2024)

query

string (необяз.)

Фильтр по теме; статьи ранжируются по совпадению ключевых слов в названии

limit

int (необяз.)

Максимум результатов (по умолчанию 20)

Полный корпус материалов площадки загружается из DBLP (с разбиением на страницы, превосходящим лимит в 100 записей), ранжируется на стороне клиента и кэшируется целиком — повторные обзоры выполняются мгновенно.

{"results": [
  {"title": "Reinforcement Learning Approach for Optimal Distributed Energy Management in a Microgrid",
   "year": 2018, "venue": "IEEE Transactions on Power Systems",
   "authors": ["Elham Foruzan", "Leen-Kiat Soh", "S. Asgarpoor"],
   "doi": "10.1109/tpwrs.2018.2823641",
   "abstract": "In this paper, a multiagent-based model is used ...",
   "citation_count": 297, "open_access_pdf": null,
   "source": "openalex"}],
 "note": "(Semantic Scholar unavailable — used OpenAlex instead: RequestFailed)",
 "count": 1}

paper_details

Полные метаданные статьи. Принимает DOI (например, 10.1109/tpwrs.2018.2823641), arXiv ID (например, 2408.03506, arXiv:2408.03506 или URL arxiv.org/abs/...) или OpenAlex ID.

Аргумент

Тип

Описание

doi_or_id

string (обяз.)

DOI, arXiv ID или OpenAlex ID

Возвращает название, авторов, место публикации, год, аннотацию, TLDR, число цитирований, DOI и PDF открытого доступа:

get_citation_graph

Прослеживает цитирования статьи вперёд или назад для поиска методом снежного кома.

Аргумент

Тип

Описание

paper_id

string (обяз.)

DOI, OpenAlex ID (W...) или идентификатор статьи Semantic Scholar

direction

string (необяз.)

citing (по умолчанию, статьи, цитирующие данную) или referenced (её библиография)

limit

int (необяз.)

Максимум результатов (по умолчанию 20)

get_bibtex

Генерирует запись BibTeX для DOI. Использует собственный transform Crossref; при недоступности переключается на локальную генерацию из метаданных OpenAlex (обрабатывает DOI arXiv, которые Crossref не знает).

Аргумент

Тип

Описание

doi

string (обяз.)

DOI

@article{Foruzan_2018, title={Reinforcement Learning Approach for Optimal Distributed Energy Management in a Microgrid}, volume={33}, ..., author={Foruzan, Elham and Soh, Leen-Kiat and Asgarpoor, Sohrab}, year={2018} }

read_paper_full_text

Скачивает PDF открытого доступа и извлекает его текст с помощью PyMuPDF. Передайте DOI, arXiv ID (например, 2408.03506) или прямую ссылку на PDF. PDF-файлы кэшируются локально (~/.cache/research-mcp/pdf/).

Аргумент

Тип

Описание

doi_or_pdf_url

string (обяз.)

DOI, arXiv ID или URL PDF https://...

max_chars

int (необяз.)

Обрезать возвращаемый текст (по умолчанию 50000)

cache

bool (необяз.)

Кэшировать PDF локально (по умолчанию true)

Возвращает извлечённый текст, количество страниц, URL источника и путь к кэшу. Если копия открытого доступа не найдена, агент получает понятное сообщение с указанием найти OA-копию или передать URL PDF напрямую.

Структура файлов

src/
  main.py              # FastMCP server, tool definitions, fallback orchestration
  client.py            # HTTP client with retry/backoff (429/5xx, Retry-After)
  cache.py             # Disk cache (~/.cache/research-mcp/) with stale fallback
  semanticscholar.py   # Semantic Scholar: search, details, citations (optional API key)
  openalex.py          # OpenAlex: search, details, citation graph, OA-PDF resolution
  arxiv.py             # arXiv API: search, ID lookups (3 s politeness, 7-day cache)
  dblp.py              # DBLP: venue proceedings + venue-scoped search (paged corpus cache)
  crossref.py          # Crossref: BibTeX transform + local fallback generator
  pdf.py               # PDF download/validation/caching + PyMuPDF text extraction

API-ключ не требуется. Выполните uv sync && uv run research-mcp, чтобы запустить сервер через stdio.

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • Academic research MCP server for paper search, citation checks, graphs, and deep research.

  • Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.

  • Read-only MCP over an agentic SLR workspace with per-claim citation verification

View all MCP Connectors

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/404Simon/research-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server