Skip to main content
Glama
scholar-toolkit-mcp

scholar-toolkit-mcp

by czwziy

English | 中文

Paper Toolkit MCP

A comprehensive MCP toolkit for academic paper searching, manuscript processing, and citation management.

PyPI License Python


Features

Paper Search & Download

  • Multi-source search: arXiv, Semantic Scholar, PubMed, Crossref, OpenAlex, PMC, medRxiv, DBLP, Europe PMC, OpenAIRE, SSRN, IEEE, ACM

  • PDF download with automatic fallback (Unpaywall → OA repositories → Sci-Hub)

  • Text extraction from PDFs

Reference Management

  • SQLite-based local library

  • BibTeX/RIS export

  • Citation key generation

  • Author name auto-normalization (Surname, Given format)

Manuscript Processing

  • Markdown citation placeholder replacement & reference list generation

  • Human review copy generation (cite_key → Author(Year) DOI)

  • Multiple citation styles: GB/T 7714-2015, APA 7th, IEEE

  • Writing templates

Manuscript Harness

  • 30 automated verification rules (R0-R9) with local/global scope

  • Chinese language enforcement

  • Citation format validation

  • Word count checking

  • Writing/final mode switching (chapter/draft/final)

Citation Verification

  • Multi-model LLM scoring for citation accuracy

  • Incremental caching to avoid re-verification

  • Single-citation and full-manuscript batch verification


Related MCP server: Academic Paper MCP HTTP/SSE Server

Quick Start

Installation

pip install paper-toolkit-mcp

MCP Configuration

Add to your MCP client config:

{
  "mcpServers": {
    "paper-toolkit-mcp": {
      "command": "paper-toolkit-mcp",
      "env": {
        "paper_toolkit_mcp_WORK_DIR": "/path/to/your/project"
      }
    }
  }
}

Note: Set paper_toolkit_mcp_WORK_DIR to your project directory so that papers.db, downloads, and cache are stored there.

API Keys (Optional)

All sources work without API keys. Optional keys improve rate limits:

# Copy example and fill in available keys
cp .env.example .env

See .env.example for all available keys.


MCP Tools

Search & Download

Tool

Description

search_papers

Multi-source search (supports groups: medical/cs/metadata)

get_paper_by_doi

Get paper metadata by DOI (CrossRef + Semantic Scholar fallback)

download_paper

Download PDF (source-native → OA repos → Unpaywall → Sci-Hub)

download_by_cite_key

Download by citation key

read_by_cite_key

Download and extract PDF text

Library Management

Tool

Description

library_search

Search local library

library_stats

Get library statistics

cache_clear

Clear search cache

Manuscript Processing

Tool

Description

process_manuscript

Process Markdown manuscript, replace citation placeholders & generate outputs

get_paper_metadata

Get full metadata for a single paper

export_references

Batch export references (BibTeX/RIS/text)

get_writing_template

Get writing template

generate_ref_list

Generate reference list from manuscript cite_keys

generate_human_review

Generate human review copy (cite_key → Author(Year) DOI)

Manuscript Harness

Tool

Description

harness_init

Initialize harness infrastructure

harness_verify

Verify manuscript against rules

harness_list_rules

List all rules (with scope and draft_skip markers)

Citation Verification

Tool

Description

verify_citation

Verify a single citation (multi-model LLM scoring)

verify_manuscript

Batch verify all citations in a manuscript

verify_config

Check verifier configuration & model connectivity


Harness Rules

Rule

Category

Scope

Description

R0

Language

local

Chinese language enforcement

R1

Structure

local

Heading hierarchy, heading length, no lists/bold

R2

Data

local/global

P-value, mean±SD, statistics, data consistency

R3

Sections

global

Required chapters (intro/methods/results/discussion/conclusion)

R4

Terminology

local

Abbreviation consistency, humble phrasing

R5

Citations

local/global

cite_key format, density, total reference count

R6

Position

local

Citation placement, multi-citation format

R7

AI Trace

local

No colon in headings, no self-praise/back-reference, user comments

R8

Word Count

local/global

3000-8000 words total, paragraph length, abstract length

R9

Tables/Figures

local/global

Three-line table, 300dpi, figure numbering

Scope: local rules can be checked by sub-agents on individual chapters; global rules require the full merged manuscript. In draft mode, abstract word count (R8.3) and total reference count (R5.4) are automatically skipped.


Development

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Lint
ruff check paper_toolkit_mcp tests

# Type check
mypy paper_toolkit_mcp

License

MIT


Available Tools

11 tools
cache_clearA

Clear all cached search results.

Returns: Dict with number of cleared entries.

Inputs: no named parameters. Returns: object

download_by_cite_keyA

Download a paper's PDF using its cite_key.

Looks up the paper in the local library by cite_key, checks for an existing local PDF, then falls back to download_paper.

Args: cite_key: The paper's cite_key (e.g. 'Kxq') from search results. save_path: Directory to save the PDF (default: <WORK_DIR>/downloads). Returns: Path to the downloaded PDF, or an error message.

Inputs: cite_key (required), save_path. Returns: result

download_paperA

Try source-native download, OA repositories, Unpaywall, then optional Sci-Hub.

Args: source: Source name (arxiv, medrxiv, semantic, crossref, pubmed, pmc, dblp, openalex). paper_id: Source-native paper identifier. doi: Optional DOI used for repository/unpaywall/Sci-Hub fallback. title: Optional title used for repository/Sci-Hub fallback when DOI is unavailable. save_path: Directory to save downloaded files. use_scihub: Whether to fallback to Sci-Hub after OA attempts fail. scihub_base_url: Sci-Hub mirror URL for fallback. Returns: Download path on success or explanatory error message.

Inputs: source (required), paper_id (required), doi, title, +3 more. Returns: result

get_paper_by_doiA

Get paper metadata by DOI with multi-source fallback.

Tries CrossRef first (richest metadata), then Semantic Scholar (best abstract coverage) to backfill missing abstract. Only saves to local library when an abstract is available.

Args: doi: Digital Object Identifier (e.g., '10.1038/nature12373'). Returns: Paper metadata dict. Empty dict if not found at all.

Inputs: doi (required).

harness_initA

Initialize harness infrastructure for academic paper writing.

Creates the following structure in the project directory:

  • CLAUDE.md: Project map for AI Agent (in project root)

  • .harness/: Harness directory containing:

    • rules.md: Writing rules (R0-R9)

    • verify.py: Automated verification script

    • checks/: Verification rule implementations

    • specs/manuscript-spec.yaml: Configurable standards

    • checklist.md: Manual review checklist

    • Harness.md: Usage guide

Args: project_dir: Target project directory path. Defaults to current working directory. force: If True, overwrite existing .harness/ directory. Defaults to False.

Returns: JSON string with initialization status and next steps.

Inputs: force, project_dir. Returns: result

harness_list_rulesA

List all harness rules with their descriptions.

Returns a summary of all verification rules (R0-R9) including rule ID, name, severity, and brief description.

Returns: JSON string with list of all rules.

Inputs: no named parameters. Returns: result

harness_verifyA

Verify a manuscript against harness rules.

Runs the harness verification script on the specified manuscript file and returns a JSON report of violations, warnings, and info messages.

Args: manuscript_path: Path to the manuscript markdown file. verbose: If True, include detailed violation information. Defaults to False.

Returns: JSON string with verification results including error count, warning count, and detailed violation information.

Inputs: manuscript_path (required), verbose. Returns: result

library_statsA

Get statistics about the local paper library.

Returns: Dict with total paper count, counts by source, PDF/fulltext coverage, and the database file path.

Inputs: no named parameters. Returns: object

read_by_cite_keyA

Download and extract full text from a paper using its cite_key.

Checks for cached full text first, then downloads the PDF and extracts text via pypdf. The extracted text is cached in the local library.

Args: cite_key: The paper's cite_key (e.g. 'Kxq') from search results. save_path: Directory for PDF download (default: <WORK_DIR>/downloads). Returns: The extracted text content, or an error message.

Inputs: cite_key (required), save_path. Returns: result

search_papersA

Unified top-level search across all configured academic platforms.

Returns only cite_key + title + abstract + year + source for each paper. Papers without abstract are discarded. Defaults to last 5 years.

Args: query: Search query string. max_results_per_source: Max results to fetch from each selected source. sources: Source names, preset group, or 'all'. Groups: medical (pubmed,pmc,medrxiv), cs (arxiv,dblp,semantic), metadata (crossref,openalex). Or comma-separated individual names. year_from: Earliest publication year (default: current year - 5). Pass 0 to disable year filtering. year_to: Latest publication year (default: none). Returns: Aggregated dict with per-source stats, errors, and simplified papers.

Inputs: query (required), sources, year_to, year_from, +1 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 11 tools

    Disambiguation5/5

    Each tool serves a clearly distinct purpose: searching, metadata retrieval, downloading, reading, local library management, and manuscript verification. Overlaps like download_by_cite_key and download_paper have different input methods (cite_key vs source+id), making them unambiguous.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern in snake_case. The harness tools share a uniform prefix, while the rest use clear action nouns (e.g., download_paper, library_search). No mixing of conventions.

    Tool Count5/5

    With 11 tools, the set is well-scoped for an academic paper toolkit covering search, retrieval, local library, and manuscript verification. Neither sparse nor bloated.

    Completeness4/5

    Core workflows (search, metadata, download, read, local library) are covered. Minor gaps include no manual paper addition, no library entry editing/deletion, and no citation export, but these are not critical for typical usage.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Unified academic search MCP server that searches open literature (arXiv, bioRxiv, medRxiv, PMC), CNKI, and Web of Science, with browser-backed authentication, local paper library, and export to multiple formats.
      21
      2
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A MCP server for academic literature retrieval, aggregating multiple data sources like arXiv, Crossref, OpenAlex, PubMed, and Semantic Scholar to provide search, details, citations, trends, and recommendations.
      4
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Academic paper search and retrieval MCP server integrating multiple scholarly platforms into a unified interface. Supports search, fetch, trend analysis, and literature review workflows.
      8
      52 npm
      4
      MIT