calibre-manager
An MCP server to manage and organize a Calibre ebook library, enabling metadata editing, search, conversion, and more through AI assistants.
README
Calibre Manager MCP
An MCP server to manage and organize a Calibre library from an AI assistant (Claude Desktop, Cursor, etc.).
Unlike other Calibre MCPs —which are read-only— this one is built to write and inject metadata and keep your library spotless: tags, authors, series, covers, duplicates, conversion to AZW3 for Kindle, and more.
All writing goes through the official calibredb command, which is the supported, safe way to modify the library: it never touches metadata.db directly, avoiding corruption and conflicts.
Tools
| Tool | What it does |
|---|---|
health_check |
Verifies that calibredb and the library respond. |
search_books |
Searches using Calibre syntax (tag:, author:, series:...). |
get_book_metadata |
Returns all metadata for a book. |
list_categories |
Lists a category's values with counts (tags, authors...). |
library_stats |
Total books and breakdown by category. |
set_metadata |
Sets (replaces) a book's fields. |
add_tags |
Adds tags without removing the existing ones. |
remove_tags |
Removes specific tags, keeping the rest. |
rename_tag |
Renames a tag across the whole library. |
bulk_set_metadata |
Applies metadata to every book matching a search. |
add_book |
Adds a file (EPUB/PDF/MOBI/AZW3...) to the library. |
remove_books |
Removes books by id (requires confirmation). |
convert_book |
Converts to another format (e.g. AZW3) and adds it to the book. |
export_books |
Exports books to a folder (e.g. for your Kindle). |
find_duplicates |
Detects duplicates by (title, author). |
find_books_missing_metadata |
Lists books without tags/cover/series/etc. |
fetch_online_metadata |
Fetches online metadata (Google Books...) and applies it. |
Requirements
- Calibre installed (includes
calibredb,ebook-convertandfetch-ebook-metadata). - Node.js 18 or newer.
Installation
git clone https://github.com/ericknavarro/calibre-manager-mcp.git
cd calibre-manager-mcp
npm install # installs dependencies and builds (the "prepare" script)
To rebuild after a change:
npm run build
The compiled server lives at dist/index.js.
Configuration in Claude Desktop
Edit claude_desktop_config.json (on Windows: %APPDATA%\Claude\claude_desktop_config.json) and add:
{
"mcpServers": {
"calibre-manager": {
"command": "node",
"args": ["C:\\Users\\<your-username>\\repos\\calibre-manager-mcp\\dist\\index.js"],
"env": {
"CALIBRE_LIBRARY_PATH": "C:\\Users\\<your-username>\\calibre",
"CALIBREDB_PATH": "C:\\Program Files\\Calibre2\\calibredb.exe",
"EBOOK_CONVERT_PATH": "C:\\Program Files\\Calibre2\\ebook-convert.exe",
"FETCH_EBOOK_METADATA_PATH": "C:\\Program Files\\Calibre2\\fetch-ebook-metadata.exe"
}
}
}
}
Restart Claude Desktop. To check it works, ask it: "Run a health_check on Calibre".
Where is my library?
It's the folder that contains metadata.db (in Calibre: top-right, over the library name → "Switch/create library" shows the path). If you omit it, Calibre's default library is used.
Environment variables
| Variable | Required | Description |
|---|---|---|
CALIBRE_LIBRARY_PATH |
No | Path to the library, or Content Server URL. If omitted, the default. |
CALIBREDB_PATH |
No | Path to calibredb (defaults to looking it up on PATH). |
EBOOK_CONVERT_PATH |
No | Path to ebook-convert. |
FETCH_EBOOK_METADATA_PATH |
No | Path to fetch-ebook-metadata. |
CALIBRE_USERNAME / CALIBRE_PASSWORD |
No | Only if you use the Content Server via URL. |
Important note: library locking
While the Calibre app is open using that same library, calibredb cannot open it — for reading or writing — because the app holds a lock (you get an error like "Another calibre program is running"). You have two options:
- Close Calibre before write operations. (simplest)
- Start Calibre's Content Server and point
CALIBRE_LIBRARY_PATHat its URL (http://localhost:8080#library) with a username/password.
In short: keep Calibre closed while you use this MCP, or run the Content Server (which lets multiple programs share the library safely).
Usage examples
Once configured, you can ask Claude things like:
- "Tag book 5 with Philosophy and Stoicism without removing its tags."
- "Set the series 'Greek Classics' on all books by Plato and Aristotle."
- "Find duplicates in my library."
- "Which books have no cover?"
- "Convert book 12 to AZW3 for my Kindle."
- "Fetch the online metadata for 'The Name of the Rose' by Umberto Eco and apply it to book 8."
License
MIT © Erick Navarro
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.