Skip to main content
Glama
ni-c

calibreweb-mcp

by ni-c

calibreweb-mcp

CI npm version node license container docs

Un servidor de solo lectura del Model Context Protocol para Calibre-Web (y Calibre-Web Automated), la interfaz web autohospedada de bibliotecas de libros electrónicos.

Calibre-Web no tiene una API REST; su única interfaz estable legible por máquina es el feed del catálogo OPDS que sirve para aplicaciones de lectura de libros electrónicos. Este servidor habla ese feed: XML Atom con autenticación HTTP Basic de entrada, datos estructurados de libros de salida. Busca en la biblioteca, navega por las vistas y estanterías seleccionadas, sigue enlaces de descarga por formato y obtén imágenes de portada directamente en la conversación. Nunca escribe nada: cada herramienta es una petición GET a las rutas OPDS.

Demostración: listando las herramientas, buscando en la biblioteca y leyendo las estadísticas a través de la CLI del Inspector MCP

📖 Documentación completa: calibreweb-mcp.ni-c.de

Requisitos

  • Node.js 22 o superior

  • Una instancia de Calibre-Web (desarrollada contra la imagen actual linuxserver/calibre-web; Calibre-Web Automated funciona de la misma manera)

  • Un usuario de Calibre-Web para el servidor. El feed OPDS se autentica con el inicio de sesión web normal: usa una cuenta dedicada con solo los roles de Ver y Descargar, no tu cuenta de administrador. Si la instancia permite la navegación anónima, el servidor también puede ejecutarse sin credenciales.

Related MCP server: access-calibre

Configuración

Variable

Requerido

Descripción

CALIBRE_WEB_URL

URL raíz de la instancia, por ejemplo https://books.example.com. La ruta /opds se añade automáticamente.

CALIBRE_WEB_USERNAME

sí¹

Nombre de usuario de la cuenta de Calibre-Web.

CALIBRE_WEB_PASSWORD

sí¹

Contraseña de esa cuenta (la contraseña de inicio de sesión web).

CALIBRE_WEB_INSECURE_TLS

no

true para aceptar certificados autofirmados — limitado solo al host configurado.

¹ Deja ambos sin establecer para una instancia que permita navegación anónima; establecer solo uno de ellos es un error de configuración.

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 = "..." }

Herramientas

Todas las herramientas son de solo lectura (readOnlyHint: true).

Herramienta

Descripción

search_books

Buscar por título, autor, serie, editorial y etiquetas. Calibre-Web devuelve todas las coincidencias a la vez; el resultado se limita del lado del cliente (limit, por defecto 50) e informa del recuento real de coincidencias.

list_books

Listados de libros por vista: new (por defecto), hot, rated, discover (aleatorio), read, unread o all (opcionalmente limitado a una letra inicial).

list_shelves

Estanterías públicas más las estanterías propias del usuario configurado.

get_shelf_books

Los libros en una estantería, en el orden de la estantería.

get_cover

La portada de un libro, devuelta como una imagen que el cliente puede mostrar.

get_stats

Total de libros, autores, categorías y series.

Las entradas de libros incluyen autores, etiquetas, serie (con índice), valoración, un resumen acotado, una URL de portada y URLs de descarga por formato — enlaces listos para que un humano los abra, ya que el modelo en sí no tiene razón para descargar un EPUB.

Paginación

Los feeds se paginan según la configuración de libros por página de la instancia (por defecto 60); el tamaño de página no es controlable por el cliente. Cada listado devuelve pagination.nextOffset cuando existen más páginas — pásalo como offset en la siguiente llamada. La vista discover es una selección aleatoria y no está paginada.

Deliberadamente fuera del alcance

  • Sin escrituras. El feed OPDS no tiene ninguna, y este servidor no añadiría ninguna.

  • Sin descargas de archivos. Las herramientas devuelven URLs de descarga, no los archivos de los libros electrónicos.

  • Sin navegación por facetas (autores/series/etiquetas/editoriales/idiomas/formatos como sus propios feeds de índice). search_books cubre esas búsquedas; las rutas existen y se pueden añadir herramientas para ellas si hay un caso de uso real.

Seguridad

  • El servidor es de solo lectura por construcción — solo peticiones GET, sin estado en ninguna parte.

  • Los metadatos de los libros son datos de terceros no confiables; cada resultado lo indica, se eliminan los caracteres de control y se deshabilita el procesamiento de entidades XML (los documentos que declaran un DOCTYPE o entidades son rechazados de plano).

  • Las respuestas están limitadas antes de analizarlas (8 MB de feeds, 1 MB de portadas) y nuevamente antes de que lleguen al modelo (presupuestos por libro y por respuesta).

  • Los hrefs del feed solo se transmiten cuando se resuelven al origen configurado a través de http(s) — un feed hostil no puede insertar URLs javascript:, file: o de origen cruzado en los resultados.

  • Se rechazan las redirecciones para que las credenciales Basic nunca se puedan reutilizar en otro host; las portadas solo se transmiten para tipos de contenido de imagen reales.

  • La contraseña se elimina del entorno del proceso al inicio, y las URLs se redactan de credenciales antes de aparecer en cualquier registro o resultado.

Contenedor

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

Desarrollo

npm install
npm test            # unit tests against a stubbed OPDS feed, no instance needed
npm run lint
npm run build

Ver CONTRIBUTING.md.

Publicación

  1. Actualiza CHANGELOG.md y aumenta la versión en package.json (+ archivo de bloqueo).

  2. npm run lint && npm run test:coverage && npm run build

  3. Etiqueta la publicación: git tag -s vX.Y.Z -m "vX.Y.Z" && git push origin vX.Y.Z

Licencia

MIT

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    An MCP server to manage and organize a Calibre ebook library, enabling metadata editing, search, conversion, and more through AI assistants.
    17
    4
    MIT
  • A
    license
    A
    quality
    C
    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
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that lets an LLM browse, search, and download books from OPDS catalogs (e.g., Project Gutenberg, Standard Ebooks) using tools for feed navigation, full-text search, and acquisition link downloads.
    4
    1
    AGPL 3.0

View all related MCP servers

Related MCP Connectors

  • MCP server for Project Gutenberg — 75,000+ public-domain ebooks with full plain-text retrieval.

  • Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only

  • MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ni-c/calibreweb-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server