Calibre MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Calibre MCP Serversearch for books by Stephen King published after 2010"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Calibre MCP Server
A lightweight Node.js MCP server for searching and reading books from your Calibre ebook library. Designed specifically for Windows compatibility.
Features
Library Search: Search your Calibre library by title, author, or content
Book Reading: Retrieve and read book contents in various formats
Metadata Access: Get detailed book information and metadata
Windows Compatible: Optimized for Windows environments
Zero Dependencies: Lightweight implementation with no external dependencies
Related MCP server: calibre-mcp
Prerequisites
Node.js >= 16.0.0
Calibre installed on Windows
Installation
Clone this repository:
git clone https://github.com/yourusername/calibre-mcp-nodejs.git
cd calibre-mcp-nodejsInstall dependencies:
npm installUsage
Starting the Server
npm startAvailable Tools
search: Search for books in your Calibre libraryfetch: Retrieve specific content from books using epub:// URLs
Example MCP Configuration
Add to your MCP client configuration:
{
"mcpServers": {
"calibre": {
"command": "node",
"args": ["path/to/calibre-mcp-nodejs/server.js"]
}
}
}Configuration
The server automatically detects your Calibre library location. The search looks for Calibre in common installation paths:
C:\Program Files\Calibre2\C:\Program Files (x86)\Calibre2\Custom paths via environment variables
API Reference
Search Books
// Search by title
search({ query: "title:\"The Great Gatsby\"" })
// Search by author
search({ query: "author:\"F. Scott Fitzgerald\"" })
// Full-text search
search({ query: "green light" })Fetch Book Content
// Fetch specific book content
fetch({ url: "epub://book_id/chapter_1" })Project Structure
calibre-mcp-nodejs/
├── server.js # Main MCP server
├── package.json # Dependencies and scripts
├── test.js # Test file
├── test.bat # Windows test script
└── README.md # This fileTesting
Run the test:
npm testOr use the Windows batch file:
test.batTroubleshooting
Common Issues
Calibre Not Found: Ensure Calibre is installed in a standard location
Library Access: Make sure the Calibre library is accessible and not locked
Permissions: Run with appropriate permissions to access Calibre files
Debug Mode
Set the DEBUG environment variable for verbose logging:
set DEBUG=calibre:*
npm startSupported Formats
The server supports all formats that Calibre can handle:
EPUB
PDF
MOBI
AZW/AZW3
TXT
HTML
And many more
Performance
This lightweight server is designed for:
Fast startup times
Low memory usage
Quick search responses
Minimal system impact
Comparison with RAG Version
This is the lightweight version. For advanced features like vector search, semantic similarity, and RAG capabilities, see calibre-rag-mcp-nodejs.
Feature | Simple Version | RAG Version |
Basic Search | ✅ | ✅ |
Book Reading | ✅ | ✅ |
Dependencies | None | Many |
Memory Usage | Low | High |
Vector Search | ❌ | ✅ |
Semantic Search | ❌ | ✅ |
OCR Support | ❌ | ✅ |
Project Organization | ❌ | ✅ |
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests for new functionality
Submit a pull request
License
Licensed under the Apache License 2.0. See LICENSE file for details.
Support
For issues and questions, please open an issue on GitHub.
Changelog
v2.0.0
Improved Windows compatibility
Enhanced search functionality
Better error handling
Optimized performance
v1.0.0
Initial release
Basic search and fetch functionality
Windows support
Available Tools
2 toolsfetchC
Fetch specific content from a book using epub:// URL
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | epub:// URL from search results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool fetches content but doesn't disclose behavioral traits such as whether it's read-only or mutative, what happens with invalid URLs, rate limits, or authentication needs. This is inadequate for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the purpose and key constraint ('epub:// URL'). There's no wasted text, making it appropriately sized and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (fetching content with a single parameter), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'content' is returned (e.g., text, metadata), error handling, or other behavioral aspects needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'url' fully documented in the schema. The description adds minimal value by specifying 'epub:// URL from search results', which hints at the source but doesn't provide additional syntax or format details beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('fetch') and resource ('specific content from a book'), and specifies the required input format ('using epub:// URL'). However, it doesn't explicitly differentiate from the sibling 'search' tool, which likely returns URLs rather than content. This makes it clear but not fully sibling-distinctive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling 'search' tool, prerequisites like needing a URL from search results, or any exclusions. This leaves the agent with minimal context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchB
Search the Calibre ebook library. Supports both full-text content search (default) and metadata search using field syntax.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. For full-text: use natural language. For metadata: use field syntax (author:Name, title:"Title"). | |
| limit | No | Maximum number of results (default: 50) | |
| fuzzy_fallback | No | Alternative search terms if exact query fails |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the search types but lacks details on permissions needed, rate limits, response format, pagination, or error handling. For a search tool with no annotation coverage, this leaves significant gaps in understanding how it behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, consisting of two clear sentences that directly state the tool's purpose and key features. Every sentence earns its place by providing essential information without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (search functionality with multiple modes), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the search returns, how results are structured, or any behavioral constraints. For a tool with no structured output information, the description should provide more context to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description adds minimal value by implying the 'query' parameter supports both full-text and metadata syntax, but this is also covered in the schema. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search the Calibre ebook library' with specific search types (full-text content and metadata). It distinguishes from some siblings like 'add_books_to_project' or 'create_project' by focusing on search functionality, though it doesn't explicitly differentiate from 'search_project_context' which appears to be a related search tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context by mentioning 'Supports both full-text content search (default) and metadata search using field syntax,' which implies when to use each mode. However, it doesn't explicitly state when to choose this tool over alternatives like 'search_project_context' or 'fetch,' nor does it mention any prerequisites or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
fetch - First observed
search
TDQS
Scored across 2 tools
The two tools have completely distinct purposes: 'fetch' retrieves specific content from a book using an epub URL, while 'search' performs library-wide queries for books. There is no overlap in functionality, making it impossible to confuse them.
Both tool names follow a simple, consistent verb pattern ('fetch' and 'search') that clearly indicates their actions. The naming is straightforward and predictable across the set.
With only 2 tools, this server feels severely under-scoped for managing an ebook library. Essential operations like adding books, updating metadata, deleting entries, or listing books are missing, making it incomplete for typical Calibre workflows.
The toolset is highly incomplete for ebook library management. While 'fetch' and 'search' are useful, there are significant gaps: no CRUD operations for books (create, read, update, delete), no library organization tools, and no metadata management beyond search. This will cause agent failures in common tasks.
Maintenance
Related MCP Connectors
Books MCP — wraps Open Library API (free, no auth)
Access Sefaria's library of Jewish texts, commentaries, and learning schedules via MCP
- docs2mcpOAuthcom.docs2mcp
Query your own PDFs and documents from any MCP client. Every answer cites the page it came from.
Search and save to your Purl read-it-later knowledge base from any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables semantic search over local Calibre libraries via MCP, allowing AI assistants to query books, annotations, and export bibliographies while keeping data private.7MIT
- AlicenseNot gradedqualityBmaintenanceEnables conversational management of a Calibre ebook library via MCP, including search, metadata editing, adding, converting, deduplicating, removing, and emailing books with human-in-the-loop safety.1MIT
- AlicenseNot gradedqualityAmaintenanceA read-only MCP server for an existing Calibre ebook library, enabling metadata search, full-text search, and category browsing via the Model Context Protocol.MIT
- AlicenseAqualityAmaintenanceConnects MCP clients to a Calibre ebook library for semantic search, metadata curation, and library management via natural language.14107 npm15MIT