Skip to main content
Glama
telagod

PaperMCP

by telagod

PaperMCP

npm version License TypeScript MCP

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

English | 简体中文


❌ 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

Related MCP server: Paper Search MCP

✅ 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

Add to your Claude Desktop config file:

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

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

Add to Cline MCP settings:

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

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

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

Add to Continue config:

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

Add to Cody settings:

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

Add to Cursor MCP settings:

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

Add to Windsurf config:

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

Add to Roo Cline settings:

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

Add to OpenHands config:

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

Add to Void settings:

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

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"]
        }
      }
    }
  }
}

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

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

Add to ~/.codex/config.toml:

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

Add to .opencode.json:

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

Add to Crush config:

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

📚 Supported Platforms

Core Platforms (16)

Platform

ID

API Key

Features

arXiv

arxiv

Search, Download, Read

PubMed

pubmed

Search, Lookup

PubMed Central

pmc

Search, Download, Read

bioRxiv

biorxiv

Search

medRxiv

medrxiv

Search

Google Scholar

google-scholar

Search

IACR ePrint

iacr

Search, Download

Semantic Scholar

semantic

⚠️

Search, Lookup

CrossRef

crossref

Search, Lookup

ACM Digital Library

acm

Search

Web of Science

wos

Search

Scopus

scopus

Search

JSTOR

jstor

Search

ResearchGate

researchgate

Search

CORE

core

Search

Microsoft Academic

microsoft-academic

Search

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

Platform

Link

Notes

Semantic Scholar

Apply

Free, increases rate limit

Web of Science

Apply

Requires institutional subscription

Scopus

Apply

Requires institutional subscription

CORE

Apply

Free

Unpaywall

Any email

No registration needed

ScienceDirect

Apply

Requires institutional subscription

Open Access Button

Apply

Optional, 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 LICENSE for details.


🙏 Acknowledgments

Built with Model Context Protocol and MCP TypeScript SDK


⬆ back to top

Made with ❤️ for researchers

A
license - permissive license
-
quality - not tested
F
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/telagod/papermcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server