Calibre-Web
概要
作者による説明(英語の原文)
Read-only MCP server for Calibre-Web: library search, browsing and covers via the OPDS feed
PopNx MCPの3つの柱
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
- 利用者の声iレビューはまだありませんレビューは今後のステップで、アカウント機能と一緒に始まります
- 私たちの基本チェックi1項目中1項目に合格公開情報からチェック。コードはまだスキャンしていません
- 利用状況iとても新しい↓ 89/週 · ★ –
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: パソコンで動く
- トランスポート: stdio
- カテゴリ: 検索・AIの記憶
- 入力が必要なもの:CALIBRE_WEB_URL, CALIBRE_WEB_PASSWORD
インストール
使っているAIアプリを選んで、設定をコピーしてください。
インストールの前に
- 基本チェック:1項目中1項目に合格
- あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
- 自分で入力するもの:
CALIBRE_WEB_URL,CALIBRE_WEB_USERNAME,CALIBRE_WEB_PASSWORD,CALIBRE_WEB_INSECURE_TLS,CALIBRE_WEB_ALLOW_TOOLS,CALIBRE_WEB_DENY_TOOLS
「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
- npmNode.jsのインストール(npxコマンドに必要)
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"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"
}
}
}
}ターミナルでこれを実行します
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-mcp動かす前に、空欄の値を入力してください。
または、設定を自分でコピーする
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"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"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
または、設定を自分でコピーする
プロジェクトの .vscode/mcp.json に貼り付けます
{
"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"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
自分で入力する値
- 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
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント ni-c で確認済みです
- … 未チェック
今もメンテナンスされている
このリポジトリはまだGitHubから読み取っていません
- … 未チェック
ライセンスがある
このリポジトリはまだGitHubから読み取っていません
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
検索・AIの記憶のほかのサーバーとの比較i
- このカテゴリのほかの5727件のうち0%よりスターが多い
- このカテゴリのほかの5727件のうち39%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの5727件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Calibre-Webは安全ですか?
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
入力が必要なもの:CALIBRE_WEB_URL, CALIBRE_WEB_PASSWORD
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は–、最新バージョン(0.3.1)がレジストリに届いたのは2 か月前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.js, Dockerも必要です。
代わりに使えるものは?
同じカテゴリには:Context7, Codebase Memory, Exa
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
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
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
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
冒頭だけを表示しています。続きはリポジトリで読めます