mcpField
S
Scientific Paper Harvester Mcp Server

Scientific Paper Harvester Mcp Server

本地服务
github.com/benedict2310数据与分析6363 周前更新

关于 Scientific Paper Harvester Mcp Server

Scientific Paper Harvester MCP Server 为研究者及使用 LLM 处理文献的用户提供学术论文搜索、获取和全文提取能力,覆盖六个学术来源。它同时提供 CLI,并支持引用检索、元数据查询和 DOI 解析。

主要功能

  1. 01搜索论文标题、摘要、作者或全文
  2. 02获取分类下的最新论文
  3. 03提取论文全文及元数据
  4. 04按引用量查找 OpenAlex 论文
  5. 05浏览各来源分类与概念
  6. 06通过 CLI 使用

适用场景

  1. 01跨来源查找特定主题或作者的论文
  2. 02获取某学科的最新研究
  3. 03提取论文全文供研究分析
  4. 04按日期筛选高引用论文

MCP 相关

该 MCP 服务向客户端公开论文分类浏览、最新论文获取、论文搜索、全文提取及 OpenAlex 高引用论文检索等工具。支持 arXiv、OpenAlex、PMC、Europe PMC、bioRxiv/medRxiv 和 CORE。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"Scientific-Papers-MCP": {
"command": "npx",
"args": [
"-y",
"@futurelab-studio/latest-science-mcp"
]
}
}
}
启动命令npx -y @futurelab-studio/latest-science-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@futurelab-studio/latest-science-mcp

工具

6

收录的工具列表 · 更新于 2 周前

参数类型必填说明
sourceenum是要从中获取类别的数据源: • '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 概念 ID
  • since:开始日期,格式为 YYYY-MM-DD
  • count:要获取的论文数量(默认: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 解析器,支持多种回退策略:

  1. Unpaywall → 免费全文来源
  2. Crossref → 出版商元数据和链接
  3. 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,具备完整的类型安全
  • 模块化设计:关注点清晰分离
  • 优雅降级:即使部分失败也始终可用
  • 响应大小管理:自动截断与警告

📊 来源对比

来源论文数学科全文引用数据预印本搜索
arXiv2.3M+STEMHTML ✓有限✓✓✓✓
OpenAlex200M+全部不定✓✓✓✓✓✓✓
PMC7M+生物医学XML/HTML ✓有限✗有限
Europe PMC40M+生命科学HTML ✓有限✓✓✓✓
bioRxiv/medRxiv500K+生物/医学HTML ✓有限✓✓✓有限
CORE200M+全部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 个来源中的任意一个开始,发现跨越所有学术学科的论文! 🔬📚

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。