文献查找MCP

oafoak/PaperSearchMCP
Hosted
6 Stars 486 次浏览 瓜哥 更新于 2026-08-23

这是一个基于Node.js的模型上下文协议(MCP)服务器,可以从包括arXiv、Web of Science、PubMed、Google Scholar、Sci-Hub、ScienceDirect、Springer、Wiley、Scopus在内的13个学术平台搜索和下载学术论文。它支持与Claude Desktop和其他AI助手无缝集成,高性能搜索以及智能错误处理。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "paper-search-nodejs": {
      "args": [
        "-y",
        "paper-search-mcp-nodejs"
      ],
      "command": "npx",
      "env": {
        "WOS_API_KEY": "your_web_of_science_api_key"
      }
    }
  }
}

该服务需要配置环境变量:WOS_API_KEY

可用工具 (19 个)

该服务在 MCP 协议中暴露的工具,AI 可按需调用

debug_pubmed_test 2 个参数 需填 1 项

Debug PubMed search with detailed logging to bypass MCP cache

必填参数:query

search_papers 12 个参数 需填 1 项

Search academic papers from multiple sources including arXiv, Web of Science, etc.

必填参数:query

search_arxiv 4 个参数 需填 1 项

Search academic papers specifically from arXiv preprint server

必填参数:query

search_webofscience 5 个参数 需填 1 项

Search academic papers from Web of Science database

必填参数:query

search_pubmed 6 个参数 需填 1 项

Search biomedical literature from PubMed/MEDLINE database using NCBI E-utilities API

必填参数:query

search_biorxiv 3 个参数 需填 1 项

Search bioRxiv preprint server for biology papers

必填参数:query

search_medrxiv 3 个参数 需填 1 项

Search medRxiv preprint server for medical papers

必填参数:query

search_semantic_scholar 4 个参数 需填 1 项

Search Semantic Scholar for academic papers with citation data

必填参数:query

search_iacr 3 个参数 需填 1 项

Search IACR ePrint Archive for cryptography papers

必填参数:query

download_paper 3 个参数 需填 2 项

Download PDF file of an academic paper

必填参数:paperId、platform

search_google_scholar 5 个参数 需填 1 项

Search Google Scholar for academic papers using web scraping

必填参数:query

get_paper_by_doi 2 个参数 需填 1 项

Retrieve paper information using DOI from available platforms

必填参数:doi

search_scihub 3 个参数 需填 1 项

Search and download papers from Sci-Hub using DOI or paper URL. Automatically detects and uses the fastest available mirror.

必填参数:doiOrUrl

check_scihub_mirrors 1 个参数

Check the health status of all Sci-Hub mirror sites

该工具无需必填参数,直接调用即可

get_platform_status

Check the status and capabilities of available academic platforms

该工具无需必填参数,直接调用即可

search_sciencedirect 6 个参数 需填 1 项

Search academic papers from Elsevier ScienceDirect database (requires API key)

必填参数:query

search_springer 8 个参数 需填 1 项

Search academic papers from Springer Nature database. Uses Metadata API by default (all content) or OpenAccess API when openAccess=true (full text available). Same API key works for both.

必填参数:query

search_wiley 7 个参数 需填 1 项

Search academic papers from Wiley Online Library (requires TDM token)

必填参数:query

search_scopus 9 个参数 需填 1 项

Search the Scopus abstract and citation database (requires Elsevier API key)

必填参数:query

服务介绍

Paper Search MCP (Node.js)

English|中文

A Node.js Model Context Protocol (MCP) server for searching and downloading academic papers from multiple sources, including arXiv, Web of Science, PubMed, Google Scholar, Sci-Hub, ScienceDirect, Springer, Wiley, Scopus, and 13 academic platforms in total.

Node.js
TypeScript
License
Platforms

✨ Key Features

  • 🌍 13 Academic Platforms: arXiv, Web of Science, PubMed, Google Scholar, bioRxiv, medRxiv, Semantic Scholar, IACR ePrint, Sci-Hub, ScienceDirect, Springer Nature, Wiley, Scopus
  • 🔗 MCP Protocol Integration: Seamless integration with Claude Desktop and other AI assistants
  • 📊 Unified Data Model: Standardized paper format across all platforms
  • ⚡ High-Performance Search: Concurrent search with intelligent rate limiting
  • 🛡️ Type Safety: Complete TypeScript support
  • 🎯 Academic Papers First: Smart filtering prioritizing academic papers over books
  • 🔄 Smart Error Handling: Platform fallback and auto-retry mechanisms

📚 Supported Platforms

Platform Search Download Full Text Citations API Key Special Features
arXiv Physics/CS preprints
Web of Science ✅ Required High-quality journal index
PubMed 🟡 Optional Biomedical literature
Google Scholar Comprehensive academic search
bioRxiv Biology preprints
medRxiv Medical preprints
Semantic Scholar 🟡 Optional AI semantic search
IACR ePrint Cryptography papers
Sci-Hub Universal paper access via DOI
ScienceDirect ✅ Required Elsevier's full-text database
Springer Nature ✅* ✅ Required Dual API: Meta v2 & OpenAccess
Wiley ✅ Required Text and Data Mining API
Scopus ✅ Required Largest citation database

✅ Supported | ❌ Not supported | 🟡 Optional | ✅* Open Access only

🚀 Quick Start

System Requirements

  • Node.js >= 18.0.0
  • npm or yarn

Installation

# 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

Configuration

  1. Get Web of Science API Key

  2. Get PubMed API Key (Optional)

    • Without API key: Free usage, 3 requests/second limit
    • With API key: 10 requests/second, more stable service
    • Get key: See NCBI API Keys
  3. Configure Environment Variables

    # 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
    

Build and Run

# 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

Method 2: Local Development

# Build TypeScript code
npm run build

# Start server
npm start

# Or run in development mode
npm run dev

MCP Server Configuration

Add the following configuration to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "paper-search-nodejs": {
      "command": "npx",
      "args": ["-y", "paper-search-mcp-nodejs"],
      "env": {
        "WOS_API_KEY": "your_web_of_science_api_key"
      }
    }
  }
}

Local Installation Configuration

{
  "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 Tools

search_papers

Search academic papers across multiple platforms

// 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 Selection Behavior:

  • platform: "all" - Randomly selects one platform for efficient, focused results
  • Specific platform - Searches only that platform
  • Available platforms: arxiv, webofscience/wos, pubmed, biorxiv, medrxiv, semantic, iacr, googlescholar/scholar, scihub, sciencedirect, springer, wiley, scopus

search_arxiv

Search arXiv preprints specifically

search_arxiv({
  query: "transformer neural networks",
  maxResults: 10,
  category: "cs.AI",
  author: "Attention"
})

search_webofscience

Search Web of Science database specifically

search_webofscience({
  query: "CRISPR gene editing",
  maxResults: 15,
  year: "2022",
  journal: "Nature"
})

search_pubmed

Search PubMed/MEDLINE biomedical literature database

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 academic database

search_google_scholar({
  query: "machine learning",
  maxResults: 10,
  yearLow: 2020,
  yearHigh: 2023,
  author: "Bengio"
})

search_biorxiv / search_medrxiv

Search biology and medical preprints

search_biorxiv({
  query: "CRISPR",
  maxResults: 15,
  days: 30
})

search_semantic_scholar

Search Semantic Scholar AI semantic database

search_semantic_scholar({
  query: "deep learning",
  maxResults: 10,
  fieldsOfStudy: ["Computer Science"],
  year: "2023"
})

search_iacr

Search IACR ePrint cryptography archive

search_iacr({
  query: "zero knowledge proof",
  maxResults: 5,
  fetchDetails: true
})

search_scihub

Search and download papers from Sci-Hub using DOI or paper URL

search_scihub({
  doiOrUrl: "10.1038/nature12373",
  downloadPdf: true,
  savePath: "./downloads"
})

check_scihub_mirrors

Check health status of Sci-Hub mirror sites

check_scihub_mirrors({
  forceCheck: true  // Force fresh health check
})

download_paper

Download paper PDF files

download_paper({
  paperId: "2106.12345",  // or DOI for Sci-Hub
  platform: "arxiv",      // or "scihub" for Sci-Hub downloads
  savePath: "./downloads"
})

get_paper_by_doi

Get paper information by DOI

get_paper_by_doi({
  doi: "10.1038/s41586-023-12345-6",
  platform: "all"
})

get_platform_status

Check platform status and API keys

get_platform_status({})

📊 Data Model

All platform paper data is converted to a unified format:

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
}

🔧 Development

Project Structure

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

Adding New Platforms

  1. Create new searcher class extending PaperSource
  2. Implement required abstract methods
  3. Register new searcher in server.ts
  4. Add corresponding MCP tool

Testing

# Run tests
npm test

# Run linting
npm run lint

# Code formatting
npm run format

🌟 Platform-Specific Features

Springer Nature Dual API System

Springer Nature provides two APIs:

  1. Metadata API v2 (Main API)

    • Endpoint: https://api.springernature.com/meta/v2/json
    • Searches all Springer content (subscription + open access)
    • Requires API key from https://dev.springernature.com/
  2. OpenAccess API (Optional)

    • Endpoint: https://api.springernature.com/openaccess/json
    • Only searches open access content
    • May require separate API key or special permissions
    • Better for finding downloadable PDFs
// 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
})
// 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
})

Supported Fields:

  • TS: Topic search
  • AU: Author
  • SO: Source journal
  • PY: Publication year
  • DO: DOI
  • TI: Title

Google Scholar Features

  • Academic Paper Priority: Automatically filters out books, prioritizes peer-reviewed papers
  • Citation Data: Provides citation counts and academic metrics
  • Anti-Detection: Smart request patterns to avoid blocking
  • Comprehensive Coverage: Searches across all academic publishers

Semantic Scholar Features

  • AI-Powered Search: Semantic understanding of queries
  • Citation Networks: Paper relationships and influence metrics
  • Open Access PDFs: Direct links to freely available papers
  • Research Fields: Filter by specific academic disciplines

Sci-Hub Features

  • Universal Access: Access papers using DOI or direct URLs
  • Mirror Network: Automatic detection and use of fastest available mirror (11+ mirrors)
  • Health Monitoring: Continuous monitoring of mirror site availability
  • Automatic Failover: Seamless switching between mirrors when one fails
  • Smart Retry: Automatic retry with different mirrors on failure
  • Response Time Optimization: Mirrors sorted by response time for best performance

📝 License

MIT License - see LICENSE file for details.

🤝 Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

  1. Fork the project
  2. Create feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open Pull Request

🐛 Issue Reporting

If you encounter issues, please report them at GitHub Issues.

🙏 Acknowledgments

  • Original paper-search-mcp for the foundation
  • MCP community for the protocol standards

⭐ If this project helps you, please give it a star!

相关 MCP 服务