Co-Reading MCP

Локальная читальня для Claude: книга EPUB или TXT режется на фрагменты, а заметки на полях и прогресс сохраняются между сессиями.

  • 119 ★ репозитория
  • Последний коммит
  • MIT
MCP-сервер

Расширенный доступ

Почему такой уровень

  • Сервер читает и пишет файлы книг, заметок и прогресса в выбранном каталоге, а инструмент `reading_delete_book` убирает книгу в корзину.
  • Удаленный режим без HTTPS и токена открывает вашу библиотеку любому, кто знает адрес.
Все причины и проверки

idleprocesscc/co-reading-mcp

Установка

Ручная установка

{"mcpServers": {"co-reading": {"command": "node", "args": ["/absolute/path/to/co-reading-mcp/src/server.js"], "env": {"READING_MCP_DATA_DIR": "/absolute/path/to/co-reading-mcp/data"}}}}

Фрагмент из README для Claude Desktop и Claude Code. Перед этим выполните `cp -R data.example data`.

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Сервер читает и пишет файлы книг, заметок и прогресса в выбранном каталоге, а инструмент `reading_delete_book` убирает книгу в корзину.
  • Удаленный режим без HTTPS и токена открывает вашу библиотеку любому, кто знает адрес.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

MCP-сервер импортирует EPUB и обычный текст в устойчивые фрагменты и сохраняет границы глав. Claude читает книгу по частям с указателями `prevId` и `nextId`, продолжает с первого непрочитанного фрагмента и ищет по книге в кэше. Человек и Claude оставляют заметки на полях. Заметки читателя можно хранить приватно, а потом отправить Claude одной командой, и ответ ляжет под ними. Сервер отмечает прогресс чтения, показывает небольшие карточки, когда оба остановились на одном отрывке, и выдает короткий ритуал по окончании книги. В комплекте идет простой читатель в браузере по адресу `http://127.0.0.1:8787` и REST API.

Для кого. Читателям, которые разбирают книгу вместе с Claude и хотят, чтобы заметки и прогресс не терялись после закрытия чата.

Подходит, если

  • Книгу читают по главам вместе с Claude, и разговор продолжают с того места, где остановились.
  • Нужен поиск по тексту книги без загрузки файла в каждый новый чат.
  • Собственные пометки сначала копятся, и только потом читатель решает показать их Claude.
  • Книги загружают на удаленный сервер прямо из браузера, потому что вложения чата не доходят до его файловой системы.

Не подходит, если

  • Нужна быстрая сводка книги одним запросом: сервер рассчитан на чтение по фрагментам.
  • Сервер выставляют в публичный интернет без HTTPS и `MCP_AUTH_TOKEN`.
  • Формат книги отличается от EPUB, TXT и Markdown.

Пример запроса к агенту

Продолжи чтение книги с того места, где мы остановились, и оставь заметку на полях к последнему абзацу.

MCP

Транспорт
stdio, http, sse
Авторизация
не нужна

Переменные окружения

READING_MCP_DATA_DIR обязательная
Каталог с книгами, заметками и прогрессом.
MCP_AUTH_TOKEN секрет
Токен для удаленного сервера, обязателен вне localhost.

Ограничения

Нужны Node.js 18 или новее и Python 3.10 или новее для скриптов импорта. Сервер надо запускать самому, готового пакета в npm нет. Для удаленного доступа обязательны HTTPS и `MCP_AUTH_TOKEN`, иначе читалку и API видно всем. Токен в адресе `/?token=` попадает в первый запрос, поэтому на общих устройствах его не используют. Для красивых PNG-карточек отдельно ставят Chromium через Playwright, без него карточки рисуются в SVG. Картинки из EPUB сохраняются только с флагом `--keep-images`.

Как отключить. Уберите запись `co-reading` из конфигурации клиента и остановите процесс `node src/server.js`. Данные книг, заметок и прогресса лежат в каталоге `data/`, который удаляют отдельно.

Частые вопросы

Как импортировать книгу?

Для EPUB выполните `python3 scripts/import_epub.py ./book.epub --out ./data/books`, для текста — `python3 scripts/import_text.py ./book.txt --title "Название" --out ./data/books`. Загрузить файл можно и кнопкой в браузерной читалке.

Как включить удаленный доступ?

Запустите `READING_MCP_DATA_DIR=./data MCP_AUTH_TOKEN="секрет" npm run start:sse`. Адрес `/mcp` подходит для подключения Claude, `/sse` оставлен для старых клиентов.

Что происходит при удалении книги?

Книга исчезает из библиотеки, а ее папка и связанные данные уходят в `data/trash/books/`. Корзина очищается через 30 дней, параметр `READING_TRASH_RETENTION_DAYS=0` отключает очистку.

Какие инструменты есть у сервера?

Чтение и поиск (`reading_list_books`, `reading_read_chunk`, `reading_continue`, `reading_search_chunks`), импорт (`reading_import_book`), заметки (`reading_annotate_passage`, `reading_submit_user_notes`) и прогресс (`reading_mark_read`, `reading_get_progress`).

Как запустить читалку для человека?

Выполните `npm run reader` и откройте `http://127.0.0.1:8787`. Тот же процесс держит и MCP-сервер по stdio, если в конфигурации клиента указан `src/http.js`.

Обсуждение

Вопросов и отзывов пока нет.

MCP-серверы

MCP-сервер для Apple Books на macOS: агент видит текущую книгу, читает главы, выделения и заметки, ищет книги

MCP-серверРасширенный доступ64Звезды репозитория

MCP-сервер для вики BookStack: поиск и чтение по умолчанию, запись включается отдельно, права берутся из токена.

MCP-серверРасширенный доступ54Звезды репозитория

MCP-сервер для WeChat Reading: ИИ-агент получает вашу книжную полку, заметки, подчеркивания и популярные отзывы

MCP-серверШирокий доступ584Звезды репозитория

Minutes

minutes

Официальный

Локальный MCP-сервер для памяти о встречах: запись и транскрипция на устройстве в Markdown, поиск истории из Claude Code, Codex, Cursor и других MCP-клиентов

MCP-серверРасширенный доступ1,6 тыс.Звезды репозитория
Официальный

Официальный MCP-сервер Kibela ищет, читает и правит заметки, папки и комментарии вашей вики прямо из чата с ассистентом

MCP-серверРасширенный доступ16Звезды репозитория
Официальный

MCP-сервер только для чтения: Claude Code, Claude Desktop и Codex ищут по локальным встречам, заметкам и транскриптам DoodleNote

MCP-серверРасширенный доступ186Звезды репозитория

Коротко о README

Проект задуман как общая поверхность чтения для человека и Claude с привязанными заметками. Личные данные остаются в игнорируемом git каталоге `data/`, а в репозитории лежит только учебный пример.

Бейдж для README

Сообщить о проблеме