annotation-extractor
MCP server for extracting annotations, highlights, and reading progress from e-readers. Supports Kobo, Kindle, and Boox.
Install
pip install annotation-extractor Or from source:
git clone https://github.com/rkaushik29/annotation-extractor-mcp.git
cd annotation-extractor
pip install -e . Usage
Connect your e-reader via USB, add the MCP server to your agent, and start asking questions about your reading.
| Client | Setup |
|---|---|
| Claude Code | claude mcp add annotations -- annotation-extractor |
| Claude Desktop | Add to claude_desktop_config.json |
| OpenClaw | openclaw mcp add annotations -- annotation-extractor |
| Gemini CLI | Add to ~/.gemini/settings.json |
| Codex | codex --mcp-config mcp.json |
For JSON config clients, use:
{
"mcpServers": {
"annotations": {
"command": "annotation-extractor"
}
}
} Try it out
Once the MCP is connected and your e-reader is plugged in, try asking your agent:
"What are my highlights from the last book I read?"
"Search my annotations for anything about consciousness"
"Show me all the notes I took while reading Neuromancer"
Supported E-Readers
| Reader | Data Source |
|---|---|
| Kobo | .kobo/KoboReader.sqlite via USB |
| Kindle | My Clippings.txt via USB |
| Boox | Annotation export directory (one .txt per book) via USB |
Tools
| Tool | Description |
|---|---|
list_books | List all books, optionally filtered to those with annotations |
get_annotations | Get highlights and notes for a specific book (by title or ID) |
search_annotations | Full-text search across all highlights and notes |
get_reading_progress | Reading progress, time spent, and status for all books |
get_book_details | Detailed metadata for a specific book |
All tools accept optional backend_name (e.g. "kobo", "kindle", "boox") and db_path parameters.
When omitted, the server auto-detects connected devices.
Environment Variables
If auto-detection doesn't find your device, point to the data source directly:
| Variable | Backend |
|---|---|
KOBO_DB_PATH | Kobo |
KINDLE_CLIPPINGS_PATH | Kindle |
BOOX_EXPORT_PATH | Boox |
Development
git clone https://github.com/rkaushik29/annotation-extractor-mcp.git
cd annotation-extractor
pip install -e ".[dev]"
pytest
The project uses a pluggable backend architecture.
To add a new e-reader, implement the EReaderBackend abstract class
and register it in registry.py.