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 | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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