Context7
Up-to-date docs for AI agents
作者提供的说明(英文原文)
Deterministic ebook-to-markdown pipeline with MCP tools to browse, search, and read your books.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
LIB_HOME你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"librarian": {
"command": "uvx",
"args": [
"librarian-cli"
],
"env": {
"LIB_HOME": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add librarian --env LIB_HOME=your-value -- uvx librarian-cli运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"librarian": {
"command": "uvx",
"args": [
"librarian-cli"
],
"env": {
"LIB_HOME": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"librarian": {
"type": "stdio",
"command": "uvx",
"args": [
"librarian-cli"
],
"env": {
"LIB_HOME": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
LIB_HOME env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过 GitHub 账户 Terobyte 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.1.1)于4个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:Context7, Codebase Memory, Exa
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Up-to-date docs for AI agents
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Turn any ebook into clean, token-counted Markdown chapters — let Claude read your bookshelf over MCP and catch it misquoting your books. Deterministic RAG: no embeddings, no network, no API keys.
Any input format — FB2, EPUB, DOCX, HTML, TXT/MD, text-layer PDF — becomes a directory of clean chapters with token counts. No network, no LLM, no randomness: the same input always produces byte-identical output.
uv tool install librarian-cli
Offline contract: install and runtime need no network (the tokenizer's vocabulary is vendored in the package).
lib ingest examples/*.epub
lib list lib find curiouser lib get --budget 3000
| Command | Purpose |
|---|---|
lib ingest [--force] [--no-keep-source] [--config cfg.toml] [--verbose] | Process books into the library; prints a file · id · status · score table. |
lib list [ ] | No argument — all books; with an id — that book's chapters (n, title, tokens, summary). |
lib get | Print chapters by range (1-3,7) to stdout. |
lib get --budget N [--from K] | Greedily print consecutive chapters from K while the token sum stays ≤ N. |
lib find [--limit 10] [--book ] [--reindex] [--json] | Full-text search across chapters and titles/authors library-wide (bm25, snippets, RU/EN stemming). |
lib info | JSON: book metadata + quality metrics. |
lib doctor [ ] | No id — books in review and broken directories; with id — that book's report. |
lib reingest --all [--config cfg.toml] [--verbose] | Rebuild the library from source/ with the current code/config. |
lib rm | Delete a book and rebuild the index. |
lib serve [--library ] | Stdio MCP server over the library. |
lib verify "quote" [--book ID] [--json] [--limit N] | Check a quote against one book or attribute it across the library. |
Library root: --library (or the LIB_HOME env var, default ./library). Data goes to stdout, diagnostics to stderr. Exit codes: 0 success, 1 runtime error, 2 usage error.
librarian-cli ships a built-in stdio MCP server with 6 read-only tools — list_books, list_chapters, find, get_chapters, book_info, verify_quote — so Claude can browse the catalog, search it, pull chapters under a token budget, and check its own quotes against the source on its own: deterministic RAG with no embeddings, no network, and no API keys.
Claude Code:
claude mcp add librarian --env LIB_HOME=$HOME/books -- uvx librarian-cli
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": { "librarian": { "command": "uvx", "args": ["librarian-cli"], "env": { "LIB_HOME": "/path/to/books" } } } }
*An MCP server that catches Claude misquoting your books.*
lib verify "quote" checks whether a quote actually appears in your library, verbatim — punctuation, case, ё/е, and markdown formatting don't count. Two modes:
--book ): full scan of one book — "does this book actually say this?" Works without the search index.--book): attribution across the whole library via FTS5 candidates — "which book is this from?" The quote needs at least 5 significant words (stop words don't count), or the check is skipped with verdict: null.lib verify "Рукописи не горят" --book bulgakov-master-i-margarita
lib verify "рукописи не горят никогда"
| verdict | meaning |
|---|---|
exact | matches after normalization (punctuation/case/ё/typography don't count) |
close | similarity ≥ 0.95 — near-exact, differences shown as a word-diff |
distorted | similarity ≥ 0.75 — the right place, but the quote is misremembered |
not_found | similarity < 0.75 — nothing like it in the book/library |
null | check wasn't run: empty quote, or a short quote without --book |
Exit codes (grep-style semantics, a deliberate departure from the project's usual "1 = runtime error" — see docs/MILESTONES.md deviation 38):
| exit | case | stdout |
|---|---|---|
| 0 | exact / close — quote confirmed | full report / JSON |
| 1 | distorted / not_found — not confirmed | full report / JSON |
| 1 | runtime error (unknown book id, no search index, locked index) | empty |
| 2 | usage error: empty/short quote (verdict: null), --limit < 1 | empty (message on stderr) |
Script discriminator: exit 1 with non-empty stdout means "checked, not confirmed"; exit 1 with empty stdout means an error (diagnostics went to stderr instead). Exit `0` includes `close` — a strict CI gate must check verdict == "exact" in the --json output, not the exit code alone.
Every book gets a score from five metrics (coverage, structure, garbage, encoding, dehyphenation): ok (score ≥ 0.90, no hard triggers) — saved silently; review (0.60 ≤ score < 0.90, or triggers present) — saved with a warning, details via lib doctor ; failed (score < 0.60) — not saved. Scans and password-protected PDFs honestly fail (OCR and DRM removal are out of scope).
The pipeline has no network access, no LLM calls, and no randomness — the same input file always produces byte-identical output. That makes ingestion reproducible and cacheable, and it's what makes lib serve's RAG deterministic: no embeddings to drift, no model calls to vary between runs.
review.lib verify: quotes spanning a chapter boundary are not supported (v1) — the best you'll get is distorted on one half.lib verify: close on a single-word replacement is realistic from ~150 characters of quote; shorter quotes with a replaced word honestly land in distorted — a third of a three-word quote really is a distortion.lib verify shelf mode (no --book) needs the FTS5 search index; book mode (--book ) works without it in the CLI. lib serve as a whole still requires FTS5 — it syncs the index at startup regardless of which tool gets called.lib verify in book mode scans the whole chapter text in pure Python; a long book can take a few seconds of CPU. The MCP tool runs it in a worker thread so it doesn't block the rest of the server.See README.ru.md for the Russian documentation.