research-mcp
Research MCP
用于学术研究的只读 MCP 服务器。让 LLM 代理能够搜索论文、查看元数据、追踪引用图谱、生成 BibTeX,并通过 FastMCP 工具读取开放获取 PDF 的全文。
环境要求
Python 3.13+
可访问公共 API 的互联网连接(无需 API 密钥)
工作原理
API | 作用 |
Semantic Scholar | 主要搜索、元数据、TLDR、引用图谱。优先尝试。 |
OpenAlex | 当 Semantic Scholar 被限流时自动回退,同时用于开放获取 PDF 解析。 |
arXiv | 专用预印本搜索( |
DBLP | 会议论文集调查( |
Crossref | BibTeX 生成( |
PyMuPDF | PDF 文本提取。 |
Semantic Scholar 在无密钥使用时会被限流,因此每个请求都会以指数退避方式重试(遵循 Retry-After),然后才回退到 OpenAlex。结果始终会告知代理使用了哪个数据源。arXiv API 强制约 3 秒的间隔规则,服务器会遵守;DBLP 在快速连续请求时会重置连接,因此会议流页面也以 3 秒的礼貌延迟获取。
缓存
所有易失效的 API 响应、搜索结果、会议论文集语料库和 PDF 都缓存在 ~/.cache/research-mcp/ 下的磁盘中(api/ 用于 JSON 响应,pdf/ 用于下载的 PDF):
新鲜的缓存命中会即时返回——重复查询不会访问网络。
会议语料库(从 DBLP 页面组装)整体缓存,因此即使 DBLP 丢失某个页面,重新调查会议议程也能即时完成。
过期回退:如果 API 宕机或限流,仍会提供最后一次缓存的响应,因此代理仍能获得答案。
缓存 TTL:arXiv 和 BibTeX 为 7 天(数据稳定),搜索/元数据和 DBLP 为 24 小时。可通过
RESEARCH_MCP_CACHE_DIR覆盖缓存位置。
配置
在编码代理的 MCP 配置中注册服务器。例如,在 Opencode 的 opencode.json 中:
{
"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" 搜索 arXiv 预印本 API,是按确切名称查找特定近期论文的推荐方式,例如 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 或 arxiv.org/abs/... URL)或 OpenAlex ID。
参数 | 类型 | 描述 |
|
| DOI、arXiv ID 或 OpenAlex ID |
返回标题、作者、会议、年份、摘要、TLDR、引用次数、DOI 和开放获取 PDF:
get_citation_graph
向前或向后追踪论文的引用,进行滚雪球式搜索。
参数 | 类型 | 描述 |
|
| DOI、OpenAlex ID( |
|
|
|
|
| 最大结果数(默认 20) |
get_bibtex
为 DOI 生成 BibTeX 条目。使用 Crossref 的原生转换;回退到从 OpenAlex 元数据本地生成(处理 Crossref 不认识的 arXiv DOI)。
参数 | 类型 | 描述 |
|
| 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 URL。PDF 缓存在本地(~/.cache/research-mcp/pdf/)。
参数 | 类型 | 描述 |
|
| DOI、arXiv ID 或 |
|
| 截断返回文本(默认 50000) |
|
| 在本地缓存 PDF(默认 |
返回提取的文本、页数、来源 URL 和缓存路径。如果未找到开放获取副本,代理会收到明确消息,告知其搜索 OA 副本或直接传入 PDF URL。
文件结构
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 启动服务器。
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