Model Context Protocol (MCP) server for deep academic research with integration to Scopus, OpenAlex, Unpaywall, Semantic Scholar, Sci-Hub, LibGen, Google Books, and OpenLibrary
27 tools with consistent verb-noun naming (search_, get_, resolve_). All have descriptions (10-300 chars, mostly adequate). Input schemas present with types and descriptions for all tools. However, output schemas are entirely undocumented, LLMs cannot predict return structure. Error handling is minimal; most tools return generic error strings without recovery guidance. No tool annotations (readOnlyHint, destructiveHint). Parameter descriptions lack constraints (enums, ranges, formats). Many tools accept free-form strings where enums would prevent hallucination (e.g., sort_by, style, direction). No pagination documented despite tools returning lists. Composition is reasonable (single responsibility per tool), but chaining IDs are not consistently returned.
Autocomplete author names using OpenAlex. Useful for interactive author selection.
Retrieve metadata for multiple papers in a single batch request using OpenAlex. Accepts a list of OpenAlex work IDs or DOIs.
Format a paper citation in various styles (APA, MLA, Chicago, Harvard) using CrossRef API.
Get author profile from Semantic Scholar including h-index and publication count.
Retrieves a comprehensive author profile including h-index, i10-index, citation counts, and research interests. Accepts Scopus Author ID, ORCID, or OpenAlex Author ID.
Retrieve BibTeX citation format for a paper using CrossRef API. Accepts DOI.
Get detailed information about a book from Google Books including preview links and availability.
Output schemas completely undocumented. No tool declares what fields it returns, forcing LLMs to guess structure and parse unstructured text responses.
Enum constraints missing for parameters accepting known values. sort_by, direction, style, and use_scopus should be enums, not free-form strings, to prevent LLM hallucination.
Error handling lacks recovery guidance. Tools return generic error strings (e.g., 'Error searching papers: {str(e)}') without telling LLM what to do next or whether to retry.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Get detailed information about a book from OpenLibrary including ISBN, publication details, and availability.
Tracks lineage by retrieving a paper's citations. Provide a DOI (10.xxx) or OpenAlex ID (Wxxx). Set direction="references" to see who this paper cites. Set direction="citations" to see who cited this paper recently.
Extracts full text from an Open Access PDF or HTML page given its URL. This is best used after finding an OA PDF link from search_papers_openalex. Use start_page/end_page (1-indexed) to extract only specific pages from long PDFs. Warning: This can return a very large string.
Multimodal Vision Tool. Downloads a PDF and renders the specified number of pages identically into images for the AI to 'look at'. Use this if the user asks you to analyze a graph, table, format, or layout in the paper. If the text extractor doesn't capture formatting, you can use this tool to 'see' the actual PDF! Returns a sequence of texts and images (multimodal format natively parsed). Warning: High token/vision capacity used per page. Default 3 pages.
Get detailed metadata for a paper from Semantic Scholar using paper ID or DOI.
Get detailed metadata and the full abstract for a specific paper. If the paper_id looks like a Scopus ID (e.g., SCOPUS_ID:85123) or a DOI (10.xxx), it uses Scopus. Returns formatted detailed text.
Find papers related to a given paper using OpenAlex. Accepts OpenAlex work ID or DOI.
Checks the Unpaywall database using a DOI to find a legal Open Access PDF link. If found, returns the URL. If not, returns that it's behind a strict paywall.
Resolves a LibGen book/paper entry to get the direct download link.
Attempts to resolve a paper's PDF link via Sci-Hub mirrors. Accepts DOI or paper title. Returns the direct PDF URL if found.
Retrieve all works/publications by a specific author using OpenAlex.
Search for an author by their ORCID identifier using OpenAlex.
Search for authors by name using OpenAlex. Returns a list of matching authors with their profiles.
Search for books using Google Books API. Returns book metadata and preview links.
Search for books using OpenLibrary API. Returns book metadata and availability information.
Search for books and papers on LibGen mirrors. Returns download links if available.
Search papers using Semantic Scholar API. Returns brief metadata with strict 1 request/second rate limiting.
Searches the Scopus library by accepting standard textual querying or advanced Scopus Boolean Syntax (e.g. `TITLE-ABS-KEY(artificial intelligence) AND PUBYEAR > 2020`). Returns metadata summaries. Set use_scopus=False to use OpenAlex which guarantees Open Access PDF links but might have less robust abstracts in standard search. sort_by: 'relevance' (default), 'cited_by_count' (most cited first), 'publication_year' (newest first). Only works with OpenAlex. Returns a formatted string of results.
Search for papers by title using Unpaywall to find Open Access versions.
Search for research topics using OpenAlex. Returns topic metadata including subfield, field, and domain classifications.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All 27 tools are read-only but lack explicit annotation, forcing LLMs to infer safety from descriptions.
Pagination not documented. Tools returning lists (search_papers_tool, search_authors_tool, batch_get_papers_tool) accept limit but no offset/cursor or total_count, risking context window overflow.