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 分