Skip to main content
Glama
czwziy

scholar-toolkit-mcp

by czwziy

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
paper_toolkit_mcp_ENV_FILENoCustom path to a .env file to load environment variables from.
paper_toolkit_mcp_ACM_API_KEYNoOptional API key to activate ACM Digital Library connector. See https://libraries.acm.org/digital-library/acm-open
paper_toolkit_mcp_CORE_API_KEYNoFree API key from CORE (recommended). Obtain at https://core.ac.uk/services/api
paper_toolkit_mcp_DOAJ_API_KEYNoOptional API key for DOAJ to raise hourly rate limit. Get at https://doaj.org/apply-for-api-key/
paper_toolkit_mcp_IEEE_API_KEYNoOptional API key to activate IEEE Xplore connector. Free at https://developer.ieee.org/
paper_toolkit_mcp_UNPAYWALL_EMAILNoEmail required for Unpaywall (required for Unpaywall to work). Any valid email; register at https://unpaywall.org/products/api
paper_toolkit_mcp_ZENODO_ACCESS_TOKENNoOptional access token for Zenodo private records. Get at https://zenodo.org/account/settings/applications/
paper_toolkit_mcp_GOOGLE_SCHOLAR_PROXY_URLNoOptional proxy URL to bypass Google Scholar bot-detection. Use your HTTP/HTTPS proxy URL.
paper_toolkit_mcp_SEMANTIC_SCHOLAR_API_KEYNoOptional API key for Semantic Scholar to improve rate limits. Get at https://www.semanticscholar.org/product/api

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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.

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.

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.

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: /downloads). Returns: Path to the downloaded PDF, or an error message.

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: /downloads). Returns: The extracted text content, or an error message.

cache_clearA

Clear all cached search results.

Returns: Dict with number of cleared entries.

library_searchA

Search the local paper library (SQLite) by keyword.

Searches across title, authors, and abstract of all previously fetched papers. This is an offline operation — no network calls are made.

Args: keyword: Search keyword (matched against title/authors/abstract). limit: Maximum number of results to return (default: 50). Returns: List of matching paper records from the local library.

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.

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.

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.

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.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/czwziy/paper-toolkit-mcp'

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