research-mcp
Research MCP
MCP-сервер только для чтения для академических исследований. Позволяет LLM-агенту искать статьи, просматривать метаданные, переходить по графу цитирования, генерировать BibTeX и читать полные тексты PDF-файлов открытого доступа — всё через инструменты FastMCP.
Требования
Python 3.13+
Доступ в интернет к публичным API (API-ключ не требуется)
Как это работает
API | Назначение |
Semantic Scholar | Основной поиск, метаданные, TLDR, граф цитирования. Используется первым. |
OpenAlex | Автоматический резерв, когда Semantic Scholar ограничивает запросы; также поиск PDF открытого доступа. |
arXiv | Отдельный поиск препринтов ( |
DBLP | Обзоры материалов конференций ( |
Crossref | Генерация 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"
}
}
}Переменные окружения (все необязательные)
Переменная | Назначение |
| Установите для гарантированных 1 RPS и более высокой надёжности (в противном случае используется OpenAlex). |
| Где кэшируются ответы API и PDF. По умолчанию: |
Инструменты
search_papers
Ищет академические статьи по ключевым словам с необязательными фильтрами по месту публикации и году. Возвращает структурированные результаты: название, год, место публикации, авторов, DOI, аннотацию, число цитирований и ссылку на PDF открытого доступа, если он доступен.
Аргумент | Тип | Описание |
|
| Поисковые термины |
|
| Фильтр по месту публикации, например |
|
| Самый ранний год публикации |
|
| Самый поздний год публикации |
|
| Максимум результатов (по умолчанию 20) |
|
|
|
source="arxiv" выполняет поиск в API препринтов arXiv и является рекомендуемым способом находить конкретные свежие статьи по точному названию, например query='ti:"carbon intensity" AND abs:forecast' (синтаксис полей arXiv передаётся без изменений). Все результаты кэшируются, поэтому повторные поиски выполняются мгновенно.
venue_proceedings
Обзор материалов конференции или журнала (того, что там реально публикуется). Используйте его, чтобы проверить, подходит ли идея статьи для такой конференции, как ACM e-Energy.
Аргумент | Тип | Описание |
|
| Название конференции или журнала (например, |
|
| Только статьи за один год (например, |
|
| Фильтр по теме; статьи ранжируются по совпадению ключевых слов в названии |
|
| Максимум результатов (по умолчанию 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, arXiv ID или OpenAlex ID |
Возвращает название, авторов, место публикации, год, аннотацию, TLDR, число цитирований, DOI и PDF открытого доступа:
get_citation_graph
Прослеживает цитирования статьи вперёд или назад для поиска методом снежного кома.
Аргумент | Тип | Описание |
|
| DOI, OpenAlex ID ( |
|
|
|
|
| Максимум результатов (по умолчанию 20) |
get_bibtex
Генерирует запись BibTeX для DOI. Использует собственный transform Crossref; при недоступности переключается на локальную генерацию из метаданных OpenAlex (обрабатывает DOI arXiv, которые Crossref не знает).
Аргумент | Тип | Описание |
|
| 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, arXiv ID или URL PDF |
|
| Обрезать возвращаемый текст (по умолчанию 50000) |
|
| Кэшировать PDF локально (по умолчанию |
Возвращает извлечённый текст, количество страниц, 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 extractionAPI-ключ не требуется. Выполните uv sync && uv run research-mcp, чтобы запустить сервер через stdio.
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
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
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/404Simon/research-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server