ScholarFetch

io.github.laibnizPublished by GitHub account laibnizv0.2.1Updated Oct 27, 2026

Multi-engine scholarly research server for search, traversal, full text, and reading lists.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & Memory

Overview

AI-generated overview

Multi-engine scholarly research server that lets an assistant search papers, traverse authors and references, read abstracts and full text, and export reading…

What you can do
  • Search papers by keywords, DOI or person name across several scholarly engines
  • Resolve ambiguous author names and expand an author into a filtered paper list
  • Read abstracts and machine-readable full text, and expand a paper into its references
  • Save papers to a named in-memory reading list, list, remove or clear entries
  • Export the saved set as citations (Harvard, APA, IEEE), abstracts, BibTeX or a full-text corpus
When to use it
Useful when an assistant has to do literature research: starting from a topic, DOI or author, following references across the citation graph, and assembling a curated corpus for later synthesis or citation formatting.
Requirements
Remote endpoint at the listed host, or a local Python install with the console scripts. Provider credentials are read from environment variables such as ELSEVIER_API_KEY, ELSEVIER_INSTTOKEN, SPRINGER_META_API_KEY and SPRINGER_OPENACCESS_API_KEY, typically from a .scholarfetch.env file. Provider entitlements and rate limits apply.
Before you install
Saved reading lists live in memory on the server for one session, so they are lost when the session ends. Full-text retrieval depends on provider entitlements and open-access availability. Credentials are supplied through environment variables, not tool arguments, so keep the env file private.

Installation

In SourceWeft

  1. Open ScholarFetch in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.laibniz%2Fscholarfetch/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "scholarfetch": {
      "type": "http",
      "url": "https://laibniz-scholarfetch-web.hf.space/mcp/"
    }
  }
}

README

ScholarFetch

[ScholarFetch Logo]

ScholarFetch is a multi-engine academic research environment for:

  • terminal-first literature exploration
  • MCP-powered agent workflows
  • building curated reading lists and exportable research corpora

It combines:

  • a rich interactive CLI for humans
  • a classic MCP server (stdio)
  • a FastMCP server (stdio, sse, streamable-http)

The core idea is simple: start from keywords, DOI, or authors, traverse papers and references, inspect abstracts and full text, save what matters, then export a compact corpus for synthesis.

What ScholarFetch Does

  • Searches across multiple scholarly engines in parallel
  • Resolves ambiguous author identities and expands author paper lists
  • Traverses references as first-class research nodes
  • Retrieves abstracts and machine-readable full text when available
  • Tracks a saved paper set during an interactive research session
  • Exports citations, abstracts, BibTeX, or full-text corpora
  • Exposes the same research workflow to MCP agents
  • Maintains stateful saved-paper collections inside one MCP session

Engines

  • Elsevier (Scopus / Abstract / Article retrieval)
  • OpenAlex
  • Crossref
  • arXiv
  • Europe PMC
  • Springer Nature (metadata + open access)
  • Semantic Scholar (DOI enrichment path)

Installation

bash
git clone https://github.com/laibniz/scholarfetch.gitcd scholarfetchpython3 -m venv .venvsource .venv/bin/activatepip install -e .scholarfetch

Console scripts:

  • scholarfetch
  • scholarfetch-mcp
  • scholarfetch-fastmcp

Alternative:

bash
python3 scholarfetch.py

Credentials

ScholarFetch loads provider credentials server-side / client-side from environment.

Default env file:

  • .scholarfetch.env

Typical variables:

bash
ELSEVIER_API_KEY=...ELSEVIER_INSTTOKEN=...SPRINGER_META_API_KEY=...SPRINGER_OPENACCESS_API_KEY=...

Notes:

  • ELSEVIER_INSTTOKEN is optional
  • provider entitlements and rate limits still apply
  • MCP tools do not accept API keys in tool arguments

CLI Research Workflow

ScholarFetch CLI is designed for research traversal.

Typical flow:

  1. Start from a topic, DOI, or author.
  2. Inspect papers.
  3. Read abstracts or full text.
  4. Expand references.
  5. Jump to related authors.
  6. Save promising papers.
  7. Export a corpus for downstream work.

Example:

text
/search graph neural networks/author Albert Einstein/papers 1 has:abstract/article 1/refs 1/saved/export fulltext dummy corpus.txt

CLI Features

  • Interactive picker with tree navigation
  • Breadcrumbs for current research position
  • Action bar for OPEN, ABSTRACT, TEXT, REFS, and AUTHOR
  • Backspace to go to parent node
  • Esc to return to prompt
  • S to save a paper from paper lists or reference lists
  • X to remove from the saved list
  • AUTHOR action from a paper now lets you select:
    • a single author
    • ALL AUTHORS
  • Reference lists behave like paper lists:
    • open
    • abstract
    • text
    • refs
    • author
  • Automatic paper availability hints:
    • abstract availability
    • full-text availability
  • Progress feedback for expensive transitions
  • Interruptible reference preview building with partial results kept

Core CLI Commands

  • /search <keywords|doi|person name>
  • /author <name>
  • /papers <author name|index> [filters]
  • /doi <doi>
  • /open <index>
  • /abstract <doi|index>
  • /article <doi|index>
  • /refs <doi|index>
  • /ref <index>
  • /saved
  • /export [format style path ...]
  • /import [path]
  • /pick [mode]
  • /config
  • /engines
  • /help

Paper Filters

Use with /papers:

  • year>=YYYY, year<=YYYY, year=YYYY
  • has:abstract, has:doi, has:pdf, has:fulltext
  • venue:<text>, title:<text>, doi:<text>

Examples:

text
/papers 1 year>=2020 has:abstract/papers 1 has:fulltext/papers andrea de mauro venue:marketing

Export Modes

ScholarFetch supports four export modes from the saved paper set.

  • bib
    • BibTeX for citation managers and bibliographic tooling
  • citations
    • citation-only export in harvard, apa, or ieee
  • abstracts
    • metadata + abstract for each saved paper
  • fulltext
    • metadata + abstract + full text when available
    • optional inclusion of references

This makes ScholarFetch useful as a corpus builder for downstream synthesis agents.

MCP Server

ScholarFetch exposes the same research model through MCP.

Modes:

  • Classic MCP (stdio): python3 scholarfetch_mcp.py
  • FastMCP stdio: python3 scholarfetch_fastmcp.py --transport stdio
  • FastMCP SSE: python3 scholarfetch_fastmcp.py --transport sse --host 127.0.0.1 --port 8000
  • FastMCP streamable HTTP: python3 scholarfetch_fastmcp.py --transport streamable-http --host 127.0.0.1 --port 8000 --http-path /mcp

Validation:

bash
python3 scholarfetch_mcp.py --self-testpython3 scholarfetch_fastmcp.py --self-test

Public demo endpoints:

MCP Research Model

The MCP server is designed for agent workflows, not only one-off calls.

An agent can:

  1. Search papers
  2. Resolve authors
  3. Expand to author papers
  4. Read abstracts / full text
  5. Expand references
  6. Save promising papers into a named in-memory reading list
  7. Export the reading list as:
    • citations
    • abstracts
    • BibTeX
    • full-text corpus

This lets an agent build a focused research set inside one MCP session and then hand off an export artifact to another synthesis step.

See MCP_SERVER.md for the detailed tool model.

Repository Files

  • scholarfetch.py: CLI entrypoint
  • scholarfetch_cli.py: core CLI + retrieval logic
  • scholarfetch_mcp.py: classic MCP server
  • scholarfetch_fastmcp.py: FastMCP server
  • MCP_SERVER.md: MCP usage guide
  • AGENTS.md: agent-facing workflow guide
  • SKILL.md: structured research skill guide
  • SKILLS.md: index for agent-facing skill docs
  • CONTRIBUTING.md: contributor notes

For Agents

If you are running ScholarFetch from an MCP-compatible system, read:

These documents explain how to use ScholarFetch as a literature-research environment rather than as a flat search API.

Contributing

See CONTRIBUTING.md.

Security

See SECURITY.md.

License

MIT License. See LICENSE.

Source: README.md at commit 103fcd5

Tools

12

scholarfetch_doi_lookup

Enrich one known DOI with metadata, reading links, and full-text availability signals. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.

Parametersdoirequiredengines

scholarfetch_author_candidates

Disambiguate a human author name into ranked identity candidates. Use this before `scholarfetch_author_papers` when the name is ambiguous and you need a stable `candidate_index`. If you pass `engines`, it must include `openalex`.

Parametersnamerequiredlimitengines

scholarfetch_author_papers

Expand one author into a deduplicated paper list. This is the main author->paper traversal tool and supports research filters. Use `author_id` when you already know the exact author, or `author_name` plus `candidate_index` after `scholarfetch_author_candidates`. Supported comma-separated `filters`: year>=YYYY, year<=YYYY, year=YYYY, has:abstract, has:doi, has:pdf, venue:<text>, title:<text>, doi:<text>. If you pass `engines`, it must include `openalex`.

Parameterslimitenginesfiltersauthor_idauthor_namecandidate_index

scholarfetch_abstract

Read the best abstract available for a paper. Use with a DOI or with author_name + candidate_index + paper_index after author_papers. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.

Parametersdoienginesauthor_namepaper_indexcandidate_index

scholarfetch_article_text

Read full paper text when machine-readable content is recoverable. Use with a DOI or with author_name + candidate_index + paper_index. Uses Elsevier first, then open-access fallbacks such as Springer OA, Europe PMC, arXiv PDF, and generic PDF URLs when text is recoverable. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.

Parametersdoienginesauthor_namepaper_indexcandidate_index

scholarfetch_references

Expand a paper into its references. Use with a DOI or with author_name + candidate_index + paper_index. This is the main edge-expansion tool for traversing the literature graph. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.

Parametersdoienginesauthor_namepaper_indexcandidate_index

scholarfetch_saved_add

Add one paper to a named in-memory reading list on the MCP server. Best input is paper_json copied from another ScholarFetch tool result, but DOI, query+result_index, or author_name+candidate_index+paper_index also work. Reuse the same collection name across calls to keep one research session together.

Parametersdoiqueryenginescollectionpaper_jsonauthor_namepaper_indexresult_indexcandidate_index

scholarfetch_saved_list

List all papers currently saved in a named in-memory reading list. Use this to inspect the working set before exporting or removing items.

Parameterscollection

scholarfetch_saved_remove

Remove one paper from a named in-memory reading list by DOI or exact title.

Parametersdoititlecollection

scholarfetch_saved_clear

Clear all papers from a named in-memory reading list. Useful when restarting a research branch.

Parameterscollection

scholarfetch_saved_export

Export the current reading list as citations, abstracts, BibTeX, or an aggregated full-text corpus. Valid `format` values: citations, abstracts, bib, fulltext. Valid `style` values when `format=citations`: harvard, apa, ieee. Use `include_references=true` with `format=fulltext` when you want a richer downstream synthesis corpus.

Parametersstyleformatenginescollectioninclude_references

Version history

1
  1. v0.2.1LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts