论文搜索MCP(Node.js)
英语|中文
一个Node.js模型上下文协议(MCP)服务器,用于搜索和下载来自多个来源的学术论文,包括arXiv、Web of Science、PubMed、Google Scholar、Sci-Hub、ScienceDirect、Springer、Wiley、Scopus和 13个学术平台 总的来说。
基于原项目: 此项目基于 修改而来
✨ 主要特点
- 🌍 13个学术平台:arXiv、Web of Science、PubMed、谷歌学者、bioRxiv、medRxiv、语义学者、IACR ePrint、Sci-Hub、ScienceDirect、施普林格·自然、威利、Scopus
- 🔗 MCP协议集成:与Claude Desktop和其他人工智能助手无缝集成
- 📊 统一数据模型:所有平台的标准化纸张格式
- ⚡ 高性能搜索:具有智能速率限制的并发搜索
- 🛡️ 类型安全:完全支持TypeScript
- 🎯 学术论文优先:智能过滤,学术论文优先于书籍
- 🔄 智能错误处理:平台回退和自动重试机制
📚 支持的平台
| 平台 | 搜索 | 下载 | 全文 | 引文 | API密钥 | 特殊功能 |
|---|---|---|---|---|---|---|
| arXiv | ✅ | ✅ | ✅ | ❌ | ❌ | 物理/计算机科学预印本 |
| 科学引文索引 | ✅ | ❌ | ❌ | ✅ | ✅ 必填 | 高质量期刊索引 |
| PubMed | ✅ | ❌ | ❌ | ❌ | 🟡 可选 | 生物医学文献 |
| 谷歌学术 | ✅ | ❌ | ❌ | ✅ | ❌ | 全面的学术搜索 |
| 生物预印本 | ✅ | ✅ | ✅ | ❌ | ❌ | 生物学预印本 |
| medRxiv | ✅ | ✅ | ✅ | ❌ | ❌ | 医学预印本 |
| 语义学者 | ✅ | ✅ | ❌ | ✅ | 🟡 可选 | AI语义搜索 |
| IACR电子打印 | ✅ | ✅ | ✅ | ❌ | ❌ | 密码学论文 |
| 科学中心 | ✅ | ✅ | ❌ | ❌ | ❌ | 通过DOI实现通用纸张访问 |
| 科学指引 | ✅ | ❌ | ❌ | ✅ | ✅ 必需 | 爱思唯尔全文数据库 |
| 施普林格·自然 | ✅ | ✅\* | ❌ | ❌ | ✅ 必需 | 双重API:Meta v2和OpenAccess |
| 威利 | ✅ | ✅ | ❌ | ❌ | ✅ 必需 | 文本和数据挖掘API |
| 垃圾 | ✅ | ❌ | ❌ | ✅ | ✅ 必需 | 最大的引文数据库 |
✅ 支持|❌ 不支持|🟡 可选|✅\* 仅开放访问
🚀 快速开始
系统要求
- Node.js>=18.0.0
- npm或纱线
安装
# Clone repository
git clone https://github.com/your-username/paper-search-mcp-nodejs.git
cd paper-search-mcp-nodejs
# Install dependencies
npm install
# Copy environment template
cp .env.example .env配置
- 获取Web of Science API密钥
- 访问 Clarivate开发者门户 - 注册并申请Web of Science API访问 - 将API密钥添加到 .env 文件
- 获取PubMed API密钥(可选)
- 没有API密钥:免费使用,每秒限制3个请求 - 使用API密钥:每秒10次请求,服务更稳定 - 获取密钥:请参阅 NCBI API密钥
- 配置环境变量
# Edit .env file
WOS_API_KEY=your_actual_api_key_here
WOS_API_VERSION=v1
# PubMed API key (optional, recommended for better performance)
PUBMED_API_KEY=your_ncbi_api_key_here
# Semantic Scholar API key (optional, increases rate limits)
SEMANTIC_SCHOLAR_API_KEY=your_semantic_scholar_api_key
# Elsevier API key (required for ScienceDirect and Scopus)
ELSEVIER_API_KEY=your_elsevier_api_key
# Springer Nature API keys (required for Springer)
SPRINGER_API_KEY=your_springer_api_key # For Metadata API v2
# Optional: Separate key for OpenAccess API (if different from main key)
SPRINGER_OPENACCESS_API_KEY=your_openaccess_api_key
# Wiley TDM token (required for Wiley)
WILEY_TDM_TOKEN=your_wiley_tdm_token构建并运行
方法1:NPX(建议用于MCP)
# Direct run with npx (most common MCP deployment)
npx -y paper-search-mcp-nodejs
# Or install globally
npm install -g paper-search-mcp-nodejs
paper-search-mcp方法二:地方发展
# Build TypeScript code
npm run build
# Start server
npm start
# Or run in development mode
npm run devMCP服务器配置
将以下配置添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
NPX配置(推荐)
{
"mcpServers": {
"paper-search-nodejs": {
"command": "npx",
"args": ["-y", "bach-paper-search-mcp-nodejs"],
"env": {
"WOS_API_KEY": "your_web_of_science_api_key"
}
}
}
}本地安装配置
{
"mcpServers": {
"paper_search_nodejs": {
"command": "node",
"args": ["/path/to/paper-search-mcp-nodejs/dist/server.js"],
"env": {
"WOS_API_KEY": "your_web_of_science_api_key"
}
}
}
}🛠️ MCP工具
search_papers
跨多个平台搜索学术论文
// Random platform selection (default behavior)
search_papers({
query: "machine learning",
platform: "all", // Randomly selects one platform for efficiency
maxResults: 10,
year: "2023",
sortBy: "date"
})
// Search specific platform
search_papers({
query: "quantum computing",
platform: "webofscience", // Target specific platform
maxResults: 5
})平台选择行为:
platform: "all"-随机选择一个平台以获得高效、专注的结果- 特定平台-仅搜索该平台
- 可用平台:
arxiv,webofscience/wos,pubmed,biorxiv,medrxiv,semantic,iacr,googlescholar/scholar,scihub,sciencedirect,springer,wiley,scopus
search_arxiv
专门搜索arXiv预印本
search_arxiv({
query: "transformer neural networks",
maxResults: 10,
category: "cs.AI",
author: "Attention"
})search_webofscience
专门搜索Web of Science数据库
search_webofscience({
query: "CRISPR gene editing",
maxResults: 15,
year: "2022",
journal: "Nature"
})search_pubmed
检索PubMed/MEDLINE生物医学文献数据库
search_pubmed({
query: "COVID-19 vaccine efficacy",
maxResults: 20,
year: "2023",
author: "Smith",
journal: "New England Journal of Medicine",
publicationType: ["Journal Article", "Clinical Trial"]
})search_google_scholar
搜索谷歌学术数据库
search_google_scholar({
query: "machine learning",
maxResults: 10,
yearLow: 2020,
yearHigh: 2023,
author: "Bengio"
})search_biorxiv / search_medrxiv
搜索生物学和医学预印本
search_biorxiv({
query: "CRISPR",
maxResults: 15,
days: 30
})search_semantic_scholar
搜索语义学者AI语义数据库
search_semantic_scholar({
query: "deep learning",
maxResults: 10,
fieldsOfStudy: ["Computer Science"],
year: "2023"
})search_iacr
搜索IACR ePrint加密存档
search_iacr({
query: "zero knowledge proof",
maxResults: 5,
fetchDetails: true
})search_scihub
使用DOI或论文URL从Sci-Hub搜索和下载论文
search_scihub({
doiOrUrl: "10.1038/nature12373",
downloadPdf: true,
savePath: "./downloads"
})check_scihub_mirrors
检查Sci-Hub镜像站点的运行状况
check_scihub_mirrors({
forceCheck: true // Force fresh health check
})download_paper
下载纸质PDF文件
download_paper({
paperId: "2106.12345", // or DOI for Sci-Hub
platform: "arxiv", // or "scihub" for Sci-Hub downloads
savePath: "./downloads"
})get_paper_by_doi
通过DOI获取纸质信息
get_paper_by_doi({
doi: "10.1038/s41586-023-12345-6",
platform: "all"
})get_platform_status
检查平台状态和API密钥
get_platform_status({})📊 数据模型
所有平台纸质数据转换为统一格式:
interface Paper {
paperId: string; // Unique identifier
title: string; // Paper title
authors: string[]; // Author list
abstract: string; // Abstract
doi: string; // DOI
publishedDate: Date; // Publication date
pdfUrl: string; // PDF link
url: string; // Paper page URL
source: string; // Source platform
citationCount?: number; // Citation count
journal?: string; // Journal name
year?: number; // Publication year
categories?: string[]; // Subject categories
keywords?: string[]; // Keywords
// ... more fields
}🔧 发展
项目结构
src/
├── models/
│ └── Paper.ts # Paper data model
├── platforms/
│ ├── PaperSource.ts # Abstract base class
│ ├── ArxivSearcher.ts # arXiv searcher
│ ├── WebOfScienceSearcher.ts # Web of Science searcher
│ ├── PubMedSearcher.ts # PubMed searcher
│ ├── GoogleScholarSearcher.ts # Google Scholar searcher
│ ├── BioRxivSearcher.ts # bioRxiv/medRxiv searcher
| ├── SemanticScholarSearcher.ts # Semantic Scholar searcher
| ├── IACRSearcher.ts # IACR ePrint searcher
| ├── SciHubSearcher.ts # Sci-Hub searcher with mirror management
| ├── ScienceDirectSearcher.ts # ScienceDirect (Elsevier) searcher
│ ├── SpringerSearcher.ts # Springer Nature searcher (Meta v2 & OpenAccess APIs)
| ├── WileySearcher.ts # Wiley TDM API searcher
| └── ScopusSearcher.ts # Scopus citation database searcher
├── utils/
│ └── RateLimiter.ts # Token bucket rate limiter
└── server.ts # MCP server main file添加新平台
- 创建新的搜索者类扩展
PaperSource - 实现所需的抽象方法
- 在中注册新搜索者
server.ts - 添加相应的MCP工具
测试
# Run tests
npm test
# Run linting
npm run lint
# Code formatting
npm run format🌟 平台特定功能
施普林格自然双API系统
施普林格·自然提供了两个API:
- 元数据API v2 (主要API)
- 端点: https://api.springernature.com/meta/v2/json - 搜索所有Springer内容(订阅+开放获取) - 需要来自的API密钥https://dev.springernature.com/
- OpenAccess API (可选)
- 端点: https://api.springernature.com/openaccess/json - 仅搜索开放访问内容 - 可能需要单独的API密钥或特殊权限 - 更适合查找可下载的PDF
// Search all Springer content
search_springer({
query: "machine learning",
maxResults: 10
})
// Search only open access papers
search_springer({
query: "COVID-19",
openAccess: true, // Uses OpenAccess API if available
maxResults: 5
})Web of Science高级搜索
// Use Web of Science query syntax
search_webofscience({
query: 'TS="machine learning" AND PY=2023',
maxResults: 20
})
// Author search
search_webofscience({
query: 'AU="Smith, J*"',
maxResults: 10
})
// Journal search
search_webofscience({
query: 'SO="Nature" AND PY=2022-2023',
maxResults: 15
})支持的字段:
TS:主题搜索AU作者SO:源日志PY:出版年份DO:DOITI:标题
谷歌学术功能
- 学术论文优先级:自动筛选书籍,优先考虑同行评审的论文
- 引文数据:提供引文计数和学术指标
- 反检测:智能请求模式,避免阻塞
- 全面覆盖:搜索所有学术出版商
语义学者特征
- 人工智能驱动的搜索:查询的语义理解
- 引用网络:论文关系和影响力指标
- 开放获取PDF:免费论文的直接链接
- 研究领域:按特定学科筛选
Sci-Hub功能
- 通用访问:使用DOI或直接URL访问论文
- 镜像网络:自动检测和使用最快的可用镜子(11+个镜子)
- 健康监测:持续监控镜像站点可用性
- 自动故障切换:当一个镜像发生故障时,可以在镜像之间无缝切换
- 智能重试:失败时使用不同镜像自动重试
- 响应时间优化:镜像按响应时间排序,以获得最佳性能
📝 许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
🤝 贡献
欢迎投稿!看 贡献.md 作为指导方针。
- 分叉项目
- 创建特征分支(
git checkout -b feature/amazing-feature) - 提交更改(
git commit -m 'Add amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 打开拉取请求
🐛 问题报告
如果您遇到问题,请通过以下方式报告 .
🙏 致谢
- 原版 论文搜索mcp 为基金会
- 协议标准的MCP社区
______________________________________________________________________
⭐ 如果这个项目对你有帮助,请给它一颗星!
