scholar-toolkit-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| paper_toolkit_mcp_ENV_FILE | No | Custom path to a .env file to load environment variables from. | |
| paper_toolkit_mcp_ACM_API_KEY | No | Optional API key to activate ACM Digital Library connector. See https://libraries.acm.org/digital-library/acm-open | |
| paper_toolkit_mcp_CORE_API_KEY | No | Free API key from CORE (recommended). Obtain at https://core.ac.uk/services/api | |
| paper_toolkit_mcp_DOAJ_API_KEY | No | Optional API key for DOAJ to raise hourly rate limit. Get at https://doaj.org/apply-for-api-key/ | |
| paper_toolkit_mcp_IEEE_API_KEY | No | Optional API key to activate IEEE Xplore connector. Free at https://developer.ieee.org/ | |
| paper_toolkit_mcp_UNPAYWALL_EMAIL | No | Email required for Unpaywall (required for Unpaywall to work). Any valid email; register at https://unpaywall.org/products/api | |
| paper_toolkit_mcp_ZENODO_ACCESS_TOKEN | No | Optional access token for Zenodo private records. Get at https://zenodo.org/account/settings/applications/ | |
| paper_toolkit_mcp_GOOGLE_SCHOLAR_PROXY_URL | No | Optional proxy URL to bypass Google Scholar bot-detection. Use your HTTP/HTTPS proxy URL. | |
| paper_toolkit_mcp_SEMANTIC_SCHOLAR_API_KEY | No | Optional API key for Semantic Scholar to improve rate limits. Get at https://www.semanticscholar.org/product/api |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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:
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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
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.
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.
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.
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.