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.

Args: query: Search query string. max_results_per_source: Max results to fetch from each selected source. sources: Comma-separated source names or 'all'. Available: arxiv,pubmed,biorxiv,medrxiv,google_scholar,iacr,semantic,crossref,openalex,pmc,core,europepmc,dblp,openaire,citeseerx,doaj,base,zenodo,hal,ssrn,unpaywall year: Optional year filter for Semantic Scholar only. Returns: Aggregated dictionary with per-source stats, errors, and deduplicated papers.

search_arxivA

Search academic papers from arXiv.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). sort_by: Sort criterion — 'relevance', 'submittedDate', or 'lastUpdatedDate' (default: 'relevance'). sort_order: Sort direction — 'descending' or 'ascending' (default: 'descending'). Returns: List of paper metadata in dictionary format.

search_pubmedA

Search academic papers from PubMed.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). sort: Sort order — 'relevance' or 'pub_date' (default: 'relevance'). Returns: List of paper metadata in dictionary format.

search_biorxivA

Search academic papers from bioRxiv.

Note: bioRxiv API filters by category name within the last 30 days, not full-text keyword search. Use a category keyword such as 'bioinformatics', 'neuroscience', 'cell biology', etc.

Args: query: Category name to filter by (e.g., 'bioinformatics', 'neuroscience'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_medrxivA

Search academic papers from medRxiv.

Note: medRxiv API filters by category name within the last 30 days, not full-text keyword search. Use a category keyword such as 'infectious_diseases', 'cardiovascular_medicine', 'oncology', etc.

Args: query: Category name to filter by (e.g., 'infectious_diseases', 'oncology'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_google_scholarA

Search academic papers from Google Scholar.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_iacrA

Search academic papers from IACR ePrint Archive.

Args: query: Search query string (e.g., 'cryptography', 'secret sharing'). max_results: Maximum number of papers to return (default: 10). fetch_details: Whether to fetch detailed information for each paper (default: True). Returns: List of paper metadata in dictionary format.

download_arxivA

Download PDF of an arXiv paper.

Args: paper_id: arXiv paper ID (e.g., '2106.12345'). save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.

download_pubmedC

Attempt to download PDF of a PubMed paper.

Args: paper_id: PubMed ID (PMID). save_path: Directory to save the PDF (default: './downloads'). Returns: str: Message indicating that direct PDF download is not supported.

download_biorxivA

Download PDF of a bioRxiv paper.

Args: paper_id: bioRxiv DOI. save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.

download_medrxivA

Download PDF of a medRxiv paper.

Args: paper_id: medRxiv DOI. save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.

download_iacrA

Download PDF of an IACR ePrint paper.

Args: paper_id: IACR paper ID (e.g., '2009/101'). save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.

read_arxiv_paperA

Read and extract text content from an arXiv paper PDF.

Args: paper_id: arXiv paper ID (e.g., '2106.12345'). save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.

read_pubmed_paperC

Read and extract text content from a PubMed paper.

Args: paper_id: PubMed ID (PMID). save_path: Directory where the PDF would be saved (unused). Returns: str: Message indicating that direct paper reading is not supported.

read_biorxiv_paperA

Read and extract text content from a bioRxiv paper PDF.

Args: paper_id: bioRxiv DOI. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.

read_medrxiv_paperA

Read and extract text content from a medRxiv paper PDF.

Args: paper_id: medRxiv DOI. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.

read_iacr_paperA

Read and extract text content from an IACR ePrint paper PDF.

Args: paper_id: IACR paper ID (e.g., '2009/101'). save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.

search_semanticA

Search academic papers from Semantic Scholar.

Args: query: Search query string (e.g., 'machine learning'). year: Optional year filter (e.g., '2019', '2016-2020', '2010-', '-2015'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

download_semanticA

Download PDF of a Semantic Scholar paper.

Args: paper_id: Semantic Scholar paper ID, Paper identifier in one of the following formats: - Semantic Scholar ID (e.g., "649def34f8be52c8b66281af98ae884c09aef38b") - DOI: (e.g., "DOI:10.18653/v1/N18-3011") - ARXIV: (e.g., "ARXIV:2106.15928") - MAG: (e.g., "MAG:112218234") - ACL: (e.g., "ACL:W12-3903") - PMID: (e.g., "PMID:19872477") - PMCID: (e.g., "PMCID:2323736") - URL: (e.g., "URL:https://arxiv.org/abs/2106.15928v1") save_path: Directory to save the PDF (default: './downloads'). Returns: Path to the downloaded PDF file.

read_semantic_paperC

Read and extract text content from a Semantic Scholar paper.

Args: paper_id: Semantic Scholar paper ID, Paper identifier in one of the following formats: - Semantic Scholar ID (e.g., "649def34f8be52c8b66281af98ae884c09aef38b") - DOI: (e.g., "DOI:10.18653/v1/N18-3011") - ARXIV: (e.g., "ARXIV:2106.15928") - MAG: (e.g., "MAG:112218234") - ACL: (e.g., "ACL:W12-3903") - PMID: (e.g., "PMID:19872477") - PMCID: (e.g., "PMCID:2323736") - URL: (e.g., "URL:https://arxiv.org/abs/2106.15928v1") save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: The extracted text content of the paper.

search_crossrefA

Search academic papers from CrossRef database.

CrossRef is a scholarly infrastructure organization that provides persistent identifiers (DOIs) for scholarly content and metadata. It's one of the largest citation databases covering millions of academic papers, journals, books, and other scholarly content.

Args: query: Search query string (e.g., 'machine learning', 'climate change'). max_results: Maximum number of papers to return (default: 10, max: 1000). filter: CrossRef filter string (e.g., 'has-full-text:true,from-pub-date:2020'). sort: Sort field ('relevance', 'published', 'updated', 'deposited', etc.). order: Sort order ('asc' or 'desc'). Returns: List of paper metadata in dictionary format.

get_crossref_paper_by_doiA

Get a specific paper from CrossRef by its DOI.

Args: doi: Digital Object Identifier (e.g., '10.1038/nature12373'). Returns: Paper metadata in dictionary format, or empty dict if not found.

Example: get_crossref_paper_by_doi("10.1038/nature12373")

download_crossrefA

Attempt to download PDF of a CrossRef paper.

Args: paper_id: CrossRef DOI (e.g., '10.1038/nature12373'). save_path: Directory to save the PDF (default: './downloads'). Returns: str: Message indicating that direct PDF download is not supported.

Note: CrossRef is a citation database and doesn't provide direct PDF downloads. Use the DOI to access the paper through the publisher's website.

download_scihubB

Download paper PDF via Sci-Hub (optional fallback connector).

Args: identifier: DOI, title, PMID, or paper URL. save_path: Directory to save the PDF. base_url: Sci-Hub mirror URL. Returns: Downloaded PDF path on success; error message on failure.

download_with_fallbackA

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

Args: source: Source name (arxiv, biorxiv, medrxiv, iacr, semantic, crossref, pubmed, pmc, core, europepmc, citeseerx, doaj, base, zenodo, hal, ssrn). 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.

read_crossref_paperC

Attempt to read and extract text content from a CrossRef paper.

Args: paper_id: CrossRef DOI (e.g., '10.1038/nature12373'). save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: Message indicating that direct paper reading is not supported.

Note: CrossRef is a citation database and doesn't provide direct paper content. Use the DOI to access the paper through the publisher's website.

search_openalexA

Search academic papers from OpenAlex.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_pmcC

Search academic papers from PubMed Central (PMC).

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_coreA

Search academic papers from CORE.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_europepmcB

Search academic papers from Europe PMC.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_dblpA

Search academic papers from dblp computer science bibliography.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_openaireA

Search academic papers from OpenAIRE European Open Access infrastructure.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_citeseerxA

Search academic papers from CiteSeerX digital library.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_doajA

Search academic papers from DOAJ (Directory of Open Access Journals).

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_baseB

Search academic papers from BASE (Bielefeld Academic Search Engine).

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_zenodoA

Search academic papers from Zenodo open repository.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_halA

Search academic papers from HAL open archive.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_ssrnA

Search metadata records from SSRN.

Note: SSRN connector is metadata-only and does not support direct PDF download.

Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.

search_unpaywallA

Lookup a DOI via Unpaywall and return OA metadata.

Unpaywall is DOI-centric and does not support generic keyword search. This tool extracts the first DOI from query and returns at most one record.

Args: query: DOI string or text containing a DOI. max_results: Kept for API consistency; Unpaywall returns max 1 record. Returns: List with one paper metadata dict when DOI is resolvable, else empty list.

read_dblp_paperA

Attempt to read and extract text content from a dblp paper.

Note: dblp doesn't provide direct paper content access. This function returns an informative message.

Args: paper_id: dblp paper identifier. save_path: Directory where the PDF would be saved (unused). Returns: str: Message indicating that direct paper reading is not supported.

download_dblpB

Download PDF for a paper from dblp.

Note: dblp doesn't provide direct PDF access. This function returns an informative message.

Args: paper_id: dblp paper identifier. save_path: Directory to save the PDF (default: './downloads'). Returns: str: Message indicating that direct PDF download is not supported.

read_openaire_paperC

Attempt to read and extract text content from an OpenAIRE paper.

Args: paper_id: OpenAIRE paper identifier. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: Extracted text or error message.

download_openaireA

Download PDF for a paper from OpenAIRE.

Args: paper_id: OpenAIRE paper identifier. save_path: Directory to save the PDF (default: './downloads'). Returns: str: Path to downloaded PDF or error message.

read_citeseerx_paperB

Read and extract text content from a CiteSeerX paper.

Args: paper_id: CiteSeerX paper identifier. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: Extracted text or fallback abstract/error message.

download_citeseerxC

Download PDF for a paper from CiteSeerX.

Args: paper_id: CiteSeerX paper identifier. save_path: Directory to save the PDF (default: './downloads'). Returns: str: Path to downloaded PDF or error message.

read_doaj_paperB

Read and extract text content from a DOAJ paper.

Args: paper_id: DOAJ paper identifier. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: Extracted text content.

download_doajA

Download PDF for a paper from DOAJ.

Args: paper_id: DOAJ paper identifier. save_path: Directory to save the PDF (default: './downloads'). Returns: str: Path to downloaded PDF.

read_base_paperA

Read and extract text content from a BASE paper.

Args: paper_id: BASE paper identifier. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: Extracted text content.

download_baseA

Download PDF for a paper from BASE.

Args: paper_id: BASE paper identifier. save_path: Directory to save the PDF (default: './downloads'). Returns: str: Path to downloaded PDF.

read_zenodo_paperB

Read and extract text content from a Zenodo paper.

Args: paper_id: Zenodo paper identifier. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: Extracted text content.

download_zenodoA

Download PDF for a paper from Zenodo.

Args: paper_id: Zenodo paper identifier. save_path: Directory to save the PDF (default: './downloads'). Returns: str: Path to downloaded PDF.

read_hal_paperA

Read and extract text content from a HAL paper.

Args: paper_id: HAL paper identifier. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: Extracted text content.

download_halB

Download PDF for a paper from HAL.

Args: paper_id: HAL paper identifier. save_path: Directory to save the PDF (default: './downloads'). Returns: str: Path to downloaded PDF.

read_ssrn_paperC

Read paper content from SSRN.

Note: SSRN connector is metadata-only and read is not supported.

Args: paper_id: SSRN paper identifier. save_path: Directory where the PDF is/will be saved (unused). Returns: str: Error message from metadata-only SSRN connector.

download_ssrnC

Download PDF for a paper from SSRN.

Note: SSRN connector is metadata-only and download is not supported.

Args: paper_id: SSRN paper identifier. save_path: Directory to save the PDF (unused). Returns: str: Error message from metadata-only SSRN connector.

read_openalex_paperB

Attempt to read and extract text content from an OpenAlex paper.

Args: paper_id: OpenAlex paper ID. save_path: Directory where the PDF is/will be saved (default: './downloads'). Returns: str: Message indicating that direct paper reading is not supported natively.

download_openalexB

Download PDF for a paper from OpenAlex.

Args: paper_id: OpenAlex paper ID. save_path: Directory to save the PDF (default: './downloads'). Returns: str: Error message, typically OpenAlex relies on extracted pdf_url instead of direct downloads.

process_manuscriptA

Process a Markdown manuscript with citation placeholders and generate formatted outputs.

Supported placeholder formats:

  • [@doi:10.1234/example]

  • [@pmid:12345678]

  • [@arxiv:2106.12345]

  • [@title:Paper Title Here]

Args: markdown_path: Path to the input Markdown file. citation_style: Citation style for reference list (gb7714, apa, ieee). output_dir: Output directory (default: same as input file). generate_docx: Whether to generate Word document via pandoc. generate_bibtex: Whether to generate BibTeX file. generate_ris: Whether to generate RIS file for Zotero import. cache_ttl_hours: Cache TTL in hours for search results.

Returns: Dict with paths to generated files and processing report.

get_paper_metadataB

Get full metadata for a single paper by DOI, PMID, or arXiv ID.

Args: identifier: Paper identifier (e.g., 'doi:10.1038/nature12373', 'pmid:12345', 'arxiv:2106.12345'). cache_ttl_hours: Cache TTL in hours.

Returns: Paper metadata dict or error.

export_referencesA

Export references for multiple papers in the specified format.

Args: identifiers: List of paper identifiers (e.g., ['doi:10.1234', 'pmid:5678']). format: Output format (bibtex, ris, text). style: Citation style for text format (gb7714, apa, ieee). output_path: Optional file path to save output. cache_ttl_hours: Cache TTL in hours.

Returns: Formatted references string or saved file path.

cache_listA

List all cached search results.

Returns: Dict with cache statistics and list of cached items.

cache_clearA

Clear all cached search results.

Returns: Dict with number of cleared entries.

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