Skip to main content
Glama
ispyridis

Calibre MCP Server

by ispyridis
README.md
# 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

## Prerequisites

- Node.js >= 16.0.0
- Calibre installed on Windows

## Installation

1. Clone this repository:
```bash
git clone https://github.com/yourusername/calibre-mcp-nodejs.git
cd calibre-mcp-nodejs
```

2. Install dependencies:
```bash
npm install
```

## Usage

### Starting the Server

```bash
npm start
```

### Available Tools

- `search`: Search for books in your Calibre library
- `fetch`: Retrieve specific content from books using epub:// URLs

### Example MCP Configuration

Add to your MCP client configuration:

```json
{
  "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

```javascript
// 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

```javascript
// 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 file
```

## Testing

Run the test:

```bash
npm test
```

Or use the Windows batch file:
```bash
test.bat
```

## Troubleshooting

### Common Issues

1. **Calibre Not Found**: Ensure Calibre is installed in a standard location
2. **Library Access**: Make sure the Calibre library is accessible and not locked
3. **Permissions**: Run with appropriate permissions to access Calibre files

### Debug Mode

Set the DEBUG environment variable for verbose logging:
```bash
set DEBUG=calibre:*
npm start
```

## Supported 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](https://github.com/yourusername/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

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests for new functionality
5. 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

TDQS

B3.1/5.0

Scored across 2 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness2/5

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

ActivityInactive
ResponsivenessNo issues