Scholar MCP
FastMCP server for scholarly papers, patents, books and standards with docling PDF conversion
Connector by pvliesdonk · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/pvliesdonk-scholar-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 15 read · 2 write · 0 delete · 1 not yet classified
- Secrets
- 6 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 18
Read from the source code; the running server may list different tools.
Read 15 · Look things up without changing anything.
batch_resolveenrich_paperfind_bridge_papersgenerate_citationsget_authorget_book_excerptget_citation_graphget_citationsget_paperget_patentget_referencesget_sync_status
Show 3 more tools
recommend_booksrecommend_paperssearch_papers
Write 2 · Create, change, send or run things.
fetch_and_convertfetch_paper_pdf
Not yet classified 1 · We could not tell from the name and description.
wrapper
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
SCHOLAR_GITHUB_TOKENSCHOLAR_MCP_EPO_CONSUMER_KEYSCHOLAR_MCP_EPO_CONSUMER_SECRETSCHOLAR_MCP_GOOGLE_BOOKS_API_KEYSCHOLAR_MCP_S2_API_KEYSCHOLAR_MCP_VLM_API_KEY
Other settings (environment variables or headers).
FASTMCP_ENABLE_RICH_LOGGINGFASTMCP_LOG_LEVELSCHOLAR_MCP_CACHE_DIRSCHOLAR_MCP_CONTACT_EMAILSCHOLAR_MCP_DOCLING_URLSCHOLAR_MCP_INSTANCE_DESCRIPTIONSCHOLAR_MCP_INSTRUCTIONSSCHOLAR_MCP_INSTRUCTIONS_EXTRASCHOLAR_MCP_JOBS_MAX_PER_SUBJECTSCHOLAR_MCP_JOBS_RESULT_TTL_SSCHOLAR_MCP_JOBS_SOFT_DEADLINE_SSCHOLAR_MCP_KV_STORE_URL
Show 6 more settings
SCHOLAR_MCP_READ_ONLYSCHOLAR_MCP_SERVER_NAMESCHOLAR_MCP_TOOLS_ALLOWSCHOLAR_MCP_TOOLS_DENYSCHOLAR_MCP_VLM_API_URLSCHOLAR_MCP_VLM_MODEL
Network hosts it talks to 29
api.crossref.org· found in codeapi.github.com· found in codeapi.openalex.org· found in codeapi.semanticscholar.org· found in codeapi.unpaywall.org· found in codearxiv.org· found in codecommoncriteriaportal.org· found in codecovers.openlibrary.org· found in codedevelopers.epo.org· found in codedocs.astral.sh· found in codedoi.org· found in codeepo.org· found in codeetsi.org· found in codeforms.epo.org· found in codegithub.com· found in codegofastmcp.com· found in codegoogleapis.com· found in codeloc.gov· found in codencbi.nlm.nih.gov· found in codeopenalex.org· found in codeopenlibrary.org· found in codeops.epo.org· found in codepubmed.ncbi.nlm.nih.gov· found in codepvliesdonk.github.io· found in coderaw.githubusercontent.com· found in codesemanticscholar.org· found in codevale.sh· found in codeworldcat.org· found in codeworldwide.espacenet.com· found in code
Files it touches
/etc/scholar-mcp/tokens.toml/opt/scholar-mcp
Tools (18)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
batch_resolveBatch Resolve Identifiersread-onlyResolve a list of paper, patent, or book identifiers to full records. Uses the S2 batch endpoint for paper IDs/DOIs, with OpenAlex fallback. An OpenAlex-sourced paper (``"source": "openalex"``) has the same keys as an S2 one for the requested ``fields``, with ``paperId`` null. Patent numbers (e.g. EP1234567A1) are auto-detected and resolved via the EPO OPS API when configured. ISBNs (prefixed ``ISBN:``) are resolved via Open Library. Identifiers fan out across three upstreams, so a large batch runs long and is then handed back as a job handle to poll with ``get_job_result`` rather than the r…
enrich_paperEnrich Paperread-onlyFetch OpenAlex metadata to supplement Semantic Scholar data. Resolves the paper's DOI from S2, then queries OpenAlex for the requested enrichment fields. Results are cached for 30 days. A cached record answers immediately. Should the lookup run long it continues in the background and returns a job handle to poll with ``get_job_result``. Args: identifier: S2 paper ID or DOI (prefix ``DOI:``). fields: One or more of: affiliations, funders, oa_status, concepts. service: Injected service. Returns: A mapping with the requested fields plus ``doi``, or an error mapping.
fetch_and_convertFetch and Convert PaperResolve a paper, download its PDF, and convert to Markdown. Tries the Semantic Scholar open-access URL first, then alternative sources (ArXiv, PubMed Central, Unpaywall). Each stage fails gracefully: metadata is always returned if the paper resolves, even if PDF download or conversion fails. The full pipeline typically takes 1-5 minutes, so expect a background job handle rather than an inline result. Tip: start with ``use_vlm=false`` (the default). Standard conversion handles most papers well. Only retry with ``use_vlm=true`` when the result has garbled formulas or missing figure descriptio…
fetch_paper_pdfFetch Paper PDFDownload the PDF of a paper. Tries the Semantic Scholar open-access URL first. When that is unavailable, automatically checks alternative sources: ArXiv (from externalIds), PubMed Central, and Unpaywall (by DOI, requires ``SCHOLAR_MCP_CONTACT_EMAIL``). Skips download if the file already exists locally, which answers immediately; a fresh download usually takes 10-30 seconds and may be returned as a background job handle instead. Args: identifier: Paper identifier (DOI, S2 ID, ARXIV:, etc.). Returns: ``{"path": "...", "source": "..."}`` on success, or a structured error dict. The…
find_bridge_papersFind Bridge Papersread-onlyFind the shortest citation path between two papers. Uses BFS over the citation/reference graph. Uses cached citation and reference lists to minimise API calls. The search walks outward one rate-limited request per node, so it commonly runs long and returns a job handle to poll with ``get_job_result`` rather than the path itself. A Semantic Scholar throttle defers the same search. Poll the job handle; the resumed search does not mark the throttled request as partial. A failed upstream request does not abort the search. When one happens, ``partial`` is true, ``failed_requests`` counts them, …
generate_citationsGenerate Citationsread-onlyGenerate formatted citations for one or more papers. Resolves papers via Semantic Scholar, optionally enriches with OpenAlex metadata, and formats as BibTeX, CSL-JSON, or RIS. Enrichment fans out per paper, so a large batch can take a while; such a call answers with a job handle to poll using ``get_job_result`` instead of the citations themselves. Args: paper_ids: List of paper identifiers (S2 IDs, DOIs, arXiv IDs, etc.). Maximum 100. citation_format: Output format — bibtex, csl-json, or ris. enrich: If True, attempt OpenAlex enrichment for missing venue data whe…
get_authorGet Authorread-onlyFetch author profile and publications, or search by name. If *identifier* looks like a numeric S2 author ID, fetches the author directly. Otherwise performs a name search and returns up to 5 candidates for disambiguation. A direct lookup returns one page of publications, ``limit`` long from ``offset``; ``next_offset`` is present when more follow. Semantic Scholar can list fewer publications than ``paperCount``, so the last page may end short of that count. Answers directly in normal use. Should the call run long it continues in the background and returns a job handle to poll with ``get_job_…
get_book_excerptGet Book Excerptread-onlyGet a book excerpt and preview info from Google Books. Returns the publisher description, text snippet, and a link to the Google Books preview page. Google Books does not expose full chapter text via API -- the excerpt is a publisher-provided summary and/or search snippet. An ``error`` of ``not_found`` means Google Books answered and has no such volume: stop asking about that ISBN. A lookup that never got an answer says so instead, as ``rate_limited`` (with ``retryable``) or ``upstream_error``, and is worth retrying -- the book may well exist. Args: isbn: ISBN-10 or ISBN-13. Returns: …
get_citation_graphGet Citation Graphread-onlyTraverse the citation graph from one or more seed papers. Performs BFS up to *depth* hops. Returns nodes (paper records) and directed edges. Hard-caps at *max_nodes* to prevent runaway expansion. Traversal makes one rate-limited request per node, so anything past a shallow, narrow graph runs long: expect a job handle to poll with ``get_job_result`` rather than the graph itself. A Semantic Scholar throttle defers the same walk. Poll the job handle; the resumed graph does not mark the throttled request as partial. A failed upstream request does not abort the walk. When one happens, ``stats.p…
get_citationsGet Citationsread-onlyFetch papers that cite the given paper (forward citations). Returns at most 1000 citing papers per call; a larger ``limit`` is capped at 1000, so page further with ``offset``. Paging deeply to satisfy ``min_citations`` can run long; such a call continues in the background and returns a job handle to poll with ``get_job_result``. Args: identifier: Paper identifier (DOI, S2 ID, ARXIV:, etc.). fields: Field set preset for returned paper records. limit: Max results (pagination, max 1000). offset: Pagination offset. year_start: Filter citing papers published from this year. …
get_paperGet Paperread-onlyFetch full metadata for a single paper. A cached paper answers immediately. Otherwise the record is fetched and enriched; should that run long it continues in the background and returns a job handle to poll with ``get_job_result``. Args: identifier: Paper identifier — DOI, S2 paper ID, arXiv ID (prefix with ``ARXIV:``), ACM ID (``ACM:``), or PubMed ID (``PMID:``). service: Injected service. Returns: A mapping with full paper metadata, or ``{"error": "not_found", "identifier": "..."}`` if not found.
get_patentGet Patentread-onlyGet detailed information about a single patent. Accepts patent numbers in any format (EP, WO, US, etc.). By default returns bibliographic data only -- use the sections parameter to request additional detail (claims, description, family members, legal status, cited references). When sections includes 'citations', non-patent literature references are resolved to Semantic Scholar papers on a best-effort basis; unresolved references are returned as raw citation strings. When EPO reports itself busy this waits for it to clear, which can take a few minutes, so the call may answer with a job handle…
get_referencesGet Referencesread-onlyFetch papers referenced by the given paper (backward references). Returns at most 1000 references per call; a larger ``limit`` is capped at 1000, so page further with ``offset``. Should the call run long it continues in the background and returns a job handle to poll with ``get_job_result``. Args: identifier: Paper identifier (DOI, S2 ID, ARXIV:, etc.). fields: Field set preset for returned paper records. limit: Max results (max 1000). offset: Pagination offset. Returns: JSON with ``data`` list of ``{"citedPaper": {...}}`` dicts.
get_sync_statusGet Sync Statusread-onlyReport the last standards sync run for each standards body. Returns {"runs": [...]}, one row per body with body, upstream_ref, added, updated, unchanged, withdrawn, errors (non-fatal error strings from the latest run; empty on success), started_at and finished_at (Unix seconds). runs is empty when no sync has run yet.
recommend_booksRecommend Booksread-onlyRecommend books for a subject via Open Library. Uses the Open Library subject API to find popular books on a topic, sorted by edition count (a proxy for popularity). Args: subject: Subject or topic (e.g. "machine learning", "algorithms", "computer vision"). limit: Maximum results to return (max 50). Returns: JSON list of book records sorted by popularity.
Show 3 more tools
recommend_papersRecommend Papersread-onlyRecommend papers based on positive (and optionally negative) examples. Returns at most 500 recommendations; a larger ``limit`` is capped at 500. Answers directly in normal use. Should the call run long it continues in the background and returns a job handle to poll with ``get_job_result``. Args: positive_ids: 1-5 S2 paper IDs to use as positive examples. negative_ids: Optional S2 paper IDs to steer away from. limit: Number of recommendations to return (max 500). fields: Field set preset for returned records. service: Injected service. Returns: ``{"recommendations": …
search_papersSearch Papersread-onlySearch Semantic Scholar for papers matching a query. Usually completes in a few seconds. Returns at most 100 papers per call; a larger ``limit`` is capped at 100, so page further with ``offset``. Answers directly in normal use. Should the call run long it continues in the background and returns a job handle to poll with ``get_job_result``. Args: query: Keyword or semantic search query. fields: Field set preset — compact, standard, or full. limit: Maximum results to return (max 100). offset: Pagination offset. year_start: Earliest publication year (inclusive). year_en…
wrapper
Signals
- Stars
- 2
- Forks
- 1
- Open issues
- 84
- Weekly downloads
- 122
- Last commit
- Sep 30, 2026 (29 days ago)
- Last release
- Sep 11, 2026 (1 month ago)
- Last package publish
- Sep 11, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.pvliesdonk/scholar-mcp- Version
- 2.0.0
- Auth
- API key
- Packages
- pypi pvliesdonk-scholar-mcpoci
ghcr.io/pvliesdonk/scholar-mcp:v2.0.0 - License
- MIT
- Repository
- github.com/pvliesdonk/scholar-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from pvliesdonk
- 0.661score
Markdown Vault MCP
pvliesdonk
Generic markdown vault MCP with hybrid search
ConnectorAFreshness: ARemoteLocal★ 35↓ 233/wkClaude Code +5 - 0.620score
Paperless MCP
pvliesdonk
Paperless-NGX over MCP: search, read, upload and tag documents; manage correspondents and types.
ConnectorAFreshness: ARemoteLocal★ 1↓ 111/wkClaude Code +5 - 0.548score
Image Generation MCP Server
pvliesdonk
MCP server for AI image generation via OpenAI, Stable Diffusion (SD WebUI), or placeholders.
ConnectorBFreshness: BRemoteLocal★ 1↓ 138/wkClaude Code +5 - 0.493score
Logo.dev MCP
pvliesdonk
Look up company logos and brand data via the logo.dev API.
ConnectorCFreshness: CRemoteLocalRead-only↓ 38/wkClaude Code +5
Cite this page
Scholar MCP. Agent Mart. https://agentmart.dev/connectors/pvliesdonk-scholar-mcp (last updated 2026-10-24)