Calibre MCP Server
Click on "Install 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?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the two search modes but doesn't describe important behavioral traits like whether this is a read-only operation, performance characteristics, error handling, or what happens when no results are found. For a search tool with zero annotation coverage, this leaves significant gaps.
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 appropriately concise with two sentences that efficiently convey the core functionality. It's front-loaded with the main purpose and follows with search mode details. Every sentence serves a purpose without 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 complexity of a search tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what results look like, how they're formatted, whether pagination is supported beyond the limit parameter, or what authentication/rate limits apply. The description should provide more context for effective tool 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 description adds minimal value beyond the input schema, which has 100% coverage. It mentions 'full-text content search (default) and metadata search using field syntax' which provides some context for the query parameter, but doesn't add meaningful semantics beyond what's already documented in the schema descriptions for each parameter.
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 capabilities (full-text content search and metadata search). It distinguishes the search function from the sibling 'fetch' tool by specifying search operations rather than retrieval. However, it doesn't explicitly differentiate from 'fetch' in terms of when to use each.
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 'default' full-text search and metadata search with field syntax, but it doesn't explicitly state when to use this tool versus the 'fetch' sibling or provide clear when/when-not guidance. The usage is implied rather than explicitly defined.
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. Dates show when Glama detected each change.
2 tool updates
- First observed
fetch - First observed
search
TDQS
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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
Search and save to your Purl read-it-later knowledge base from any MCP client.
MCP server for Project Gutenberg — 75,000+ public-domain ebooks with full plain-text retrieval.
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.8MIT
- 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.1422112MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ispyridis/calibre-mcp-nodejs'
If you have feedback or need assistance with the MCP directory API, please join our Discord server