Skip to main content
Glama
calibre-manager

calibre-manager

by ericknavarro

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.

Related MCP server: calibre-mcp

Requirements

  • Calibre installed (includes calibredb, ebook-convert and fetch-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:

  1. Close Calibre before write operations. (simplest)

  2. Start Calibre's Content Server and point CALIBRE_LIBRARY_PATH at 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

Available Tools

17 tools
add_bookA

Adds a file (EPUB/PDF/MOBI/AZW3...) to the library. Returns the new id. automerge (optional): 'ignore' | 'overwrite' | 'new_record' to handle duplicates. identifiers e.g. 'isbn:9788491050000'.

Inputs: file_path (required), authors, title, tags, +5 more.

add_tagsA

Adds tags to a book WITHOUT removing the existing ones. Multiple tags comma-separated.

Inputs: book_id (required), tags (required).

bulk_set_metadataA

Applies the same metadata to ALL books matching a search. Useful for organizing in bulk (e.g. setting a series or publisher on a group). 'query' uses Calibre syntax; 'fields' works like set_metadata (replaces the field). To add tags in bulk without removing, call add_tags per book.

Inputs: query (required), fields (required).

convert_bookA

Converts a book to another format and ADDS that format to the same library book (does not create a new book). Ideal for generating AZW3 for Kindle. If you don't pass source_format, it picks the best available (epub > azw3 > mobi > fb2 > pdf).

Inputs: book_id (required), to_format, source_format.

export_booksB

Exports books to a folder on disk (e.g. to copy them to a Kindle). book_ids comma-separated or 'all'. formats optional, e.g. 'azw3,epub'.

Inputs: book_ids (required), to_dir (required), formats.

fetch_online_metadataA

Looks up metadata from online sources (Google Books, etc.) by title/author or ISBN and returns an OPF. If you pass apply_to_book_id, it applies that metadata (and optionally the cover) to that book in your library.

Inputs: title, authors, isbn, apply_to_book_id, +1 more.

find_books_missing_metadataA

Lists books that are missing a specific metadata field. missing accepts: tags, comments, series, publisher, cover, identifiers, languages, pubdate.

Inputs: missing.

find_duplicatesA

Detects likely duplicates by grouping on normalized (title, author). Returns the groups with more than one book.

Inputs: no named parameters.

get_book_metadataB

Returns ALL metadata for a book by its id (JSON).

Inputs: book_id (required).

health_checkA

Checks that calibredb is reachable and the library responds. Use it first to diagnose the configuration (calibredb path, library, etc.).

Inputs: no named parameters.

library_statsA

Library summary: total number of books and a breakdown by category (tags, authors, series, formats).

Inputs: no named parameters.

list_categoriesA

Lists the values of a category with their book counts, as CSV. category accepts: tags, authors, series, publisher, languages, formats, rating, identifiers.

Inputs: category.

remove_booksA

Removes books from the library by id (comma-separated). DESTRUCTIVE: requires confirm=true. permanent=true skips Calibre's recycle bin.

Inputs: book_ids (required), confirm, permanent.

remove_tagsC

Removes specific tags from a book, keeping the rest.

Inputs: book_id (required), tags (required).

rename_tagA

Renames a tag across the WHOLE library (on every book that has it).

Inputs: old (required), new (required).

search_booksA

Searches books using Calibre's search syntax and returns JSON. Example queries: 'tag:Philosophy and author:Plato', 'series:"Classics"', 'title:Republic', 'pubdate:>2010'. Leave query empty to list (use limit).

Inputs: query, limit, fields.

set_metadataA

Sets (REPLACES) a book's metadata. 'fields' is an object of field:value pairs. Fields: title, title_sort, authors (multiple with ' & '), author_sort ('Last, First'), tags (comma-separated), series, series_index, publisher, pubdate ('2020-01-01'), languages ('eng'/'spa'), rating (0–10, where 10 = 5 stars), comments (HTML allowed), identifiers ('isbn:9788491050000'), cover (path to an image). NOTE: it replaces the whole field value; to keep the other tags use add_tags/remove_tags.

Inputs: book_id (required), fields (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 17 tools

    Disambiguation5/5

    Each tool targets a specific operation or resource (e.g., add_book vs convert_book, add_tags vs remove_tags) with no functional overlap. Descriptions clearly distinguish when to use each, avoiding ambiguity for agents.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (e.g., add_book, search_books, rename_tag) with no mixing of cases or conventions, making the API predictable.

    Tool Count5/5

    17 tools is well-scoped for a Calibre library manager, covering essential operations without being too sparse or overwhelming. Each tool serves a clear and necessary purpose.

    Completeness5/5

    The tool set covers full CRUD, metadata management, format conversion, export, search, duplicate detection, bulk operations, and health checks. Only minor gaps like in-place file replacement exist, but core workflows are fully supported.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that enables querying and managing Calibre libraries via chat by interacting with the Calibre content server over HTTP. It allows users to search for books, update metadata, manage authors and tags, and handle book file uploads or conversions.
      1,040 npm
      3
      BSD 3-Clause
    • F
      license
      A
      quality
      D
      maintenance
      An MCP server for managing local Calibre libraries using the calibredb CLI. It allows users to search books, manage metadata, and retrieve EPUB file paths through natural language commands.
      7
      -
    • A
      license
      A
      quality
      D
      maintenance
      A local stdio MCP server that enables AI tools to search a self-hosted Calibre library over SSH, supporting metadata queries, full-text search, and book details.
      7
      MIT