Claude-skill-registry Academic Researcher
Academic paper search across 14+ scholarly platforms including arXiv, PubMed, Google Scholar, Web of Science, Semantic Scholar, Sci-Hub, and more. Use for literature review, research discovery, and citation management.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/academic-researcher" ~/.claude/skills/majiayu000-claude-skill-registry-academic-researcher && rm -rf "$T"
skills/data/academic-researcher/SKILL.md- global npm install
- makes HTTP requests (curl)
- references .env files
Academic Researcher
What This Skill Does
Provides unified access to 14 academic platforms through a single MCP interface. Enables searching, retrieving, and analyzing scholarly papers with standardized data models and security features. Powered by
paper-search-mcp-nodejs v0.2.5.
Supported Platforms
| Platform | Search | Fetch | Advanced | Rate Limit |
|---|---|---|---|---|
| arXiv | ✅ | ✅ | Query syntax | 3 req/s |
| Web of Science | ✅ | ✅ | WQL support | API key required |
| PubMed | ✅ | ✅ | Boolean ops | 3 req/s |
| Google Scholar | ✅ | ❌ | Auto-retry | IP-based |
| Semantic Scholar | ✅ | ✅ | GraphQL | 100 req/5min |
| Sci-Hub | ❌ | ✅ | Mirror mgmt | Legal caution ⚠️ |
| ScienceDirect | ✅ | ✅ | Facets | API key required |
| Springer Nature | ✅ | ✅ | Dual API | API key required |
| Wiley | ✅ | ✅ | Full metadata | API key required |
| Scopus | ✅ | ✅ | Advanced | API key required |
| Crossref | ✅ | ✅ | Works API | Open access |
| bioRxiv | ✅ | ✅ | Pre-prints | Open access |
| medRxiv | ✅ | ✅ | Medical pre-prints | Open access |
| IACR ePrint | ✅ | ✅ | Cryptography | Open access |
Prerequisites
- Node.js 18+
- Globally installed:
npm install -g paper-search-mcp-nodejs - API keys for premium platforms (optional)
Quick Start
Add to Claude Code (MCP Integration)
# The package is already globally installed via: # npm install -g paper-search-mcp-nodejs # Add MCP server to Claude Code claude mcp add paper-search npx paper-search-mcp-nodejs # Verify installation npx paper-search-mcp-nodejs --version # Should show v0.2.5
Configure API Keys
Create
.env file in your working directory:
# Optional: Premium platform API keys WOS_API_KEY=your_web_of_science_key PUBMED_API_KEY=your_pubmed_key SCIENCEDIRECT_API_KEY=your_elsevier_key SPRINGER_API_KEY=your_springer_key WILEY_API_KEY=your_wiley_key SCOPUS_API_KEY=your_scopus_key # Optional: Sci-Hub mirror override SCIHUB_MIRROR=https://sci-hub.se
Available MCP Tools (17 Total)
Universal Search Tools
1. search_papers
search_papersSearch across any supported platform with unified interface.
// Example: Search arXiv { "platform": "arxiv", "query": "quantum computing", "maxResults": 10 } // Example: Search PubMed with filters { "platform": "pubmed", "query": "CRISPR gene editing", "filters": { "year": "2024", "species": "human" }, "maxResults": 20 } // Example: Web of Science advanced search { "platform": "wos", "query": "TS=(machine learning) AND PY=(2023-2024)", "filters": { "documentType": "article" } }
2. fetch_paper
fetch_paperRetrieve full paper metadata or PDF by identifier.
// By DOI { "doi": "10.1038/s41586-019-1666-5", "platform": "crossref" } // By arXiv ID { "arxivId": "2301.07041", "platform": "arxiv" } // By PubMed ID { "pmid": "12345678", "platform": "pubmed" }
Platform-Specific Tools
3. search_arxiv
search_arxivAdvanced arXiv search with category filtering.
{ "query": "ti:transformer AND cat:cs.LG", "maxResults": 50, "sortBy": "submittedDate", "sortOrder": "descending" }
4. search_pubmed
search_pubmedPubMed/MEDLINE search with MeSH terms.
{ "query": "(cancer[MeSH]) AND (immunotherapy[Title])", "filters": { "publicationType": "Clinical Trial", "minDate": "2020/01/01", "maxDate": "2024/12/31" } }
5. search_google_scholar
search_google_scholarGoogle Scholar search with citation data.
{ "query": "deep learning natural language processing", "filters": { "yearLow": 2020, "yearHigh": 2024 } }
⚠️ Rate Limit Warning: Google Scholar enforces strict IP-based limits. Use sparingly.
6. search_semantic_scholar
search_semantic_scholarSemantic Scholar with citation graphs.
{ "query": "attention is all you need", "fields": ["title", "authors", "citationCount", "influentialCitationCount"], "limit": 100 }
7. search_wos
(Web of Science)
search_wosAdvanced WoS search with citation analytics.
{ "query": "TS=(climate change) AND CU=(China)", "filters": { "databaseId": "WOS", "timespan": "2020-2024" } }
8. search_sciencedirect
search_sciencedirectElsevier ScienceDirect full-text search.
{ "query": "CRISPR Cas9", "filters": { "date": "2024", "contentType": "Journal", "openAccess": true } }
9. search_springer
search_springerSpringer Nature search across journals and books.
{ "query": "quantum cryptography", "filters": { "subject": "Physics", "year": "2024" } }
10. search_wiley
search_wileyWiley Online Library search.
{ "query": "protein folding", "filters": { "publicationYear": "2024" } }
11. search_scopus
search_scopusScopus citation database search.
{ "query": "TITLE-ABS-KEY(machine learning healthcare)", "filters": { "doctype": "ar", // Article "pubyear": "2024" } }
12. search_crossref
search_crossrefCrossref DOI search and metadata.
{ "query": "neural networks", "filters": { "type": "journal-article", "from-pub-date": "2024-01-01" }, "rows": 100 }
13. search_biorxiv
search_biorxivbioRxiv preprint search (biology).
{ "query": "COVID-19 vaccine", "filters": { "category": "immunology" } }
14. search_medrxiv
search_medrxivmedRxiv preprint search (medicine).
{ "query": "cancer therapy", "maxResults": 50 }
15. search_iacr
search_iacrIACR ePrint archive (cryptography).
{ "query": "zero knowledge proof", "maxResults": 30 }
Utility Tools
16. fetch_scihub_pdf
fetch_scihub_pdfDownload PDF via Sci-Hub (legal caution required).
{ "doi": "10.1016/j.cell.2024.01.001" }
⚠️ Legal Warning: Sci-Hub access may violate copyright laws in many jurisdictions. Use only for:
- Papers you have legal access to
- Fair use/educational purposes where permitted
- Jurisdictions where Sci-Hub is legal
17. get_paper_recommendations
get_paper_recommendationsGet citation-based paper recommendations.
{ "doi": "10.1038/nature12373", "platform": "semantic_scholar", "limit": 10 }
Security Features (v0.2.5)
1. DOI Validation
Automatic validation of DOI formats to prevent injection attacks.
2. Query Sanitization
SQL injection and command injection protection for all queries.
3. Sensitive Data Masking
API keys automatically masked in logs and error messages.
4. Rate Limiting
Built-in token bucket rate limiting for all platforms.
Common Workflows
Literature Review
// 1. Broad search across multiple platforms await search_papers({ platform: "semantic_scholar", query: "transformer models NLP", maxResults: 100 }); // 2. Filter by citations const highImpact = results.filter(p => p.citationCount > 100); // 3. Get related papers for (const paper of highImpact) { await get_paper_recommendations({ doi: paper.doi, limit: 5 }); }
Systematic Review
// Search across multiple databases const platforms = ["pubmed", "wos", "scopus", "crossref"]; for (const platform of platforms) { await search_papers({ platform, query: "(systematic review) AND (machine learning diagnosis)", filters: { year: "2020-2024" } }); }
Citation Analysis
// Get paper with citations const paper = await search_semantic_scholar({ query: "BERT: Pre-training of Deep Bidirectional Transformers", fields: ["citationCount", "influentialCitationCount", "references", "citations"] }); // Analyze citation network console.log(`Total citations: ${paper.citationCount}`); console.log(`Influential citations: ${paper.influentialCitationCount}`);
PDF Retrieval
// Try open access first let pdf = await fetch_paper({ doi: "10.1038/nature12373", platform: "crossref" }); // Fallback to Sci-Hub if needed (legal caution) if (!pdf.openAccess) { pdf = await fetch_scihub_pdf({ doi: "10.1038/nature12373" }); }
Platform-Specific Advanced Features
Springer Dual API Support
Springer supports both REST and GraphQL APIs:
// REST API (default) await search_springer({ query: "quantum computing", api: "rest" }); // GraphQL API (more flexible) await search_springer({ query: "quantum computing", api: "graphql", fields: ["title", "creators", "doi", "abstract"] });
Web of Science Advanced Search (WQL)
// Topic + Author + Year await search_wos({ query: "TS=(deep learning) AND AU=(LeCun) AND PY=(2015-2024)" }); // Citation count filter await search_wos({ query: "TS=(CRISPR) AND TC >= 100" // 100+ citations });
Sci-Hub Mirror Management
// Check mirror status const mirrors = [ "https://sci-hub.se", "https://sci-hub.st", "https://sci-hub.ru" ]; // Tool automatically tries mirrors in order // Override via SCIHUB_MIRROR env variable
Rate Limits and Best Practices
| Platform | Limit | Recommendation |
|---|---|---|
| arXiv | 3 req/s | Batch queries, cache results |
| PubMed | 3 req/s | Use E-utilities efficiently |
| Google Scholar | IP-based | Minimize usage, add delays |
| Semantic Scholar | 100 req/5min | Use GraphQL for efficiency |
| Web of Science | API key dependent | Check your plan limits |
| Crossref | No strict limit | Be respectful, ~50 req/s max |
| Sci-Hub | Varies by mirror | Use sparingly, legal caution |
Best Practices:
- Cache results: Store search results locally to avoid re-querying
- Batch operations: Group related queries together
- Use filters: Narrow searches to reduce API calls
- Respect rate limits: Add delays between requests
- Check open access: Try open platforms before premium APIs
- API key management: Store keys in
, never commit to git.env
Data Model
All platforms return standardized
Paper objects:
interface Paper { // Identifiers doi?: string; arxivId?: string; pmid?: string; pmcid?: string; // Core metadata title: string; authors: Author[]; abstract?: string; // Publication info journal?: string; volume?: string; issue?: string; pages?: string; year?: number; publishedDate?: string; // Access pdfUrl?: string; openAccess?: boolean; // Metrics citationCount?: number; influentialCitationCount?: number; // Platform-specific platform: string; sourceData?: Record<string, any>; }
Error Handling
try { const results = await search_papers({ platform: "arxiv", query: "quantum computing" }); } catch (error) { if (error.code === 'RATE_LIMIT_EXCEEDED') { // Wait and retry await sleep(5000); retry(); } else if (error.code === 'INVALID_API_KEY') { // Check API key configuration console.error('API key invalid or missing'); } else if (error.code === 'PLATFORM_UNAVAILABLE') { // Try alternative platform await search_papers({ platform: "crossref", query }); } }
Troubleshooting
Issue: API key not recognized
# Check environment variables echo $WOS_API_KEY echo $PUBMED_API_KEY # Verify .env file location (should be in working directory) ls -la .env # Test API key directly curl -H "Authorization: Bearer $WOS_API_KEY" "https://api.clarivate.com/..."
Issue: Rate limit exceeded
# Add delays between requests # Use batch operations # Cache results locally # Consider upgrading API plan
Issue: Google Scholar blocking
# Google Scholar is IP-sensitive: # - Reduce request frequency # - Use rotating proxies (if permitted) # - Consider Semantic Scholar as alternative # - Wait 24-48 hours if blocked
Issue: Sci-Hub mirror down
# Tool automatically tries multiple mirrors # Override with specific mirror: export SCIHUB_MIRROR=https://sci-hub.st # Check mirror status manually curl -I https://sci-hub.se
Issue: Empty results
# Check query syntax for platform # Verify filters are not too restrictive # Try broader search terms # Check if platform is accessible (API key, network)
Compliance and Legal Notice
Sci-Hub Usage
⚠️ Important: Sci-Hub access may violate copyright laws in many countries. Use responsibly:
- Only for papers you have legal access to
- Educational/fair use purposes where permitted
- Check local laws and institutional policies
- Consider legal alternatives first (open access, institutional access)
Google Scholar Terms
⚠️ Important: Google Scholar prohibits automated scraping:
- Use minimally and responsibly
- Add delays between requests
- Consider official APIs or Semantic Scholar as alternatives
- Respect robots.txt and rate limits
API Terms of Service
Each platform has its own terms:
- Web of Science: Check your license agreement
- Scopus: Institutional access required
- Elsevier/ScienceDirect: API agreement needed
- Springer Nature: Check API usage limits
Additional Resources
- GitHub: https://github.com/your-repo/paper-search-mcp-nodejs
- Documentation: Full API docs in package README
- npm Package: https://www.npmjs.com/package/paper-search-mcp-nodejs
- Version: v0.2.5 (latest)
- MCP Protocol: https://modelcontextprotocol.io/
Updating the Tool
# Update to latest version npm update -g paper-search-mcp-nodejs # Reinstall MCP server (if needed) claude mcp remove paper-search claude mcp add paper-search npx paper-search-mcp-nodejs # Verify version npx paper-search-mcp-nodejs --version
Related Skills
: For semantic search over downloaded papersagentdb-vector-search
: For analyzing research patternsreasoningbank-intelligence
: For reviewing code in academic softwaregithub-code-review
Support
For issues or questions:
- Check the troubleshooting section
- Review platform-specific documentation
- Check GitHub issues
- Verify API keys and configuration
- Test with minimal examples
Pro Tips:
- Start with open platforms (arXiv, Crossref, bioRxiv) - no API keys needed
- Use Semantic Scholar for citation analysis - excellent free API
- Cache results locally to minimize API calls
- Combine multiple platforms for comprehensive coverage
- Always check open access status before using Sci-Hub