papermcp

telagod/papermcp

3.2

If you are the rightful owner of papermcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

PaperMCP is a Model Context Protocol server that provides a unified interface for searching and accessing academic papers from over 23 sources.

Tools
4
Resources
0
Prompts
0

PaperMCP

npm version TypeScript MCP

Search and access academic papers from 23+ sources through Model Context Protocol

|


❌ Without PaperMCP

  • Manually visiting multiple academic databases
  • Copy-pasting DOIs and paper IDs between tools
  • Switching contexts to download PDFs
  • No unified interface for paper search

✅ With PaperMCP

  • Single interface for 23+ academic sources
  • Direct access from Claude and other AI assistants
  • Automatic PDF download and text extraction
  • Plugin system for sensitive sources

🛠️ Installation

Install in Claude Desktop

Add to your Claude Desktop config file:

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

Using npx (Recommended)
{
  "mcpServers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"]
    }
  }
}
Using npm global install
npm install -g @telagod/papermcp
{
  "mcpServers": {
    "papermcp": {
      "command": "papermcp"
    }
  }
}
With API keys
{
  "mcpServers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"],
      "env": {
        "SEMANTIC_SCHOLAR_API_KEY": "YOUR_KEY",
        "WOS_API_KEY": "YOUR_KEY",
        "SCOPUS_API_KEY": "YOUR_KEY"
      }
    }
  }
}
Install in Cline

Add to Cline MCP settings:

{
  "mcpServers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"]
    }
  }
}
Install in Zed

Add to ~/.config/zed/settings.json:

{
  "context_servers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"]
    }
  }
}
Install in Continue

Add to Continue config:

{
  "mcpServers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"]
    }
  }
}
Install in Sourcegraph Cody

Add to Cody settings:

{
  "cody.experimental.mcp": {
    "servers": {
      "papermcp": {
        "command": "npx",
        "args": ["-y", "@telagod/papermcp"]
      }
    }
  }
}
Install in Cursor

Add to Cursor MCP settings:

{
  "mcpServers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"]
    }
  }
}
Install in Windsurf

Add to Windsurf config:

{
  "mcpServers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"]
    }
  }
}
Install in Roo Cline

Add to Roo Cline settings:

{
  "mcpServers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"]
    }
  }
}
Install in OpenHands

Add to OpenHands config:

{
  "mcpServers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"]
    }
  }
}
Install in Void

Add to Void settings:

{
  "mcpServers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"]
    }
  }
}
Install in Claude Code

Use the claude mcp add command:

claude mcp add papermcp -- npx -y @telagod/papermcp

Or manually add to ~/.claude.json:

{
  "projects": {
    "/your/project/path": {
      "mcpServers": {
        "papermcp": {
          "command": "npx",
          "args": ["-y", "@telagod/papermcp"]
        }
      }
    }
  }
}
Install in Gemini CLI

Add to ~/.config/gemini-cli/settings.json:

{
  "mcpServers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"]
    }
  }
}
Install in Codex CLI

Add to ~/.codex/config.toml:

[mcp_servers.papermcp]
command = "npx"
args = ["-y", "@telagod/papermcp"]
Install in OpenCode

Add to .opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "papermcp": {
      "type": "local",
      "command": ["npx", "-y", "@telagod/papermcp"],
      "enabled": true
    }
  }
}
Install in Crush CLI

Add to Crush config:

{
  "mcpServers": {
    "papermcp": {
      "command": "npx",
      "args": ["-y", "@telagod/papermcp"]
    }
  }
}

📚 Supported Platforms

Core Platforms (16)

PlatformIDAPI KeyFeatures
arXivarxivSearch, Download, Read
PubMedpubmedSearch, Lookup
PubMed CentralpmcSearch, Download, Read
bioRxivbiorxivSearch
medRxivmedrxivSearch
Google Scholargoogle-scholarSearch
IACR ePrintiacrSearch, Download
Semantic Scholarsemantic⚠️Search, Lookup
CrossRefcrossrefSearch, Lookup
ACM Digital LibraryacmSearch
Web of SciencewosSearch
ScopusscopusSearch
JSTORjstorSearch
ResearchGateresearchgateSearch
COREcoreSearch
Microsoft Academicmicrosoft-academicSearch

Optional Plugins (7)

Enable via environment variables:

PLUGIN_SCI_HUB=true
PLUGIN_LIBGEN=true
PLUGIN_UNPAYWALL=true
PLUGIN_OA_BUTTON=true
PLUGIN_SCIENCE_DIRECT=true
PLUGIN_SPRINGER_LINK=true
PLUGIN_IEEE_XPLORE=true

[!WARNING] Sci-Hub and LibGen plugins are disabled by default. Use responsibly and comply with local regulations.


🚀 Usage

Available Tools (4 Unified Tools)

recommend_platforms

Get platform recommendations based on field

{
  "query": "transformer neural network",
  "field": "computer-science"  // biomedical, physics, mathematics, cryptography, open-access, general
}
search_papers

Search for papers on specified platform

{
  "platform": "arxiv",  // Use recommend_platforms to get suggestions
  "query": "machine learning",
  "limit": 10
}
download_paper

Download paper PDF from platform

{
  "platform": "arxiv",
  "id": "2301.00001",
  "dir": "/path/to/save"
}
read_paper

Extract text from paper PDF

{
  "platform": "pmc",
  "id": "PMC8123456",
  "dir": "/path/to/pdfs"
}

⚙️ Configuration

Environment Variables

# Optional API keys for enhanced features
SEMANTIC_SCHOLAR_API_KEY=your-key
WOS_API_KEY=your-key
SCOPUS_API_KEY=your-key
CORE_API_KEY=your-key

# Plugin toggles (default: false)
PLUGIN_SCI_HUB=true              # No config needed
PLUGIN_LIBGEN=true               # No config needed
PLUGIN_UNPAYWALL=true            # Requires UNPAYWALL_EMAIL
PLUGIN_OA_BUTTON=true            # Optional OA_BUTTON_API_KEY
PLUGIN_SCIENCE_DIRECT=true       # Requires ELSEVIER_API_KEY
PLUGIN_SPRINGER_LINK=true        # No config needed
PLUGIN_IEEE_XPLORE=true          # No config needed

# Plugin API keys
UNPAYWALL_EMAIL=your@email.com           # Required for Unpaywall
ELSEVIER_API_KEY=your-key                # Required for ScienceDirect
OA_BUTTON_API_KEY=your-key               # Optional for Open Access Button

Getting API Keys

PlatformLinkNotes
Semantic ScholarApplyFree, increases rate limit
Web of ScienceApplyRequires institutional subscription
ScopusApplyRequires institutional subscription
COREApplyFree
UnpaywallAny emailNo registration needed
ScienceDirectApplyRequires institutional subscription
Open Access ButtonApplyOptional, free

🔧 Development

Install from source

git clone https://github.com/telagod/papermcp.git
cd papermcp/ts
npm install
npm run build
npm run dev

Project Structure

ts/
├── src/
│   ├── core/           # Core types and config
│   ├── platforms/      # Platform adapters
│   ├── plugins/        # Optional plugins
│   ├── services/       # Registry and tools
│   ├── server/         # MCP server
│   └── utils/          # HTTP, logging
└── dist/               # Compiled output

Adding a Platform

import { BasePlatformAdapter } from './baseAdapter.js';
import { addAdapterFactory } from './index.js';

class MyAdapter extends BasePlatformAdapter {
  constructor() {
    super('my-platform');
  }

  async search(query: SearchQuery): Promise<SearchResult> {
    // Implementation
  }
}

addAdapterFactory(() => new MyAdapter());

📄 License

MIT License - see for details.


🙏 Acknowledgments

Built with Model Context Protocol and MCP TypeScript SDK


⬆ back to top

Made with ❤️ for researchers