ScholarFetch

io.github.laibniz由 GitHub 帳號 laibniz 發布v0.2.1更新於 Oct 27, 2026

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

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取知識與記憶

概覽

AI 產生的概覽

多引擎學術研究伺服器,讓助理檢索論文、沿作者與參考文獻擴展、閱讀摘要與全文,並匯出閱讀清單。

可以做什麼
  • 依關鍵字、DOI 或人名在多個學術引擎中檢索論文
  • 消歧作者姓名,並把作者展開為可篩選的論文清單
  • 讀取摘要與可機讀全文,並把論文展開為其參考文獻
  • 將論文存入具名的記憶體閱讀清單,並可列出、移除或清空項目
  • 把已存的集合匯出為引文(Harvard、APA、IEEE)、摘要、BibTeX 或全文語料庫
適用情境
適合助理進行文獻探勘:從主題、DOI 或作者出發,沿引用關係擴展,並整理出精選語料庫,供後續綜整或引文格式化作業使用。
執行需求
可使用所列主機的遠端端點,或在本機安裝 Python 套件與命令列腳本。供應商憑證從環境變數讀取,例如 ELSEVIER_API_KEY、ELSEVIER_INSTTOKEN、SPRINGER_META_API_KEY、SPRINGER_OPENACCESS_API_KEY,通常放在 .scholarfetch.env 檔案中。仍受供應商授權與速率限制約束。
安裝前請注意
儲存的閱讀清單放在伺服器記憶體中,僅限單一工作階段,工作階段結束即消失。全文取得取決於供應商授權與開放取用情況。憑證透過環境變數而非工具參數傳入,請妥善保管該環境檔案。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 ScholarFetch,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.laibniz%2Fscholarfetch/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "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.

來源:README.md,提交 103fcd5

工具

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.

輸入參數doi必填engines

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`.

輸入參數name必填limitengines

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`.

輸入參數limitenginesfiltersauthor_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.

輸入參數doienginesauthor_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.

輸入參數doienginesauthor_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.

輸入參數doienginesauthor_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.

輸入參數doiqueryenginescollectionpaper_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.

輸入參數collection

scholarfetch_saved_remove

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

輸入參數doititlecollection

scholarfetch_saved_clear

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

輸入參數collection

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.

輸入參數styleformatenginescollectioninclude_references

版本歷史

1
  1. v0.2.1最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分