关于 Scientific Paper Harvester Mcp Server
Scientific Paper Harvester MCP Server 为研究者及使用 LLM 处理文献的用户提供学术论文搜索、获取和全文提取能力,覆盖六个学术来源。它同时提供 CLI,并支持引用检索、元数据查询和 DOI 解析。
主要功能
- 01搜索论文标题、摘要、作者或全文
- 02获取分类下的最新论文
- 03提取论文全文及元数据
- 04按引用量查找 OpenAlex 论文
- 05浏览各来源分类与概念
- 06通过 CLI 使用
适用场景
- 01跨来源查找特定主题或作者的论文
- 02获取某学科的最新研究
- 03提取论文全文供研究分析
- 04按日期筛选高引用论文
MCP 相关
该 MCP 服务向客户端公开论文分类浏览、最新论文获取、论文搜索、全文提取及 OpenAlex 高引用论文检索等工具。支持 arXiv、OpenAlex、PMC、Europe PMC、bioRxiv/medRxiv 和 CORE。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| source | enum | 是 | 要从中获取类别的数据源: • 'arxiv' - arXiv.org 预印本类别(物理学、计算机科学、数学等) • 'openalex' - OpenAlex 研究概念(AI、机器学习、量子计算等) • 'pmc' - PubMed Central 生物医学类别(医学、生物学、神经科学等) • 'europepmc' - Europe PMC 生命科学类别(与 PMC 类似,但侧重欧洲) • 'biorxiv' - bioRxiv/medRxiv 预印本类别(生物学、医学预印本) • 'core' - CORE 学术论文库类别(多学科) 使用提示:始终先调用此工具,了解可用类别,然后再使用 fetch_latest。arxiv | openalex | pmc | europepmc | biorxiv | core |
详细介绍
Scientific Paper Harvester MCP 服务
一个功能全面的 Model Context Protocol (MCP) 服务,让大模型能够实时访问来自 6 大主要学术来源的科学论文:arXiv、OpenAlex、PMC (PubMed Central)、Europe PMC、bioRxiv/medRxiv 和 CORE。
🚀 功能特性
全面的来源覆盖
- arXiv:计算机科学、物理学、数学预印本与论文
- OpenAlex:带引用数据的开放学术论文目录
- PMC:PubMed Central 生物医学与生命科学文献
- Europe PMC:欧洲生命科学文献数据库
- bioRxiv/medRxiv:生物学与医学预印本服务
- CORE:全球最大的论文合集
论文抓取
- 论文获取:按概念从任意来源获取最新论文
- 论文搜索:在 4 大主要来源中按标题、摘要、作者或全文搜索论文
- 全文提取:通过智能回退策略提取完整文本内容
- 引用分析:查找 OpenAlex 中自特定日期以来被引最多的论文
- 论文查询:按 ID 检索特定论文的完整元数据
- 分类发现:浏览所有来源提供的分类
- 智能限流:按来源限流,规范使用 API
- DOI 解析:高级 DOI 解析器,回退顺序为 Unpaywall → Crossref → Semantic Scholar
- 双接口:同时支持 MCP 协议和命令行访问
- TypeScript:使用 ESM 模块,提供完整类型安全
📊 覆盖统计
- 来源总数:6 个学术数据库
- 分类覆盖:涵盖所有学科的 100+ 个分类
- 论文访问:2 亿+ 篇论文,支持智能文本提取
- 文本提取成功率:支持的论文类型 >90%
- 响应时间:论文获取平均 <15 秒
🛠 安装
npm install
npm run build
📋 MCP 客户端配置
要将此服务与 MCP 客户端(如 Claude Desktop)配合使用,请将以下内容添加到你的 MCP 客户端配置中:
对于已发布包(可在 npm 上获取):
方式 1:使用 npx(推荐用于 Claude 等 AI 工具)
{
"mcpServers": {
"scientific-papers": {
"command": "npx",
"args": [
"-y",
"@futurelab-studio/latest-science-mcp@latest"
]
}
}
}
方式 2:全局安装
npm install -g @futurelab-studio/latest-science-mcp
然后配置:
{
"mcpServers": {
"scientific-papers": {
"command": "latest-science-mcp"
}
}
}
📖 使用方法
命令行接口
列出分类
# List arXiv categories
node dist/cli.js list-categories --source=arxiv
# List OpenAlex concepts
node dist/cli.js list-categories --source=openalex
# List PMC biomedical categories
node dist/cli.js list-categories --source=pmc
# List Europe PMC life science categories
node dist/cli.js list-categories --source=europepmc
# List bioRxiv/medRxiv categories (includes both servers)
node dist/cli.js list-categories --source=biorxiv
# List CORE academic categories
node dist/cli.js list-categories --source=core
获取最新论文
# Get latest AI papers from arXiv
node dist/cli.js fetch-latest --source=arxiv --category=cs.AI --count=10
# Get latest biology papers from bioRxiv
node dist/cli.js fetch-latest --source=biorxiv --category="biorxiv:biology" --count=5
# Get latest immunology papers from PMC
node dist/cli.js fetch-latest --source=pmc --category=immunology --count=3
# Get latest papers from CORE by subject
node dist/cli.js fetch-latest --source=core --category=computer_science --count=5
# Search by concept name (OpenAlex)
node dist/cli.js fetch-latest --source=openalex --category="machine learning" --count=3
获取被引最多的论文
# Get top 20 cited papers in machine learning since 2024
node dist/cli.js fetch-top-cited --concept="machine learning" --since=2024-01-01 --count=20
# Get top cited papers by concept ID
node dist/cli.js fetch-top-cited --concept=C41008148 --since=2023-06-01 --count=10
搜索论文
# Search by keywords across all fields
node dist/cli.js search-papers --source=arxiv --query="machine learning" --count=10
# Search by paper title
node dist/cli.js search-papers --source=openalex --query="neural networks" --field=title --count=5
# Search by author name
node dist/cli.js search-papers --source=europepmc --query="John Smith" --field=author --count=10
# Search full-text content sorted by citations
node dist/cli.js search-papers --source=core --query="climate change" --field=fulltext --sortBy=citations --count=20
获取特定论文内容
# Get arXiv paper by ID
node dist/cli.js fetch-content --source=arxiv --id=2401.12345
# Get bioRxiv paper by DOI
node dist/cli.js fetch-content --source=biorxiv --id="10.1101/2021.01.01.425001"
# Get PMC paper by ID
node dist/cli.js fetch-content --source=pmc --id=PMC8245678
# Get CORE paper by ID
node dist/cli.js fetch-content --source=core --id=12345678
# Show text content with preview
node dist/cli.js fetch-content --source=arxiv --id=2401.12345 --show-text --text-preview=500
🔧 可用工具
list_categories
列出任意数据源中可用的分类/概念。
参数:
source:"arxiv"|"openalex"|"pmc"|"europepmc"|"biorxiv"|"core"
返回:
- 分类对象数组,包含
id、name以及可选的description
示例:
{
"name": "list_categories",
"arguments": {
"source": "biorxiv"
}
}
fetch_latest
从任意来源获取给定分类的最新论文,仅包含元数据(不提取文本)。
参数:
source:"arxiv"|"openalex"|"pmc"|"europepmc"|"biorxiv"|"core"category:分类 ID 或概念名称(因来源而异)count:要获取的论文数量(默认:50,最大:200)
按来源划分的分类示例:
- arXiv:
"cs.AI"、"physics.gen-ph"、"math.CO" - OpenAlex:
"artificial intelligence"、"machine learning"、"C41008148" - PMC:
"immunology"、"genetics"、"neuroscience" - Europe PMC:
"biology"、"medicine"、"cancer" - bioRxiv/medRxiv:
"biorxiv:neuroscience"、"medrxiv:psychiatry" - CORE:
"computer_science"、"mathematics"、"physics"
返回:
- 论文对象数组,包含元数据(id、title、authors、date、pdf_url)
- text 字段:空字符串(
text: "")- 如需全文请使用fetch_content
fetch_top_cited
获取 OpenAlex 中给定概念自特定日期以来被引最多的论文。
参数:
concept:概念名称或 OpenAlex 概念 IDsince:开始日期,格式为 YYYY-MM-DDcount:要获取的论文数量(默认:50,最大:200)
search_papers
在多个学术来源中搜索论文,支持按字段搜索和排序选项。
参数:
source:"arxiv"|"openalex"|"europepmc"|"core"query:搜索查询字符串(最多 1500 个字符)field:"all"|"title"|"abstract"|"author"|"fulltext"(默认:"all")count:返回的结果数量(默认:50,最多:200)sortBy:"relevance"|"date"|"citations"(默认:"relevance")
各来源的搜索能力:
- arXiv:标题、摘要、作者及支持布尔运算符的通用搜索
- OpenAlex:支持相关性评分和引用排序的高级搜索
- Europe PMC:带 MeSH 词条和全文搜索的生物医学文献
- CORE:使用高级查询语言的全球学术论文
示例查询:
- 关键词:
"machine learning"、"climate change" - 短语:
"artificial intelligence"(使用引号进行精确短语匹配) - 布尔运算:
"deep learning AND neural networks"(arXiv 支持此功能) - 作者:
"John Smith"、"Smith J"
返回:
- 包含元数据的论文对象数组(id、title、authors、date、pdf_url)
- Text 字段:空字符串(
text: "")——使用fetch_content获取全文
fetch_content
根据 ID 获取特定论文的完整元数据和文本内容,并支持完整的文本提取。
参数:
source:6 个受支持来源中的任意一个id:论文 ID(格式因来源而异)
各来源的 ID 格式:
- arXiv:
"2401.12345"、"cs/0601001"、"1234.5678v2" - OpenAlex:
"W2741809807"或数字2741809807 - PMC:
"PMC8245678"或"12345678" - Europe PMC:
"PMC8245678"、"12345678"或 DOI - bioRxiv/medRxiv:
"10.1101/2021.01.01.425001"或"2021.01.01.425001" - CORE:形如
"12345678"的数字 ID
📄 论文元数据格式
所有工具返回的论文对象均具有以下结构:
{
id: string; // Paper ID
title: string; // Paper title
authors: string[]; // List of author names
date: string; // Publication date (ISO format)
pdf_url?: string; // PDF URL (if available)
text: string; // Extracted full text content
textTruncated?: boolean; // Warning: text was truncated due to size limits
textExtractionFailed?: boolean; // Warning: text extraction failed
}
🧠 高级文本提取
多来源策略
每个来源都有专门的文本提取方法:
- arXiv:从
arxiv.org/html获取 HTML,并以ar5iv.labs.arxiv.org作为回退 - OpenAlex:HTML 来源,并带有 DOI 解析器回退链
- PMC:E-utilities API,配合 XML/HTML 提取
- Europe PMC:REST API,采用多种 URL 策略
- bioRxiv/medRxiv:直接 HTML 提取,并带有摘要回退
- CORE:PDF/HTML,并带有来源 URL 回退
DOI 解析链
高级 DOI 解析器,支持多种回退策略:
- Unpaywall → 免费全文来源
- Crossref → 出版商元数据和链接
- Semantic Scholar Academic Graph → 替代访问途径
性能与可靠性
- 文本提取成功率:对可获取 HTML 的论文超过 90%
- 优雅降级:即使文本提取失败,也始终返回元数据
- 大小管理:6MB 文本限制,并带有智能截断
- 缓存:DOI 解析使用 24 小时 LRU 缓存
🔄 速率限制
按来源进行速率限制,保持对 API 的合理使用:
- arXiv:每分钟 5 次请求
- OpenAlex:每分钟 10 次请求
- PMC:每秒 3 次请求
- Europe PMC:每分钟 10 次请求
- bioRxiv/medRxiv:每分钟 5 次请求
- CORE:每分钟 10 次请求(公开),使用 API 密钥可提高
CORE API 配置
如需增强 CORE 访问,请设置环境变量:
export CORE_API_KEY="your-api-key"
🧪 测试
运行测试套件
# Run all tests
npm test
# Run integration tests
npm run test -- tests/integration
# Run end-to-end workflow tests
npm run test -- tests/e2e
# Run performance benchmarks
npm run test -- tests/integration/performance.test.ts
测试覆盖
- 集成测试:所有 6 个来源均经过端到端测试
- 性能测试:响应时间和吞吐量基准测试
- 工作流测试:跨多个来源的真实研究场景
- 单元测试:核心组件和边缘情况
🏗 架构
模块化驱动系统
- 来源之间清晰分离
- 所有驱动采用一致的接口
- 针对每个来源的专用文本提取
高级功能
- DOI 解析:多提供商回退链
- 速率限制:按来源使用令牌桶算法
- 文本处理:HTML 清理与规范化
- 错误处理:结构化响应,附带可操作的建议
- 缓存:为 DOI 解析提供智能缓存
技术栈
- TypeScript + ESM:现代 JavaScript,具备完整的类型安全
- 模块化设计:关注点清晰分离
- 优雅降级:即使部分失败也始终可用
- 响应大小管理:自动截断与警告
📊 来源对比
| 来源 | 论文数 | 学科 | 全文 | 引用数据 | 预印本 | 搜索 |
|---|---|---|---|---|---|---|
| arXiv | 2.3M+ | STEM | HTML ✓ | 有限 | ✓ | ✓✓✓ |
| OpenAlex | 200M+ | 全部 | 不定 | ✓✓✓ | ✓ | ✓✓✓ |
| PMC | 7M+ | 生物医学 | XML/HTML ✓ | 有限 | ✗ | 有限 |
| Europe PMC | 40M+ | 生命科学 | HTML ✓ | 有限 | ✓ | ✓✓✓ |
| bioRxiv/medRxiv | 500K+ | 生物/医学 | HTML ✓ | 有限 | ✓✓✓ | 有限 |
| CORE | 200M+ | 全部 | PDF/HTML ✓ | 有限 | ✓ | ✓✓✓ |
🔧 开发
构建
npm run build
测试单个来源
# Test specific sources
node dist/cli.js list-categories --source=arxiv
node dist/cli.js fetch-latest --source=biorxiv --category="biorxiv:biology" --count=3
node dist/cli.js fetch-content --source=core --id=12345678
# Test search functionality
node dist/cli.js search-papers --source=arxiv --query="artificial intelligence" --count=5
node dist/cli.js search-papers --source=openalex --query="quantum computing" --field=title --count=3
性能测试
# Run performance benchmarks
npm run test -- tests/integration/performance.test.ts
# Test memory usage
npm run test -- --reporter=verbose
🚨 错误处理
为所有来源提供全面的错误处理:
- 无效的论文 ID,并提供格式建议
- 速率限制,附带重试等待信息
- API 超时与服务器错误
- 缺少身份验证(CORE API key)
- 网络连接问题
- 文本提取失败,并提供回退策略
🔍 故障排除
常见问题
- 速率限制:使用指数退避自动重试
- 缺失论文:对相同内容尝试替代来源
- 文本提取失败:回退到摘要或元数据
- CORE API 限制:设置
CORE_API_KEY环境变量
性能优化
- 使用适当的
count参数(较小值可获得更快响应) - 尽可能缓存结果
- 使用
fetch_latest进行发现,使用fetch_content进行详细阅读
📝 许可证
MIT
准备好探索世界科学知识了吗?从 6 个来源中的任意一个开始,发现跨越所有学术学科的论文! 🔬📚
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。