Skip to main content

MCP server for extracting annotations and highlights from e-readers (Kobo, Kindle, Boox)

Project description

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: {"mcpServers": {"annotations": {"command": "annotation-extractor"}}}
OpenClaw openclaw mcp add annotations -- annotation-extractor
Gemini CLI Add to ~/.gemini/settings.json: {"mcpServers": {"annotations": {"command": "annotation-extractor"}}}
Codex codex --mcp-config mcp.json with mcp.json: {"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"

Environment variables

If auto-detection doesn't find your device, you can point to the data source directly:

KOBO_DB_PATH=/path/to/KoboReader.sqlite annotation-extractor
KINDLE_CLIPPINGS_PATH=/path/to/My\ Clippings.txt annotation-extractor
BOOX_EXPORT_PATH=/path/to/boox-export annotation-extractor

Supported e-readers

Reader Data source
Kobo .kobo/KoboReader.sqlite via USB
Kindle My Clippings.txt via USB
Boox Annotation export directory (one .txt file 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.

Adding a new backend

  1. Create src/annotation_extractor/backends/yourreader.py implementing EReaderBackend
  2. Add your backend to _ALL_BACKENDS in registry.py
  3. No changes needed to server.py or models.py

Development

git clone https://github.com/rohitkaushik/annotation-extractor.git
cd annotation-extractor
pip install -e ".[dev]"
pytest

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

annotation_extractor-0.3.0.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

annotation_extractor-0.3.0-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file annotation_extractor-0.3.0.tar.gz.

File metadata

  • Download URL: annotation_extractor-0.3.0.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for annotation_extractor-0.3.0.tar.gz
Algorithm Hash digest
SHA256 ad568bb3b72d7a7a4b5d0f6ae5b24740e06b9562114cc55726e3a492c88ae14f
MD5 94fa4db915a224482ad858f282df2ac6
BLAKE2b-256 5d5b8807426200f1d43821ec775afb484b54e804c31327aa4c54fdeac732a0b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for annotation_extractor-0.3.0.tar.gz:

Publisher: publish.yml on rkaushik29/annotation-extractor-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file annotation_extractor-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for annotation_extractor-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 20ec3b676f56fefdfcb779e5039aedb87ff3e8aa424fd99373fa06b5f19da4a6
MD5 b25131b34fd74646d756422e9b61679b
BLAKE2b-256 689ba6f2db1f4a32c97a4b87e11112ef539f71e55bf23d17fa54f926cbb0cf6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for annotation_extractor-0.3.0-py3-none-any.whl:

Publisher: publish.yml on rkaushik29/annotation-extractor-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page