find-a-book-mcp
This server allows you to search, browse, and download ebooks from Library Genesis (LibGen) without needing an account or API key.
Search for books: Search by title, author, or keywords with paginated results (5 per page). Filter by file extension (EPUB, PDF, MOBI, etc.) and get metadata including title, author, publisher, year, language, file size, and MD5 hash.
Get all available formats: Retrieve all available formats (EPUB, MOBI, PDF, AZW3, FB2, DJVU, etc.) for a book, grouped by unique title + author, with up to 75 results fetched in parallel — eliminating duplicate entries.
Download books: Download a book using its MD5 hash. Automatically tries multiple mirrors in sequence (
libgen.li→libgen.rs→libgen.st→library.lol) and saves the file to/tmp/with a timestamped filename to prevent collisions.
Both searching and downloading use automatic mirror fallback to ensure reliability, and no API key or account is required.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@find-a-book-mcpSearch for 'The Great Gatsby'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
find-a-book-mcp
An MCP server for finding and downloading books from LibGen and Z-Library. Works with Claude Code, Claude Desktop, and any MCP-compatible AI agent.
Source | Tools | Account needed? |
Open Library |
| No |
Library Genesis |
| No |
Z-Library |
| Yes (free) |
Quick rule of thumb: Start with search_books (LibGen, no login). If the book isn't there or you want a Chinese novel / recent release, switch to search_zlibrary (Z-Library).
Installation
Claude Desktop / Claude Code
Add to settings.json (no install needed — npx handles it automatically):
{
"mcpServers": {
"find-a-book": {
"command": "npx",
"args": ["-y", "find-a-book-mcp"],
"env": {
"ZLIBRARY_EMAIL": "you@example.com",
"ZLIBRARY_PASSWORD": "yourpassword"
}
}
}
}Omit the
envblock if you only need LibGen (no Z-Library account required).
Manual
git clone https://github.com/Xiaochengzi2048/find-a-book-mcp
cd find-a-book-mcp
npm install
node server.jsRelated MCP server: MCP Open Library & File Search Server
Z-Library Setup
Z-Library has wider coverage than LibGen — especially for novels, Chinese books, and recent titles. Requires a free account at z-library.sk.
Option A — Email + password (auto-login on first use):
export ZLIBRARY_EMAIL=you@example.com
export ZLIBRARY_PASSWORD=yourpasswordOption B — Token (skip login, slightly faster):
export ZLIBRARY_REMIX_USERID=12345678
export ZLIBRARY_REMIX_USERKEY=abcdef1234567890...To get your token: log in at z-library.sk, open DevTools → Application → Cookies → copy
remix_useridandremix_userkey.
Tools
lookup_metadata — Verify book info before searching
Looks up authoritative metadata from Open Library (free, no login). Use this before searching LibGen when you're not sure about the exact title or author — LibGen's scraped titles are often noisy ("Summary of…", alternate editions, etc.).
Parameters:
query(string, optional) — Title, author, or keywordsisbn(string, optional) — ISBN-10 or ISBN-13 for exact lookup (takes precedence overquery)
Returns: Up to 5 candidates: { title, author, year, publisher, isbn, cover, openlibrary }. ISBN lookups also include pages.
When to use: You have a rough title/author and want to confirm the canonical version before searching. Or you have an ISBN and want clean metadata.
search_books — Search LibGen
Search by title, author, or keywords. Returns 5 results per page with pagination.
Parameters:
query(string, required) — Title, author, or keywordspage(number, optional, default1) — Page number (5 results per page)extensions(string[], optional) — Format filter, e.g.["epub", "pdf", "mobi"]
Returns:
{
"books": [
{
"title": "The Psychology of Money",
"author": "Morgan Housel",
"year": "2020",
"language": "English",
"extension": "EPUB",
"size": "920 kB",
"size_bytes": 942080,
"md5": "D7FF6458..."
}
],
"displayPage": 1,
"totalDisplayPages": 4,
"totalCount": 18,
"hasMore": true,
"hasPrev": false
}When to use: Most non-fiction, English books, older titles. No account needed.
get_formats — See all available formats for a book
Same search as search_books, but deduplicates by title + author and groups all formats together. Fetches up to 75 results in parallel.
Parameters:
query(string, required) — Title, author, or keywords
Returns:
[
{
"title": "The Psychology of Money",
"author": "Morgan Housel",
"year": "2020",
"language": "English",
"formats": [
{ "extension": "EPUB", "size": "920 kB", "size_bytes": 942080, "md5": "D7FF6458..." },
{ "extension": "MOBI", "size": "1.1 MB", "size_bytes": 1153433, "md5": "A3CC9012..." },
{ "extension": "PDF", "size": "3.2 MB", "size_bytes": 3355443, "md5": "B9DE3F21..." }
]
}
]When to use: You want to pick a specific format (e.g. EPUB for e-reader, PDF for reference), or you want to see everything available in one call.
download_book — Download from LibGen
Download a book by its MD5 hash. Automatically tries multiple mirrors in parallel: libgen.li → libgen.rs → libgen.st → library.lol.
Parameters:
md5(string, required) — MD5 fromsearch_booksorget_formatsresultstitle(string, optional) — Used for the filenamedest_dir(string, optional) — Save directory (defaults to system temp dir; created if missing)
Returns: { file_path, filename, size_bytes, extension }
search_zlibrary — Search Z-Library
Search Z-Library's catalog. Better than LibGen for novels, Chinese books, and recently published titles.
Requires: ZLIBRARY_EMAIL + ZLIBRARY_PASSWORD (or token env vars).
Parameters:
query(string, required) — Title, author, or keywordspage(number, optional, default1) — Page number (10 results per page)extensions(string[], optional) — Format filter, e.g.["epub", "pdf"]languages(string, optional) — Language filter, e.g."chinese"or"english"year_from/year_to(number, optional) — Publication year range
Returns: Book list with zlibrary_id and zlibrary_hash (needed for download_zlibrary), plus title, author, year, language, format, and size.
When to use: LibGen doesn't have the book; it's a Chinese novel or recent release; you want to filter by language.
download_zlibrary — Download from Z-Library
Download a book using the zlibrary_id and zlibrary_hash from search_zlibrary results.
Requires: ZLIBRARY_EMAIL + ZLIBRARY_PASSWORD (or token env vars).
Free Z-Library accounts have a 10 downloads/day limit.
Parameters:
zlibrary_id(string, required) — Fromsearch_zlibraryresultszlibrary_hash(string, required) — Fromsearch_zlibraryresultstitle(string, optional) — Used for the filenamedest_dir(string, optional) — Save directory
Returns: { file_path, filename, size_bytes, extension }
Recommended Workflow
1. lookup_metadata("book title") ← confirm exact title/author (optional but recommended)
2a. search_books("exact title") ← try LibGen first (no login)
→ download_book(md5)
2b. search_zlibrary("exact title") ← if not on LibGen, or want Chinese/recent
→ download_zlibrary(id, hash)Tips for better results:
Use
lookup_metadatafirst when the title might be ambiguous — it normalizes spelling and finds the right editionUse
get_formatsto pick EPUB over PDF when both exist (EPUB is better on e-readers)Use
languages: "chinese"insearch_zlibraryto filter out English translations of Chinese booksIf
search_booksreturns noisy results (summaries, study guides), add the author name to narrow it down
Environment Variables
Variable | Description |
| Z-Library account email |
| Z-Library account password |
| Token auth: user ID from cookie (alternative to email/password) |
| Token auth: user key from cookie |
| Override LibGen mirror list (comma-separated URLs) when default domains rotate, e.g. |
Notes
Downloaded files are saved to the system temp directory (
/tmp/) by default — move them as neededsize_byteslets you decide delivery method (direct send vs. link for large files)Mirror failures are logged to stderr
Supports EPUB, MOBI, PDF, AZW3, FB2, DJVU, and more
find-a-book-mcp(中文说明)
从 LibGen 和 Z-Library 搜索、下载电子书的 MCP 服务,兼容 Claude Code、Claude Desktop 及所有支持 MCP 协议的 AI Agent。
数据源 | 工具 | 需要账号? |
Open Library |
| 否 |
Library Genesis |
| 否 |
Z-Library |
| 是(免费) |
简单判断原则: 先用 search_books(LibGen,无需登录)。找不到,或要搜中文小说、近期出版物,再切 search_zlibrary(Z-Library)。
安装
Claude Desktop / Claude Code
在 settings.json 中添加(无需手动安装,npx 自动处理):
{
"mcpServers": {
"find-a-book": {
"command": "npx",
"args": ["-y", "find-a-book-mcp"],
"env": {
"ZLIBRARY_EMAIL": "你的邮箱",
"ZLIBRARY_PASSWORD": "你的密码"
}
}
}
}只用 LibGen 的话可以省略
env部分,无需账号。
手动安装
git clone https://github.com/Xiaochengzi2048/find-a-book-mcp
cd find-a-book-mcp
npm install
node server.jsZ-Library 配置
Z-Library 覆盖面比 LibGen 更广,尤其适合小说、中文书、近期出版物。需要在 z-library.sk 注册免费账号。
方式 A — 邮箱 + 密码(首次使用时自动登录):
export ZLIBRARY_EMAIL=you@example.com
export ZLIBRARY_PASSWORD=yourpassword方式 B — Token(跳过登录,稍快):
export ZLIBRARY_REMIX_USERID=12345678
export ZLIBRARY_REMIX_USERKEY=abcdef1234567890...获取方式:在 z-library.sk 登录后,打开 DevTools → Application → Cookies,复制
remix_userid和remix_userkey。
工具说明
lookup_metadata — 搜索前校验书目信息
从 Open Library 查询权威元数据(免费,无需账号)。在搜 LibGen 之前用它确认准确的书名/作者——LibGen 抓取的书名经常有噪音("Summary of…"、不同版次等)。
参数:
query(可选)— 书名、作者或关键词isbn(可选)— ISBN-10 或 ISBN-13,精确查询(优先级高于query)
返回: 最多 5 个候选:{ title, author, year, publisher, isbn, cover, openlibrary }。ISBN 查询另含 pages。
适用场景: 书名不确定时先校验规范写法;有 ISBN 时直接拿干净元数据。
search_books — LibGen 搜索
按书名、作者或关键词搜索,每页返回 5 条,支持翻页。
参数:
query(必填)— 书名、作者或关键词page(可选,默认 1)— 页码,每页 5 条extensions(可选)— 格式过滤,如["epub", "pdf", "mobi"]
返回字段: 书名、作者、出版社、年份、语言、格式、大小(含 size_bytes)、MD5,以及翻页信息(hasMore / hasPrev / totalCount)。
适用场景: 大多数非虚构类书籍、英文书、早期出版物。无需账号。
get_formats — 查看所有可用格式
与 search_books 搜索逻辑相同,但将同一书名+作者的所有格式归并展示。并行抓取最多 75 条结果,覆盖更全面。
参数:
query(必填)— 书名、作者或关键词
返回示例:
[
{
"title": "置身事内",
"author": "兰小欢",
"year": "2021",
"language": "Chinese",
"formats": [
{ "extension": "EPUB", "size": "2.3 MB", "size_bytes": 2411724, "md5": "..." },
{ "extension": "PDF", "size": "8.1 MB", "size_bytes": 8493466, "md5": "..." }
]
}
]适用场景: 想选特定格式(如 EPUB 用于阅读器,PDF 用于查阅),或想一次看全所有可用格式。
download_book — LibGen 下载
通过 MD5 下载书籍,自动并行尝试多个镜像:libgen.li → libgen.rs → libgen.st → library.lol。
参数:
md5(必填)— 来自search_books或get_formats的 MD5title(可选)— 书名,用于文件命名dest_dir(可选)— 保存目录(默认系统临时目录,不存在会自动创建)
返回: { file_path, filename, size_bytes, extension }
search_zlibrary — Z-Library 搜索
在 Z-Library 搜索书籍,覆盖面比 LibGen 更广,尤其适合小说、中文书和近期出版物。
需要: ZLIBRARY_EMAIL + ZLIBRARY_PASSWORD(或 Token 环境变量)。
参数:
query(必填)— 书名、作者或关键词page(可选,默认 1)— 页码,每页 10 条extensions(可选)— 格式过滤,如["epub", "pdf"]languages(可选)— 语言过滤,如"chinese"或"english"year_from/year_to(可选)— 出版年份范围
返回: 书籍列表,含 zlibrary_id 和 zlibrary_hash(下载用),以及书名、作者、年份、语言、格式、大小。
适用场景: LibGen 没有该书;中文小说或近期出版物;需要按语言过滤。
download_zlibrary — Z-Library 下载
用 search_zlibrary 返回的 zlibrary_id + zlibrary_hash 下载书籍。
需要: ZLIBRARY_EMAIL + ZLIBRARY_PASSWORD(或 Token 环境变量)。
免费账号每天限下载 10 本。
参数:
zlibrary_id(必填)— 来自search_zlibrary结果zlibrary_hash(必填)— 来自search_zlibrary结果title(可选)— 书名,用于文件命名dest_dir(可选)— 保存目录
返回: { file_path, filename, size_bytes, extension }
推荐使用流程
1. lookup_metadata("书名") ← 确认准确书名/作者(可选但推荐)
2a. search_books("准确书名") ← 先试 LibGen(无需登录)
→ download_book(md5)
2b. search_zlibrary("准确书名") ← LibGen 没有,或要搜中文/近期出版物
→ download_zlibrary(id, hash)用好这个工具的几个技巧:
书名有歧义时先用
lookup_metadata校准——它能找到规范拼写和正确版次get_formats可以选格式:有 EPUB 时优先选 EPUB(阅读器更友好)搜中文书时加
languages: "chinese"过滤掉英译本search_books结果有噪音(摘要版、学习指南)时,加上作者名再搜
环境变量
变量名 | 说明 |
| Z-Library 账号邮箱 |
| Z-Library 账号密码 |
| Token 认证:Cookie 中的 userid(可替代邮箱/密码) |
| Token 认证:Cookie 中的 userkey |
| 覆盖默认 LibGen 镜像列表(逗号分隔的 URL),域名轮换时使用,如 |
注意事项
文件默认保存在系统临时目录(
/tmp/),请自行移至目标位置size_bytes字段方便判断发送方式(小文件直发,大文件给链接)镜像失败时写入 stderr,便于排查
支持 EPUB、MOBI、PDF、AZW3、FB2、DJVU 等格式
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Xiaochengzi2048/find-a-book-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server