biblio-mcp
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Uyari
- process.env — Environment variable access in src/http.ts
- network request — Outbound network request in src/http.ts
- process.env — Environment variable access in src/mirrors.ts
- process.env — Environment variable access in src/providers/annas.ts
- network request — Outbound network request in src/providers/annas.ts
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
One MCP server for Anna's Archive, Library Genesis, Sci-Hub & Z-Library — search books/papers, resolve download links, fetch files. No keys, no login.
biblio-mcp
One Model Context Protocol (MCP) server that searches Anna's Archive, Library Genesis (Libgen), Sci-Hub, and Z-Library — all at once.
Search millions of books, academic papers, and research articles across every major shadow library through a single unified interface. Resolve download links and fetch files directly from your AI assistant — Claude Code, Claude Desktop, Cline, Cursor, or any MCP-compatible client.
No API keys. No login. No per-source servers to juggle. One server, six tools, four sources.
What is biblio-mcp?
biblio-mcp is an open-source MCP server that acts as a unified search layer across the four largest shadow libraries on the internet. Instead of installing and configuring separate MCP servers for each source, biblio-mcp combines them into a single server with a shared data model and automatic deduplication.
It connects to any MCP client (Claude, Cline, Cursor, Windsurf, or custom agents) and gives your AI assistant the ability to search for books, find academic papers by DOI, resolve download links, and download files — all through natural language.
How it works
- Fan-out search — a single query hits Anna's Archive, Library Genesis, and Z-Library concurrently.
- MD5-based deduplication — results from different sources for the same book are merged by MD5 hash (the universal identifier these libraries share), keeping the richest metadata from each.
- Mirror rotation — every source declares a list of mirror domains. A dead or blocked host automatically falls through to the next working one, which is remembered for future requests.
- Fault isolation — if one source is down, the others still return results. Failures are reported separately, never silently swallowed.
Sources covered
| Source | What it provides | Coverage |
|---|---|---|
| Anna's Archive | Book search, metadata, download links (partner servers, IPFS) | 36M+ books and papers |
| Library Genesis (Libgen) | Book search, academic paper search (scimag), direct get.php downloads |
15M+ books, 100M+ papers |
| Sci-Hub | Paper PDF resolution by DOI, URL, or title | 85M+ research articles |
| Z-Library | Best-effort public book search (no login required) | 14M+ books |
Install
Requires Node.js ≥ 18.
# Run directly (no install needed)
npx biblio-mcp
# Or clone and build locally
git clone https://github.com/yashimosh/biblio-mcp.git
cd biblio-mcp
npm install
npm run build
Add to Claude Code
claude mcp add -s user biblio -- npx biblio-mcp
# or, from a local build:
claude mcp add -s user biblio -- node /absolute/path/to/biblio-mcp/dist/index.js
Add to Claude Desktop / Cline / Cursor
Add to your MCP configuration file (claude_desktop_config.json, cline_mcp_settings.json, etc.):
{
"mcpServers": {
"biblio": {
"command": "npx",
"args": ["biblio-mcp"]
}
}
}
Add to any MCP client
biblio-mcp uses stdio transport — any MCP client that can launch a subprocess works. Point it at npx biblio-mcp (or node dist/index.js for a local build).
Tools
| Tool | What it does |
|---|---|
search_books |
Search Anna's Archive + Libgen + Z-Library at once; merged & deduped by MD5. Returns title, author, year, format, size, and md5 for each result. |
book_details |
Full metadata + download options for one book by MD5 hash. |
get_download_links |
Every resolvable download URL for an MD5 — Libgen get.php, Anna's partner servers, IPFS gateways. Links marked direct: true point straight at the file. |
download_book |
Fetch the actual file to a local directory by MD5 (tries every direct link in order until one succeeds). |
search_papers |
Academic paper / article search via Library Genesis scimag; returns DOIs and metadata. |
get_paper |
Resolve a paper's PDF via Sci-Hub by DOI, URL, or title. Returns the direct PDF URL when available. |
Typical flow
Books:
search_books({ query: "dune frank herbert" })→ results, each with anmd5get_download_links({ md5: "..." })→ pick adirect: truelink, ordownload_book({ md5: "...", output_dir: "~/Downloads/books" })→ saved file
Papers:
search_papers({ query: "CRISPR gene editing" })→ results with DOIsget_paper({ identifier: "10.1089/crispr.2019.0064" })→ direct PDF URL
Configuration
All optional — sensible defaults ship built-in. Override via environment variables:
| Variable | Purpose | Default |
|---|---|---|
BIBLIO_ANNAS_MIRRORS |
Comma-separated Anna's Archive base URLs | .org, .se, .li, .gl |
BIBLIO_LIBGEN_MIRRORS |
Comma-separated Libgen base URLs | .li, .is, .rs, .st, .gs, .vg |
BIBLIO_SCIHUB_MIRRORS |
Comma-separated Sci-Hub base URLs | .ren, .mksa.top, .hkvisa.net, .se, .st, .ru |
BIBLIO_ZLIB_MIRRORS |
Comma-separated Z-Library domains | z-lib.io, z-library.sk, … |
BIBLIO_IPFS_GATEWAYS |
IPFS gateway bases for CID fallback | ipfs.io, cloudflare-ipfs, pinata |
BIBLIO_TIMEOUT_MS |
Per-request timeout | 20000 |
Why biblio-mcp instead of separate servers?
| biblio-mcp | Separate MCP servers | |
|---|---|---|
| Setup | One npx command |
Install 4 servers in 3 languages (Go, Python, Node) |
| Config | One entry in MCP settings | Four entries, four sets of env vars |
| Dedup | Automatic — same book from 3 sources = 1 result | Manual — you see duplicates |
| Mirrors | Built-in rotation, one file to update | Each server manages its own |
| Fault tolerance | Source down? Others still work | Server down? That source is gone |
| Papers + Books | Both in one server | Need separate servers for Sci-Hub vs Libgen |
Known limitations
- Sci-Hub mirrors sometimes gate behind captcha, but the PDF embed URL is
still present in the HTML for most mirrors.get_paperextracts it
successfully in the vast majority of cases. If all mirrors fail, it returns
fallback URLs so you can open the article in a browser. - Z-Library rotates domains and gates most of its catalog behind login. The
built-in public search is best-effort; when it's blocked, Anna's Archive
(which indexes the Z-Library collection) covers the same books. PointBIBLIO_ZLIB_MIRRORSat your working personal domain for better results. - These sites change their HTML often. Parsers live in
src/providers/and mirrors insrc/mirrors.ts— both are small and easy to patch.
FAQ
How do I search for books with Claude?
Install biblio-mcp (claude mcp add -s user biblio -- npx biblio-mcp), then ask Claude naturally: "Find me Dune by Frank Herbert as an EPUB." Claude calls search_books and get_download_links automatically.
Does this work with ChatGPT or other AI assistants?
biblio-mcp uses the Model Context Protocol (MCP) standard. It works with any MCP-compatible client: Claude Code, Claude Desktop, Cline, Cursor, Windsurf, and custom agents built with the MCP SDK. ChatGPT does not currently support MCP.
Do I need an account on any of these sites?
No. biblio-mcp queries publicly accessible pages only. No API keys, no login, no cookies. For Z-Library, an account gives access to more results — set BIBLIO_ZLIB_MIRRORS to your personal domain if you have one.
What happens when a mirror goes down?
The server tries the next mirror in the list automatically. The first working mirror is remembered so subsequent requests are fast. If all mirrors for a source fail, that source returns an error but the other sources still return results.
Can I add my own mirrors?
Yes. Set the corresponding environment variable (e.g. BIBLIO_LIBGEN_MIRRORS="https://my-mirror.com,https://libgen.li") and your mirrors will be tried first.
How is this different from the Anna's Archive MCP / Libgen MCP / Sci-Hub MCP?
Those are single-source servers. biblio-mcp combines all four into one server with cross-source deduplication, shared mirror rotation, and fault isolation. One install replaces four.
Does biblio-mcp host or store any content?
No. It is a client that queries publicly reachable third-party websites and returns metadata and URLs. It hosts no files, stores no content, and maintains no index.
Development
npm run dev # run from source via tsx
npm run build # compile to dist/
npm run smoke # live end-to-end test against real mirrors
Architecture
src/
index.ts MCP server + tool definitions (stdio transport)
http.ts mirror-rotating fetch (retry, timeout, per-host stickiness)
mirrors.ts all mirror domains — the one file to edit when hosts change
types.ts shared Book / Paper / DownloadLink data model
providers/
annas.ts Anna's Archive (primary book source + md5 resolver)
libgen.ts Library Genesis (books + scimag papers + direct downloads)
scihub.ts Sci-Hub (paper PDF resolution by DOI)
zlibrary.ts Z-Library (best-effort public search)
index.ts aggregation: fan-out, merge, dedup-by-md5
Contributing
PRs welcome — especially for parser fixes when sites change their HTML. The most common maintenance task is updating src/mirrors.ts when domains rotate.
Legal
This tool is a client that queries publicly reachable third-party websites; it
hosts no content itself. Copyright law varies by country. You are responsible
for ensuring your use complies with the laws of your jurisdiction and with the
rights of copyright holders. Provided for research, archival, and accessibility
purposes. The authors do not endorse copyright infringement.
License
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi