Skip to main content
Glama
jherard-fr

cursor-chats-bridge

by jherard-fr

cursor-chats-bridge

Мост «только для чтения», позволяющий Claude Code видеть, что вы делаете в Cursor — в режиме реального времени и между сессиями.

platform: windows license: MIT

Если вы используете Claude Code и Cursor параллельно — например: редактирование с помощью агента в Cursor во время планирования/аудита с Claude — этот навык подключает локальную базу данных чатов Cursor к Claude в качестве MCP-сервера, а также ведет журнал новых сообщений каждые 5 минут, чтобы Claude мог отвечать на вопросы вроде «что Cursor делал сегодня утром?», даже когда Claude не был запущен.

Разработан как «только для чтения». Никогда не изменяет данные Cursor.


Что вы получаете

После установки Claude Code получает семь инструментов (все с префиксом mcp__cursor-chats__):

Инструмент

Что он делает

list_workspaces

Список всех рабочих областей Cursor, обнаруженных в истории чатов, с хеш-идентификаторами и путями.

list_chats

Список чатов Cursor, опционально отфильтрованный по ID рабочей области, подстроке пути или автоматически по cwd Claude.

get_chat

Получение сообщений конкретного чата (по UUID композитора).

get_active_chat

Удобство: получение текущих сообщений открытого чата Cursor для рабочей области.

search_chats

Поиск по подстроке в названиях чатов, подзаголовках и тексте сообщений.

get_journal

Чтение журнала новых сообщений, захваченных фоновым опросчиком (только добавление).

get_journal_summary

Агрегированная статистика за временной интервал: сообщения по ролям, затронутые диалоги, недавние фрагменты текста.

Плюс запланированная задача Windows ClaudeCursorChatPoller, которая запускается каждые 5 минут, обнаруживает новые сообщения в активном чате каждой рабочей области и добавляет их в журнал JSON-lines по пути ~/.claude/mcp/cursor-chats/journal.ndjson.

Related MCP server: cursor-history-mcp

Зачем это нужно

Данные чатов Cursor хранятся локально в SQLite KV-хранилище (%APPDATA%\Cursor\User\globalStorage\state.vscdb), но с двумя досадными ограничениями:

  1. Только текущий открытый чат для каждой рабочей области сохраняет свои сообщения локально — старые чаты архивируются в облако Cursor, оставляя только метаданные.

  2. Нет публичного API.

Поэтому одного «живого» MCP-запроса недостаточно: если вы спросите «что Cursor делал сегодня утром?» в 15:00, соответствующие сообщения могут быть уже заархивированы. Опросчик решает эту проблему, захватывая сообщения по мере их появления, с тегированием рабочих областей, чтобы разные проекты Claude могли корректно фильтровать данные.

Архитектура

┌──────────────────────────────────────────────────────────────────┐
│  Windows Task Scheduler  >>  pythonw poller.py  >>  /5 min, 24/7│
└──────────────────────────────────────────────────────────────────┘
                                   │
                                   ▼ (read mode=ro,immutable=1)
              ┌──────────────────────────────────┐
              │  Cursor SQLite globalStorage     │ ← live, written by Cursor
              │  state.vscdb / cursorDiskKV      │
              └──────────────────┬───────────────┘
                                 │
                                 ▼ (append-only)
              ┌──────────────────────────────────┐
              │  ~/.claude/mcp/cursor-chats/     │
              │   ├─ active_snapshot.json        │
              │   ├─ journal.ndjson              │
              │   └─ poller.log     (errors)     │
              └──────────────────┬───────────────┘
                                 │
                                 ▼ (on-demand)
              ┌──────────────────────────────────┐
              │   MCP server (server.py)         │
              │   exposes 7 tools                │
              └──────────────────┬───────────────┘
                                 │
                                 ▼
                            Claude Code

Более подробную информацию о внутренних механизмах (шаблоны ключей SQLite, идентификация рабочих областей, граничные случаи) см. в references/architecture.md.

Требования

  • Windows 10 / 11 (Linux/macOS пока не поддерживаются — используются schtasks и путь Cursor в Windows)

  • Python 3.10+ с доступным pythonw.exe (фоновый запуск для запланированной задачи)

  • Claude Code CLI в PATH (команда claude --version должна работать)

  • Cursor установлен и запущен хотя бы один раз (SQLite создается при первом запуске)

Установщик проверяет все эти условия и немедленно сообщает об ошибках, если чего-то не хватает.

Установка

Как навык Claude Code (рекомендуется)

  1. Поместите папку в директорию навыков Claude Code:

    ~/.claude/skills/cursor-chats-bridge/

    В Windows: C:\Users\<вы>\.claude\skills\cursor-chats-bridge\.

  2. Перезапустите Claude Code (или просто откройте новую сессию).

  3. Спросите Claude что-то вроде «install the cursor-chats bridge» или «set up the Claude-Cursor connection» — описание навыка настроено на срабатывание по этим фразам.

  4. Claude прочитает SKILL.md, запустит scripts/install.ps1 и сообщит о результате.

  5. Перезапустите Claude Desktop (полностью завершите работу через системный трей), чтобы загрузить MCP-сервер.

Ручная установка (без Claude)

Если вы предпочитаете пропустить агентский шаг:

powershell -ExecutionPolicy Bypass -File "C:\Users\<you>\.claude\skills\cursor-chats-bridge\scripts\install.ps1"

Скрипт:

  1. Проверяет предварительные требования (Python, pythonw.exe, claude CLI, путь к SQLite Cursor)

  2. Копирует server.py и poller.py в ~/.claude/mcp/cursor-chats/

  3. Устанавливает пакет Python mcp через pip, если он отсутствует

  4. Удаляет любую предыдущую регистрацию MCP cursor-chats, затем добавляет её (область по умолчанию: local)

  5. Создает/обновляет запланированную задачу ClaudeCursorChatPoller (каждые 5 минут, без вывода окна через pythonw.exe)

  6. Запускает опросчик один раз для создания снимка/журнала

Повторный запуск безопасен: каждый шаг использует семантику принудительной перезаписи. Файлы состояния (active_snapshot.json, journal.ndjson) сохраняются.

Флаги установщика

Флаг

Эффект

-Quiet

Подавить вывод хода выполнения.

-NoTask

Пропустить создание запланированной задачи (для разового использования / отладки).

-Scope local|user|project

Область регистрации MCP. По умолчанию local (только текущий проект). Используйте user для глобальной регистрации. Не используйте project — это приведет к записи в .mcp.json, который предназначен для коммита в репозиторий.

Проверка

После установки и перезапуска Claude:

claude mcp list
schtasks /Query /TN ClaudeCursorChatPoller /FO LIST

Обе команды должны показать записи; строка claude mcp list должна сообщать ✓ Connected для cursor-chats.

В сессии Claude вы можете спросить:

«List my Cursor workspaces.» «What's the latest message from my Cursor agent?» «Summarize what I did with Cursor this morning.»

Как Claude использует это (типичные паттерны)

MCP не опрашивает данные самостоятельно — Claude вызывает инструменты, когда это необходимо. Фоновый опросчик (отдельный процесс) обеспечивает непрерывный захват, поэтому запросы к журналу позволяют ответить на вопрос «что произошло, пока ты не смотрел», не поддерживая активный диалог.

Примеры:

  • Продолжение работы — «continue what I was doing with Cursor» → Claude вызывает get_active_chat для получения текущего диалога, делает резюме и спрашивает, с чего продолжить.

  • Резюме — «recap of my Cursor activity since 9 AM» → Claude вызывает get_journal_summary(window_minutes=N) и рассказывает, что изменилось.

  • Сверка — «is what Cursor is suggesting consistent with our plan?» → Claude читает последние сообщения Cursor, сравнивает их со своим контекстом и отмечает несоответствия.

  • Поиск — «where did I discuss the SQL backfill with Cursor?» → Claude вызывает search_chats("backfill"), а затем углубляется в результат с помощью get_chat.

Конфиденциальность и безопасность

  • Только для чтения через SQLite (mode=ro,immutable=1). Даже ошибочный скрипт не может изменить данные Cursor.

  • Все данные остаются локальными. Журнал и снимки находятся в ~/.claude/, защищены списками контроля доступа Windows на уровне профиля пользователя. Ничего не загружается в сеть.

  • Предупреждение о учетных данных. Ваши чаты Cursor могут содержать вставленные API-ключи, пароли и т.д. Журнал хранит текст сообщений дословно. Если это вызывает беспокойство, будьте избирательны в том, что вставляете в Cursor, или фильтруйте журнал постфактум.

  • Область MCP. По умолчанию local означает, что мост активен только в проекте, где вы запустили установщик. Используйте -Scope user, чтобы сделать его глобальным.

Удаление

powershell -ExecutionPolicy Bypass -File "<skill-dir>\scripts\uninstall.ps1"

Удаляет запланированную задачу, отменяет регистрацию MCP в Claude и по умолчанию удаляет ~/.claude/mcp/cursor-chats/. Передайте -KeepData, чтобы сохранить active_snapshot.json и journal.ndjson.

Ограничения и известные проблемы

  • Только Windows. Варианты для macOS/Linux возможны (cron вместо schtasks, путь ~/Library/Application Support/Cursor/... на macOS), но пока не реализованы.

  • Зависимость от схемы Cursor. Мост читает недокументированные внутренние структуры Cursor. Если Cursor переименует cursorDiskKV или изменит структуру JSON композитора между версиями, скриптам может потребоваться патч. Проверяйте poller.log, если журнал перестает расти.

  • Только активный чат. Старые/архивированные чаты предоставляют только метаданные. «Живые» сообщения существуют только для текущего открытого чата в каждой рабочей области.

  • Нет заполнения истории. Опросчик пропускает исторические сообщения при первом обнаружении рабочей области (иначе это переполнило бы журнал). Захватываются только будущие сообщения.

  • Cursor должен быть открыт, чтобы новые сообщения попали в SQLite. Если Cursor закрыт, опросчик продолжает работать корректно, но не записывает новых данных.

Структура проекта

cursor-chats-bridge/
├── SKILL.md               # YAML frontmatter + Claude-facing instructions
├── README.md              # this file
├── scripts/
│   ├── server.py          # MCP server (Python, ~300 lines)
│   ├── poller.py          # Background poller (Python, ~180 lines)
│   ├── install.ps1        # Idempotent installer
│   └── uninstall.ps1      # Clean removal
└── references/
    └── architecture.md    # Deep technical doc (SQLite layout, edge cases)

Участие в разработке

Pull-реквесты приветствуются — особенно для:

  • Поддержки macOS / Linux (cron + пути Library/Application Support)

  • Устойчивости к изменениям схемы: помощники для раннего обнаружения изменений версии Cursor

  • Опциональной ротации / сжатия журнала

  • Улучшения триггеров навыка для запросов не на французском языке

Лицензия

MIT — делайте что хотите, без гарантий. См. LICENSE.

Отказ от ответственности

Это сторонний инструмент, не связанный с Anthropic или Cursor. Он читает локальные данные Cursor неофициальными способами и может перестать работать с будущими версиями Cursor. Используйте на свой страх и риск, особенно на машинах, где вы работаете с конфиденциальными данными.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for browsing, searching, exporting, and backing up your Cursor AI chat history directly into Claude via natural language.
    8
    64 npm
    32
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for unified full-text search across chat histories from Claude Code, Codex, Cursor CLI, and Antigravity CLI, using SQLite FTS5. Provides read-only tools to search sessions, list conversations, and retrieve session details.
    MIT