annotation-extractor

MCP server for extracting annotations, highlights, and reading progress from e-readers. Supports Kobo, Kindle, and Boox.

mcp tools agents github

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.