关于 Scholar MCP
Scholar MCP 是面向 Agent 的学术研究服务,将联邦论文搜索与引文探索、论文阅读和本地持久化文库结合起来。其工具把论文发现与收藏、笔记、PDF 和文库导出串联起来。
主要功能
- 01联邦学术论文搜索
- 02引文遍历与论文图谱
- 03读取论文文本、表格和图
- 04持久化 SQLite 论文库
- 05PDF 下载与文库连接器
适用场景
- 01根据研究问题查找论文
- 02追踪引文和相关研究
- 03在本地保存论文、笔记和 PDF
- 04将文集导出到 Obsidian 或 Zotero
MCP 相关
通过 stdio 或 Streamable HTTP 向 MCP 客户端提供类型化研究工具和状态资源。核心与研究配置涵盖检索、论文查看、引文图谱和文库操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx scholar-mcpSCHOLAR_DATA_DIRSCHOLAR_MCP_EXTENSIONSS2_API_KEY密钥OPENALEX_API_KEY密钥CORE_API_KEY密钥SCOPUS_API_KEY密钥DASHSCOPE_API_KEY密钥DASHSCOPE_HTTP_BASE_URLAlibaba workspace API host or /api/v1 base URL.SCHOLAR_RERANK_MODELAlibaba or custom reranker model name.SCHOLAR_RERANK_URLFull custom rerank endpoint; overrides Alibaba routing.SCHOLAR_RERANK_API_KEY密钥EXA_API_KEY密钥ZOTERO_API_KEY密钥ZOTERO_LIBRARY_IDNOTION_API_KEY密钥NOTION_DATA_SOURCE_ID本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
6收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sort | enum | 否 | 最终排序的强制顺序。通常使用 relevance;citations 和 date 会替代重排器的排序结果。relevance | citations | date |
| year | string | 否 | 按年份或年份范围筛选(例如,"2023"、"2020-2024") |
| debug | boolean | 否 | 包含每个来源的延迟、来源信息和内部排名诊断信息。 |
| limit | integer | 否 | 返回结果的最大数量(1-100,默认 10) |
| query | string | 是 | 描述要查找的内容。标题、独特短语和自然语言问题均可使用。 |
| venue | string | 否 | 按发表场所筛选(例如,"NeurIPS"、"Nature") |
| intent | enum | 否 | 用于重排和扩展查询的软相关性侧重点。通常使用 balanced;其他选项包括 foundational、recent、survey、method 和 dataset。balanced | foundational | recent | survey | method | dataset |
| paper_types | string | 否 | 逗号分隔的类型(例如,"JournalArticle,Conference,Review,Book,Dataset")。默认:所有类型。 |
| min_citations | integer | 否 | 最低引用次数筛选(默认 0) |
| fields_of_study | string | 否 | 逗号分隔的研究领域(例如,"Computer Science,Mathematics") |
| open_access_only | boolean | 否 | 仅返回可免费获取 PDF 的论文 |
详细介绍
寻找论文。追踪证据。构建领域。
Scholar MCP 可根据自然语言问题查找论文、追踪引用和相关研究,并打开原文。您可以将选定的论文和笔记保存在本地文献库中,让研究成果在不同会话间延续。
快速演示

一次连贯的 Agent 工作流:search_papers → build_paper_graph → paper_info + read_paper → paper_library → 文献库连接器。
工作原理
Agent 通过 stdio 或 Streamable HTTP 调用类型化 MCP 工具。Scholar 返回简洁文本和结构化数据,同时由持久化的 SQLite 文献库支持 FTS5 搜索、PDF 附件、JSONL 快照,以及 Obsidian、Zotero 和 Notion 连接器。
快速开始
Claude Code:
claude mcp add scholar -- uvx --python 3.12 \
--find-links https://github.com/Liyux3/scholar-mcp/releases/download/v0.8.5/wheel-index.html \
--from 'scholar-mcp[rerank]==0.8.5' scholar-mcp
Claude Desktop 或任何 stdio MCP 客户端:
{
"mcpServers": {
"scholar": {
"command": "uvx",
"args": [
"--python", "3.12",
"--find-links", "https://github.com/Liyux3/scholar-mcp/releases/download/v0.8.5/wheel-index.html",
"--from", "scholar-mcp[rerank]==0.8.5", "scholar-mcp"
]
}
}
}
直接运行的服务提供精简核心配置。请安装 uv;它会自动准备 Python 3.12 和 CPU 重排器。可选的源密钥可解锁更广的覆盖范围和更高的吞吐量。macOS 桌面应用包内含 Python 和依赖项;便携式启动器也能在未安装 uv 的机器上运行。
仓库还附带一个研究插件,包含引文图谱、本地论文库和 Deep Research 技能:
# Codex
codex plugin marketplace add Liyux3/scholar-mcp
codex plugin add scholar-mcp@scholar-mcp
# Claude Code
claude plugin marketplace add Liyux3/scholar-mcp
claude plugin install scholar-mcp@scholar-mcp
同一插件目录遵循 Agent Plugins 标准,可用于 Cursor、Pi 及兼容的运行环境。OpenCode 可以将 uvx scholar-mcp 作为本地 MCP 启动;Pi 可以使用 pi-mcp-adapter。
发布制品还包括 PyPI 包、多架构 GHCR 镜像和 macOS MCPB 包。请参阅完整的分发矩阵。
工具
| 配置 | 工具 | 职责 |
|---|---|---|
| 核心 | search_papers | 多源检索、筛选、重排和引文发现 |
| 核心 | paper_info | 通过一次选择性调用获取论文详情、引文和参考文献 |
| 核心 | recommend_papers | 通过语义关联和引文关联查找相关研究 |
| 核心 | search_authors | 作者档案、所属机构、论文数量和 h 指数 |
| 核心 | read_paper | 阅读论文正文、表格和选定图表;默认读取第 1-10 页 |
| 核心 | download_paper | 保存 PDF 并将其编入文集索引 |
| 研究 | build_paper_graph | 有界引文图谱,包含 PageRank、桥接关系、节点、边和 Mermaid |
| 研究 | paper_library | 文集、全文搜索、笔记、标签、PDF 和 Markdown 知识库导出 |
scholar://status 会报告数据源的可用性和实际使用的重排器,不会占用工具界面。工具响应保留简洁的 YAML 文本,同时也提供结构化 MCP 数据。
捆绑的 Deep Research 技能可将搜索、论文检查、图谱遍历和选定的文库写入操作整合为一份动态领域图谱。
检索
| 渠道 | 数据源 | 查询形式和作用 |
|---|---|---|
| 语义 | OpenAlex semantic、arxiv.gg、可选的 Exa | 完整的自然语言问题 |
| 全文 | Semantic Scholar 摘要片段搜索 | 从开放获取论文中匹配段落 |
| 广泛元数据 | OpenAlex、Semantic Scholar、Crossref、可选的 Scopus | 身份信息、覆盖范围、引文和筛选条件 |
| 预印本与会议 | arXiv、OpenReview | 最新研究和会议记录 |
| 生物医学 | PubMed、Europe PMC | 医学、生物学和全文仓库 |
| 领域与仓库 | DBLP、INSPIRE-HEP、DOAJ、CORE、OpenAIRE、HAL | 计算机科学、物理学、开放期刊和仓库 |
| 网络回退 | Google Scholar | HTTP 搜索,支持可选的自动会话恢复 |
关键词 API 会收到经过测算的、针对特定数据源的查询预算。语义端点会保留原始问题。每个数据源都会独立为同一个规范化证据池提供内容。 结果会根据 DOI、arXiv、Semantic Scholar、OpenAlex、PubMed 和 OpenReview 标识进行规范化。重复记录会补充互补元数据和独立来源证据,而不是重复显示多次。
配置后,DashScope qwen3-rerank 会作为主要重排器。安装 rerank extra,以启用 FlashRank 本地回退:uvx --from 'scholar-mcp[rerank]' scholar-mcp。容器和 MCPB 包含此 extra;本地模型会在首次使用时下载,并保存在应用数据目录中。搜索会先对初始匹配结果排序,再从最相关的论文中追踪关联,最后对合并后的结果重新排序。元数据补全与来源检索并行进行;对于大型候选池,会分批评分,并遵守模型服务的文档数和令牌限制。
使用自己的重排器
对于 Alibaba 工作区或其他区域,请将 DASHSCOPE_HTTP_BASE_URL 设置为控制台中的 API Host(带 https://),或其 /api/v1 基址。使用该区域的 DASHSCOPE_API_KEY。例如:
DASHSCOPE_HTTP_BASE_URL=https://<workspace-id>.cn-beijing.maas.aliyuncs.com/api/v1
SCHOLAR_RERANK_MODEL=qwen3-rerank
默认值仍为 qwen3-rerank。SCHOLAR_RERANK_MODEL 还可选择 qwen3.7-text-rerank、gte-rerank-v2 或 qwen3-vl-rerank 的文本输入,具体取决于工作区是否提供这些模型。Scholar 会使用相应的 Alibaba 请求和响应格式。未设置基址的现有安装仍使用北京共享端点。Alibaba 建议使用工作区专用端点,并表示共享域名在 2026 年 9 月 30 日之后将不再获得新功能。API 密钥和模型可用性因区域而异。
对于其他提供商或可自托管模型,请将 SCHOLAR_RERANK_URL 设置为完整的重排端点,将 SCHOLAR_RERANK_MODEL 设置为其模型名称,并按需设置 SCHOLAR_RERANK_API_KEY。此显式端点的优先级高于 Alibaba 配置,且仅使用其自身凭据。兼容的端点使用 Cohere 风格的契约:
Request: query, documents, top_n, model
Response: results: [{index, relevance_score}]
此外,也支持 Alibaba 原生 /api/v1/services/rerank/text-rerank/text-rerank 端点,该端点使用 input/parameters 请求和 output.results 响应。两种格式共用相同的分批处理、分数验证和本地回退机制。无需安装提供商 SDK。
分数必须是有限值且位于 [0, 1] 范围内,并且每个查询与文档的分数都必须可跨批次比较。原始 logits 需要在服务后端进行特定于模型的归一化。更换模型可能会改变引文和时效性排序所占的权重。自定义端点会取代 DashScope,且只回退到本地模型。将 SCHOLAR_RERANK_BATCH_SIZE 设置为每个请求可处理的文档数(默认值为 500)。较大的候选池会分批评分,不会在达到此上限时丢弃。使用 scholar://status 或 debug=true 查看实际使用的提供商/模型及任何回退原因;搜索成功本身并不能证明云端重排器已成功运行。
常规响应以论文为主,并会在可用性影响搜索时附上简短警告。debug=true 会添加 _meta,其中包含来源覆盖情况、实际使用的重排器、各来源的结果数、延迟、来源信息和详细错误。并行搜索的基础时限为 30 秒,可通过 SCHOLAR_SOURCE_BUDGET_S 配置。Google Scholar 分页最多可将时限延长至 120 秒,以保留已完成的多页结果。
Google Scholar 会话恢复
安装 Chrome、Edge 或 Chromium 以及 ffmpeg 后,在快速入门配置中选择 `scholar-mcp[google,rerank]==0.8.5`,即可启用自动验证恢复。短暂启动的浏览器会建立会话,之后的搜索和分页由普通 HTTP 处理。它使用全新的浏览器配置文件,绝不会使用你的个人浏览器配置文件;音频识别使用在线服务,而非本地模型。自动模式会先尝试无头模式;在 macOS 上,如果验证挑战未通过,可以重试使用原生浏览器引擎,启动时不显示窗口,页面也保持隐藏。对于相应路由,它会重用上次成功使用的静默模式。页面就绪后,恢复流程便会继续,不会固定等待数秒。会话会私密存储在 <data>/sessions/ 下,并与配置的代理绑定。冷启动搜索最多可能等待 150 秒,以供有时限的恢复工作进程完成后续搜索。热会话使用正常的时间预算。设置 SCHOLAR_GOOGLE_RECOVERY=off 可禁用恢复,设置为 headless 可强制严格使用无头模式,或设置为 headed 以明确允许显示验证窗口。SCHOLAR_GOOGLE_BROWSER 用于指定标准安装位置之外的浏览器可执行文件。服务启动时不会下载浏览器。如果分页中断,已完成的页面仍可使用,响应也会报告部分覆盖情况。恢复失败后会进入退避状态,同时保留上次验证成功的会话。
检索质量测量
在冻结的匹配 LitSearch 测试中,与 Exa research-paper search 相比,Scholar 的 前五项查询命中率高出 10 个百分点,前二十项高出 6 个百分点。
| 系统 | Hit@5 | Hit@10 | Hit@20 | MRR |
|---|---|---|---|---|
| Scholar | 0.62 | 0.68 | 0.70 | 0.442 |
Exa research paper | 0.52 | 0.58 | 0.64 | 0.435 |
BM25 title + abstract | 0.46 | 0.46 | 0.56 | 0.335 |
Scholar 找到了 Exa 未命中的 9 个前五项结果;Exa 找到了 Scholar 未命中的 4 个。
基准测试方案
Hit@k 衡量前 k 个结果中至少包含一篇真实标注论文的查询所占比例。Recall@k 则衡量每个查询找回的相关论文占全部相关论文的比例。MRR 是首个匹配项倒数排名的平均值,未命中时记为零。冻结的摘要沿用旧版字段名 R@k 表示这些查询命中率。
此对比使用相同的前 50 个 LitSearch inline-ACL 查询、真实标注标题、标题匹配器和前 20 项截断范围。Exa 使用类别 research paper 运行。Scholar 使用标准检索流程,并通过 Qwen 进行重排。BM25 遵循 LitSearch 官方的 title+abstract 实现:转为小写并分词、移除英语停用词、进行 Porter 词干提取,并在包含 64K 篇论文的语料库上使用 BM25Okapi。Scholar/Exa 测试于 2026 年 5 月 12 日收集;BM25 于 2026 年 8 月 25 日复现。冻结的摘要位于 docs/benchmarks/litsearch-inline-acl-50.json,另有 BM25 原始结果及其哈希清单。
引用图谱与论文库
此图由本地实时收藏集生成,可展示研究领域的基础论文、桥接论文,以及推动领域发展的论文。稳定的标识符和并行引用遍历能在图谱不断扩展时保持其连通性。
论文库使用一个持久化 SQLite 权威数据源,通过 WAL 事务和 FTS5 搜索。现有 JSONL 收藏集会自动迁移,并继续作为兼容性快照提供。稳定标识符、笔记、标签、PDF 路径、连接器 ID 和同步修订版本都会关联到同一条规范记录。
默认数据布局:
~/.scholar-mcp/
├── papers/ persistent PDFs
├── kb/
│ ├── library.sqlite3 authority + FTS5 + sync state
│ └── *.jsonl compatibility snapshots
└── vault/ Markdown projections and wikilinks
文献库连接器
# No login: write directly into an Obsidian vault
scholar-mcp library export obsidian --collection rag --path /path/to/vault
# Dry-run by default; add --apply for external writes
scholar-mcp library sync zotero --collection rag
scholar-mcp library publish notion --collection rag
Obsidian 是实时 Markdown 投影。Zotero 管理书目条目、文集、标签和笔记。Notion 接收单向的待读列表视图。外部连接器会在 SQLite 中保存其 ID、版本和内容哈希,因此不会重复发布未更改的论文。
论文访问
read_paper 使用临时 PDF,默认读取第 1 至 10 页,通常足以读到 AI 会议论文的结论。它会返回带页码的 Markdown、在表格几何信息可靠时返回结构化表格,并为图表和视觉表格回退方案提供说明文字选择器。传入 visual="Figure 3" 或其他返回的选择器,即可连同文本一起获取一张聚焦的页面裁剪图。传入 pages="11-20" 可继续读取参考文献或附录。提取完成后会删除 PDF。download_paper 会将内容流式写入暂存文件,以原子方式发布经过验证的 PDF,复用有效的本地副本,并将其元数据编入所选文集。
通用解析链涵盖:
- 原生开放获取记录和 arXiv、Europe PMC 等规范档案
- 已注册的存储库解析器:CORE、OpenAIRE、HAL、Zenodo 和 DOAJ
- bioRxiv、medRxiv、SSRN、ChemRxiv 等预印本服务
- Unpaywall 和可选的机构代理
scholar-mcp sources 会打印根据注册表生成的能力矩阵。添加 --check 可测试已配置的搜索提供方;添加 --check --source arxiv --query "retrieval augmented generation" 可检查单个提供方。arXiv 的 Atom API 不可用时,会回退到其自身的 HTTPS 搜索。Zenodo 参与 PDF 解析,但不会纳入默认发现,因为其范围广泛的出版记录带来的候选噪声多于检索价值。
图书馆代理访问
对于付费墙论文,download_paper 可以通过大学图书馆的 EZproxy 登录获取论文。它会在 Unpaywall 之后、可选的 Sci-Hub 步骤之前运行,且只用于你请求的单篇论文。Scholar 不会索要或存储密码,而是复用你登录后从自己的浏览器导出的会话 Cookie。
- 将
LIBRARY_PROXY_PREFIX设置为图书馆代理登录前缀,即论文地址之前的部分,例如https://proxy.library.example.edu/login?url=。可从任何代理链接或图书馆的书签脚本中复制;这里不假设任何特定机构。 - 在 Edge 或 Chrome 中登录图书馆代理,并打开任意代理页面。
- 使用支持 cookies.txt 扩展程序的方式,以 Netscape cookies.txt 格式导出代理域名的 Cookie(例如 Get cookies.txt LOCALLY;Edge 可以安装 Chrome 网上应用店中的扩展程序)。将文件保存在私密位置,并将
LIBRARY_PROXY_COOKIES设置为该文件的路径。 - 重启 MCP 客户端,使其读取新的环境变量。
图书馆会话的有效期较短,由图书馆控制,因此导出的文件会在数小时后或图书馆结束会话时失效。当代理返回登录页面时,下载消息会提示会话已过期;请重新登录并导出新文件。该文件是有效的会话凭据,请勿将其放入 Git 或共享文件夹。系统只会读取属于代理域名的 Cookie;文件中的其他 Cookie 都会被忽略。下载失败时,消息会附带一个代理链接,你可以在已登录的浏览器中打开该链接。
如果终端使用 HTTP 代理,请确保图书馆请求与已登录的浏览器使用相同的网络路由。如需直接访问图书馆,请将其代理主机名和子域名添加到 NO_PROXY。
配置
所有凭据均为可选项,并保留在 MCP 进程环境中。
| 变量 | 用途 |
|---|---|
SCHOLAR_DATA_DIR | 共享数据根目录;默认值为 ~/.scholar-mcp |
SCHOLAR_KB_DIR | SQLite 文献库和 JSONL 快照目录 |
SCHOLAR_OBSIDIAN_VAULT | Obsidian 投影根目录;无需身份验证 |
S2_API_KEY / S2_API_KEYS | Semantic Scholar 搜索、摘要片段、图谱和速率限制 |
OPENALEX_API_KEY / OPENALEX_API_KEYS | OpenAlex 搜索、语义搜索和图谱调用 |
OPENALEX_EMAIL | OpenAlex 礼遇池和 Unpaywall |
DASHSCOPE_API_KEY | Qwen 重排序器 |
DASHSCOPE_HTTP_BASE_URL | Alibaba 工作区 API Host 或 /api/v1 基础地址;默认为北京共享端点 |
SCHOLAR_RERANK_MODEL | Alibaba 模型(默认值为 qwen3-rerank),或自定义端点提供的模型 |
SCHOLAR_RERANK_URL、SCHOLAR_RERANK_API_KEY | 完整的自定义重排序端点及其独立凭据;优先于 Alibaba 路由 |
SCHOLAR_RERANK_TIMEOUT | 远程重排序请求超时时间,包括 Alibaba;默认值为 120 秒 |
SCHOLAR_RERANK_BATCH_SIZE | 自定义重排序器每次请求可处理的文档数;默认值为 500 |
SCHOLAR_GOOGLE_PROXY | 专用 Google Scholar 代理;其他来源沿用现有路由 |
SCOPUS_API_KEY | 可选的 Scopus 元数据来源 |
CORE_API_KEY | 可选的 CORE 存储库来源 |
EXA_API_KEY | 可选的 Exa 研究论文来源 |
SCHOLAR_SOURCE_BUDGET_S | 每轮来源扇出预算;默认值为 30 秒 |
SCHOLAR_DOWNLOAD_DIR | 持久化 PDF 目录;默认值为 <data>/papers |
LIBRARY_PROXY_PREFIX、LIBRARY_PROXY_COOKIES | 可选的图书馆代理登录前缀,以及从已登录浏览器导出的 cookies.txt;不假设任何特定机构。参见图书馆代理访问 |
LIBRARY_PROXY_BASE、LIBRARY_PROXY_COOKIE | 同一设置的旧格式:代理 URL 和原始 Cookie 标头。Cookie 文件回退路径:<data>/library_cookie.txt |
SCHOLAR_MCP_EXTENSIONS | 使用 research 启用图谱和论文库工具 |
ZOTERO_API_KEY、ZOTERO_LIBRARY_ID | Zotero Web API 或经授权的本地 API 连接器 |
ZOTERO_LIBRARY_TYPE、ZOTERO_API_BASE | 可选的 Zotero 文献库类型和端点覆盖值 |
NOTION_API_KEY、NOTION_DATA_SOURCE_ID | Notion 单向发布器 |
返回给模型的错误会隐藏请求 URL 和凭据。 OpenReview 公开投稿可在无需账号或密码的情况下搜索。
开发
git clone https://github.com/Liyux3/scholar-mcp.git
cd scholar-mcp
uv sync --extra dev
uv run pytest
默认运行单元测试。使用 uv run pytest -m integration 单独运行实时 API 测试。
连接器和功能贡献请遵循 CONTRIBUTING.md。请通过 SECURITY.md 中的私密流程报告安全问题;引文元数据见 CITATION.cff。
本地和 Docker 客户端默认使用 stdio。设置 SCHOLAR_MCP_TRANSPORT=http 可启用 Streamable HTTP;默认端点为 /mcp。
许可证
Apache License 2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。