Calibre-Web
Überblick
Beschreibung vom Entwickler (englisches Original)
Read-only MCP server for Calibre-Web: library search, browsing and covers via the OPDS feed
Die drei Säulen von PopNx MCP
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
- Stimmen der NutzeriNoch keine BewertungenBewertungen starten in einem späteren Schritt zusammen mit Benutzerkonten
- Unsere Basischecksi1 von 1 bestandenAnhand öffentlicher Informationen geprüft; Code noch nicht gescannt
- NutzungiGanz neu↓ 89/Wo. · ★ –
Was du damit machen kannst
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
- Verbindung: Läuft auf deinem Computer
- Transport: stdio
- Kategorie: Suche & KI-Gedächtnis
- Das musst du eintragen: CALIBRE_WEB_URL, CALIBRE_WEB_PASSWORD
Installation
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
Bevor du installierst
- Basischecks: 1 von 1 bestanden
- Läuft auf deinem Computer mit den Rechten deines Benutzerkontos (Dateien, Netzwerk, Apps).
- Das trägst du selbst ein:
CALIBRE_WEB_URL,CALIBRE_WEB_USERNAME,CALIBRE_WEB_PASSWORD,CALIBRE_WEB_INSECURE_TLS,CALIBRE_WEB_ALLOW_TOOLS,CALIBRE_WEB_DENY_TOOLS
Als geheim markierte Werte sind Schlüssel zu deinem Konto. Gib sie nie weiter und füge sie nie in einen Chat ein.
Du brauchst
- npmNode.js installiert (für den Befehl npx)
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"calibreweb": {
"command": "npx",
"args": [
"-y",
"calibreweb-mcp"
],
"env": {
"CALIBRE_WEB_URL": "your-value",
"CALIBRE_WEB_USERNAME": "your-value",
"CALIBRE_WEB_PASSWORD": "your-value",
"CALIBRE_WEB_INSECURE_TLS": "your-value",
"CALIBRE_WEB_ALLOW_TOOLS": "your-value",
"CALIBRE_WEB_DENY_TOOLS": "your-value"
}
}
}
}Führe das in deinem Terminal aus
claude mcp add calibreweb --env CALIBRE_WEB_URL=your-value --env CALIBRE_WEB_USERNAME=your-value --env CALIBRE_WEB_PASSWORD=your-value --env CALIBRE_WEB_INSECURE_TLS=your-value --env CALIBRE_WEB_ALLOW_TOOLS=your-value --env CALIBRE_WEB_DENY_TOOLS=your-value -- npx -y calibreweb-mcpTrag die leeren Werte ein, bevor du ihn startest.
Oder kopier die Einstellungen selbst
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"calibreweb": {
"command": "npx",
"args": [
"-y",
"calibreweb-mcp"
],
"env": {
"CALIBRE_WEB_URL": "your-value",
"CALIBRE_WEB_USERNAME": "your-value",
"CALIBRE_WEB_PASSWORD": "your-value",
"CALIBRE_WEB_INSECURE_TLS": "your-value",
"CALIBRE_WEB_ALLOW_TOOLS": "your-value",
"CALIBRE_WEB_DENY_TOOLS": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Oder kopier die Einstellungen selbst
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"calibreweb": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"calibreweb-mcp"
],
"env": {
"CALIBRE_WEB_URL": "your-value",
"CALIBRE_WEB_USERNAME": "your-value",
"CALIBRE_WEB_PASSWORD": "your-value",
"CALIBRE_WEB_INSECURE_TLS": "your-value",
"CALIBRE_WEB_ALLOW_TOOLS": "your-value",
"CALIBRE_WEB_DENY_TOOLS": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Werte, die du selbst einträgst
- Root URL of the Calibre-Web instance, e.g. https://books.example.com
CALIBRE_WEB_USERNAMEenvUsername of the Calibre-Web account (web login); leave unset together with the password for anonymous-browsing instances- Password of that account (web login password)
CALIBRE_WEB_INSECURE_TLSenvSet to true to accept self-signed certificates (scoped to the configured host)CALIBRE_WEB_ALLOW_TOOLSenvComma-separated tool names or list_* prefixes to register; 'essential' selects a curated preset (default: all tools)CALIBRE_WEB_DENY_TOOLSenvComma-separated tool names or list_* prefixes to remove from whatever CALIBRE_WEB_ALLOW_TOOLS left
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Was er kann
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Basischecksi
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 8. Nov. 2026
- ✓ Bestanden
Entwickler passt zum Repo
Der Registry-Name wurde mit dem GitHub-Konto ni-c bestätigt, dem das Repo gehört
- … Noch nicht geprüft
Wird noch gepflegt
Dieses Repo haben wir noch nicht von GitHub gelesen
- … Noch nicht geprüft
Hat eine Lizenz
Dieses Repo haben wir noch nicht von GitHub gelesen
- – Nicht zutreffend
Endpunkt antwortet
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
- – Nicht zutreffend
Anmeldung mit OAuth
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
- … Noch nicht geprüft
Keine versteckten Anweisungen in Tool-Beschreibungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Im Vergleich mit anderen in Suche & KI-Gedächtnisi
- Mehr Sterne als 0 % der anderen 5686 Server in dieser Kategorie
- Neuer in der Registry veröffentlicht als 40 % der anderen 5686 Server in dieser Kategorie
- Basischecks gleich gut wie oder besser als bei 100 % der anderen 5686 Server in dieser Kategorie
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Häufige Fragen
Ist Calibre-Web sicher?
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Welche Schlüssel oder Codes braucht er?
Das musst du eintragen: CALIBRE_WEB_URL, CALIBRE_WEB_PASSWORD
Läuft er auf meinem Computer oder in der Cloud?
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Wird er noch gepflegt?
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.3.1) kam vor 2 Monaten in die Registry.
Welche Apps können ihn nutzen?
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js, Docker auf deinem Computer.
Was kann ich stattdessen nutzen?
In derselben Kategorie: Context7, Codebase Memory, Exa
Alternativen
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Exa
Connect AI agents to Exa for web search, content fetching, and multi-step research.
README vom Entwickler
README öffnen
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
calibreweb-mcp
A read-only Model Context Protocol (MCP) server for Calibre-Web (and Calibre-Web Automated), the self-hosted ebook library web UI.
Lets MCP clients like Claude Code, Claude Desktop or Codex search your library, browse the curated views and shelves, follow per-format download links and pull cover images straight into the conversation. It never writes anything: every tool is a GET.
Six tools is the ceiling, not the floor: CALIBRE_WEB_ALLOW_TOOLS=essential registers a curated five instead, and a model picks the right tool far more reliably from five than from six — see choosing which tools load.
Calibre-Web has no REST API — its only stable machine-readable interface is the OPDS catalog feed it serves for e-reader apps. This server speaks that feed: Atom XML with HTTP Basic auth in, structured book data out.
What makes it different
The API Calibre-Web never had. Calibre-Web exposes no REST API — its only stable machine interface is the OPDS Atom feed built for e-reader apps. These tools parse that feed into structured book data with numeric ids, per-format download URLs and bounded summaries.
Read-only by construction. All six tools are GETs. Redirects are refused so Basic credentials never travel, XML carrying a DOCTYPE is rejected outright, hrefs are locked to the configured origin, and metadata is marked as the untrusted data it is.
Requirements
- Node.js 24 or newer
- A Calibre-Web instance (developed against the current
linuxserver/calibre-webimage; Calibre-Web Automated works the same way) - A Calibre-Web user for the server. The OPDS feed authenticates with the normal web login — use a dedicated account with only the View and Download roles, not your admin account. If the instance allows anonymous browsing, the server can also run without credentials.
Configuration
| Variable | Required | Description |
|---|---|---|
CALIBRE_WEB_URL | yes | Root URL of the instance, e.g. https://books.example.com. The /opds path is appended automatically. |
CALIBRE_WEB_USERNAME | yes¹ | Username of the Calibre-Web account. |
CALIBRE_WEB_PASSWORD | yes¹ | Password of that account (the web login password). |
CALIBRE_WEB_INSECURE_TLS | no | true to accept self-signed certificates — scoped to the configured host only. |
CALIBRE_WEB_ALLOW_TOOLS | no | Comma-separated tool names, list_* prefixes, or essential for a curated preset |
CALIBRE_WEB_DENY_TOOLS | no | Same syntax; removed from whatever CALIBRE_WEB_ALLOW_TOOLS left |
¹ Leave both unset for an instance that allows anonymous browsing; setting only one of them is a configuration error.
Choosing which tools load
CALIBRE_WEB_ALLOW_TOOLS and CALIBRE_WEB_DENY_TOOLS take comma-separated tool names; a trailing * matches a whole family. essential is a curated preset of five: search_books, list_books, list_shelves, get_shelf_books, get_stats.
CALIBRE_WEB_ALLOW_TOOLS=essential
CALIBRE_WEB_ALLOW_TOOLS=search_books,list_shelves CALIBRE_WEB_DENY_TOOLS=get_cover
An entry that matches no tool aborts startup and names it, so a typo cannot silently hide a tool — an absent tool is not something anyone traces back to an environment variable. A filtered tool is never registered, so it is absent from tools/list and unknown to tools/call alike.
If you run several of these servers at once, mcp-hub is the other answer — its /hub endpoint replaces every server's tools with six meta-tools.
Installation
Claude Code
claude mcp add calibreweb \
-e CALIBRE_WEB_URL=https://books.example.com \ -e CALIBRE_WEB_USERNAME=reader \ -e CALIBRE_WEB_PASSWORD=... \ -- npx calibreweb-mcp
Claude Desktop
{
"mcpServers": { "calibreweb": { "command": "npx", "args": ["calibreweb-mcp"], "env": { "CALIBRE_WEB_URL": "https://books.example.com", "CALIBRE_WEB_USERNAME": "reader", "CALIBRE_WEB_PASSWORD": "..." } } } }
Codex
[mcp_servers.calibreweb]
command = "npx" args = ["calibreweb-mcp"] env = { CALIBRE_WEB_URL = "https://books.example.com", CALIBRE_WEB_USERNAME = "reader", CALIBRE_WEB_PASSWORD = "..." }
Docker
docker run -i --rm \
-e CALIBRE_WEB_URL=https://books.example.com \ -e CALIBRE_WEB_USERNAME=reader \ -e CALIBRE_WEB_PASSWORD=... \ ghcr.io/ni-c/calibreweb-mcp
Through mcp-hub
A client that cannot spawn a local process — ChatGPT connectors, Claude on the web, Cursor, LibreChat — reaches calibreweb-mcp through mcp-hub: one container serves many stdio MCP servers over Streamable HTTP, with an OAuth 2.1 login behind a single password and long-lived tokens for the clients that cannot do OAuth. Its /hub endpoint puts every server behind six meta-tools, so one connector reaches all of them without N×tool schemas in the model's context, and it speaks both protocol revisions — a question this server asks travels through it to the person at the far end.
Its /config/mcp.json uses Claude Code's format, so the entry is the one you already have:
{
"mcpServers": { "calibreweb": { "command": "npx", "args": ["-y", "calibreweb-mcp"], "env": { "CALIBRE_WEB_ALLOW_TOOLS": "essential" }, "denyTools": ["get_cover"] } } }
allowTools and denyTools there are the hub's own per-server filter, which is not the same thing as *_ALLOW_TOOLS in env — the difference, and the mistake it invites, are in the client guide.
Tools
All tools are read-only (readOnlyHint: true).
| Tool | Description |
|---|---|
search_books | Search by title, author, series, publisher and tags. Calibre-Web returns every match at once; the result is capped client-side (limit, default 50) and reports the real match count. |
list_books | Book listings by view: new (default), hot, rated, discover (random), read, unread, or all (optionally narrowed to an initial letter). |
list_shelves | Public shelves plus the configured user's own shelves. |
get_shelf_books | The books on a shelf, in shelf order. |
get_cover | A book's cover, returned as an image the client can display. |
get_stats | Total books, authors, categories and series. |
Book entries include authors, tags, series (with index), rating, a bounded summary, a cover URL and per-format download URLs — ready-made links a human can open, since the model itself has no reason to download an EPUB.
Structured output
Every tool declares an outputSchema and answers with structuredContent alongside the text block, so a client can use the result without parsing prose:
{
"untrusted": true, "source": "calibre-web", "totalFound": 2, "truncated": false, "books": [{ "id": 7, "title": "Dune", "authors": ["Frank Herbert"] }], "notes": ["Book titles, authors, tags, series and summaries come from …"], }
The untrusted marker is a field and not only a line in notes, because a client that reads the structured half would otherwise have to find the warning in a list of sentences. The two tools without it are get_stats, which is four counters this server has checked are numbers, and get_cover, which reports an id, a media type from a four-entry allowlist and a byte count — the image itself stays in the content block where a client renders it.
An over-budget result drops book summaries as before. Where that is still not enough it is now an error rather than JSON cut at the ceiling: unparseable text was tolerable in a text block and is not something structuredContent can carry, and the two channels have to hold the same value.
Pagination
Feeds are paginated by the instance's _books per page_ setting (default 60); the page size is not
Nur der Anfang wird gezeigt; den Rest findest du im Repo