Skip to main content
Glama
jherard-fr

cursor-chats-bridge

by jherard-fr

cursor-chats-bridge

Un puente de solo lectura que permite a Claude Code ver lo que estás haciendo en Cursor, en tiempo real y entre sesiones.

platform: windows license: MIT

Si utilizas Claude Code y Cursor en paralelo (por ejemplo: ediciones dirigidas por agentes en Cursor mientras planificas/auditas con Claude), esta habilidad conecta la base de datos de chat local de Cursor con Claude como un servidor MCP, además de registrar nuevos mensajes cada 5 minutos para que Claude pueda responder preguntas como "¿qué estaba haciendo Cursor esta mañana?" incluso cuando Claude no estaba ejecutándose.

Diseñado como solo lectura. Nunca modifica los datos de Cursor.


Qué obtienes

Una vez instalado, Claude Code obtiene siete herramientas (todas con el prefijo mcp__cursor-chats__):

Herramienta

Qué hace

list_workspaces

Enumera todos los espacios de trabajo de Cursor vistos en tu historial de chat, con IDs hash y rutas.

list_chats

Enumera los chats de Cursor, opcionalmente filtrados por ID de espacio de trabajo, subcadena de ruta o automáticamente mediante el cwd de Claude.

get_chat

Obtiene los mensajes de un chat específico (por UUID de compositor).

get_active_chat

Conveniencia: obtiene los mensajes en vivo del chat de Cursor abierto actualmente para un espacio de trabajo.

search_chats

Búsqueda de subcadenas en nombres de chat, subtítulos y texto de mensajes.

get_journal

Lee el diario de solo adición de nuevos mensajes capturados por el sondeo en segundo plano.

get_journal_summary

Estadísticas agregadas durante un período de tiempo: mensajes por rol, conversaciones tocadas, fragmentos de texto recientes.

Además de una tarea programada de Windows ClaudeCursorChatPoller que se ejecuta cada 5 minutos, detecta nuevos mensajes en el chat activo de cada espacio de trabajo y los añade a un diario de líneas JSON en ~/.claude/mcp/cursor-chats/journal.ndjson.

Related MCP server: cursor-history-mcp

Por qué existe

Los datos de chat de Cursor residen localmente en un almacén KV de SQLite (%APPDATA%\Cursor\User\globalStorage\state.vscdb), pero con dos limitaciones molestas:

  1. Solo el chat abierto actualmente por espacio de trabajo mantiene sus mensajes almacenados localmente; los chats más antiguos se archivan en la nube de Cursor, dejando solo metadatos.

  2. No hay una API pública.

Por lo tanto, una consulta MCP en vivo por sí sola no es suficiente: si preguntas "¿qué hizo Cursor esta mañana?" a las 3 PM, es posible que los mensajes relevantes ya estén archivados. El sondeo resuelve eso capturando los mensajes a medida que aparecen, con etiquetado de espacio de trabajo para que los diferentes proyectos de Claude puedan filtrar limpiamente.

Arquitectura

┌──────────────────────────────────────────────────────────────────┐
│  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

Para conocer más detalles internos (patrones de claves de SQLite, identificación de espacios de trabajo, casos extremos), consulta references/architecture.md.

Requisitos

  • Windows 10 / 11 (Linux/macOS aún no compatibles; utiliza schtasks y la ruta de Cursor en Windows)

  • Python 3.10+ con pythonw.exe disponible (ejecutor silencioso para la tarea programada)

  • Claude Code CLI en PATH (claude --version debería funcionar)

  • Cursor instalado y abierto al menos una vez (el SQLite se crea en la primera ejecución)

El instalador comprueba todo esto y falla rápidamente con errores accionables si falta algo.

Instalación

Como habilidad de Claude Code (recomendado)

  1. Coloca la carpeta en tu directorio de habilidades de Claude Code:

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

    En Windows: C:\Users\<tú>\.claude\skills\cursor-chats-bridge\.

  2. Reinicia Claude Code (o simplemente abre una nueva sesión).

  3. Pregúntale a Claude algo como "instala el puente cursor-chats" o "configura la conexión Claude-Cursor"; la descripción de la habilidad está ajustada para activarse con esas frases.

  4. Claude lee SKILL.md, ejecuta scripts/install.ps1 e informa el resultado.

  5. Reinicia Claude Desktop (cierre completo desde la bandeja del sistema) para cargar el servidor MCP.

Instalación manual (no se necesita Claude)

Si prefieres omitir el paso agéntico:

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

El script:

  1. Verifica los requisitos previos (Python, pythonw.exe, CLI de claude, ruta de SQLite de Cursor)

  2. Copia server.py y poller.py a ~/.claude/mcp/cursor-chats/

  3. Instala el paquete mcp de Python mediante pip si falta

  4. Elimina cualquier registro MCP previo de cursor-chats, luego lo añade (ámbito predeterminado: local)

  5. Crea/actualiza la tarea programada ClaudeCursorChatPoller (cada 5 min, silenciosa mediante pythonw.exe)

  6. Ejecuta el sondeo una vez para sembrar la instantánea/diario

Volver a ejecutar es seguro: cada paso utiliza semántica de sobrescritura forzada. Los archivos de estado (active_snapshot.json, journal.ndjson) se conservan.

Flags del instalador

Flag

Efecto

-Quiet

Suprime la salida de progreso.

-NoTask

Omite la creación de la tarea programada (uso único / depuración).

-Scope local|user|project

Ámbito de registro MCP. Predeterminado local (solo proyecto actual). Usa user para global. No uses project; eso escribiría en .mcp.json, que está destinado a ser confirmado.

Verificación

Después de la instalación + reinicio de Claude:

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

Ambos deberían mostrar entradas; la línea claude mcp list debería informar ✓ Connected para cursor-chats.

En una sesión de Claude, puedes preguntar:

"Enumera mis espacios de trabajo de Cursor." "¿Cuál es el último mensaje de mi agente de Cursor?" "Resume lo que hice con Cursor esta mañana."

Cómo lo usa Claude (patrones típicos)

El MCP no sondea por sí solo; Claude llama a las herramientas cuando tiene sentido. El sondeo en segundo plano (proceso separado) maneja la captura continua, por lo que las consultas al diario responden "qué pasó mientras no estabas mirando" sin mantener una conversación en vivo abierta.

Ejemplos:

  • Continuación — "continúa lo que estaba haciendo con Cursor" → Claude llama a get_active_chat para obtener la conversación en vivo, resume y pregunta por dónde continuar.

  • Resumen — "resumen de mi actividad en Cursor desde las 9 AM" → Claude llama a get_journal_summary(window_minutes=N) y te guía a través de lo que cambió.

  • Verificación cruzada — "¿lo que sugiere Cursor es consistente con nuestro plan?" → Claude lee los últimos mensajes de Cursor, los compara con su propio contexto y señala discrepancias.

  • Búsqueda — "¿dónde discutí el backfill de SQL con Cursor?" → Claude llama a search_chats("backfill"), luego profundiza en un resultado con get_chat.

Privacidad y seguridad

  • Solo lectura mediante cumplimiento de SQLite (mode=ro,immutable=1). Incluso un script con errores no puede modificar los datos de Cursor.

  • Todos los datos permanecen locales. El diario y las instantáneas están bajo ~/.claude/, protegidos por ACLs de Windows a nivel de perfil de usuario. No se sube nada.

  • Advertencia sobre credenciales. Tus chats de Cursor pueden contener claves API pegadas, contraseñas, etc. El diario almacena el texto del mensaje literalmente. Si eso es una preocupación, sé selectivo con lo que pegas en Cursor o filtra el diario a posteriori.

  • Ámbito MCP. El valor predeterminado local significa que el puente solo está activo en el proyecto donde ejecutaste el instalador. Usa -Scope user para hacerlo global.

Desinstalación

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

Elimina la tarea programada, anula el registro del MCP de Claude y elimina ~/.claude/mcp/cursor-chats/ de forma predeterminada. Pasa -KeepData para conservar active_snapshot.json y journal.ndjson.

Límites y problemas conocidos

  • Solo Windows. Las variantes de macOS/Linux son factibles (cron en lugar de schtasks, ruta ~/Library/Application Support/Cursor/... en macOS) pero aún no están implementadas.

  • Dependencia del esquema de Cursor. El puente lee elementos internos no documentados de Cursor. Si Cursor cambia el nombre de cursorDiskKV o cambia la forma JSON del compositor entre versiones, es posible que los scripts necesiten un parche de una línea. Revisa poller.log si el diario deja de crecer.

  • Solo chat activo. Los chats antiguos/archivados solo proporcionan metadatos. Los mensajes en vivo existen solo para el chat abierto actualmente por espacio de trabajo.

  • Sin relleno histórico. El sondeo omite los mensajes históricos al ver por primera vez un espacio de trabajo (de lo contrario, inundaría el diario). Solo se capturan los mensajes futuros.

  • Cursor debe estar abierto para que los nuevos mensajes lleguen al SQLite. Si Cursor está cerrado, el sondeo sigue ejecutándose limpiamente pero no escribe nuevas entradas.

Diseño del proyecto

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)

Contribución

Las solicitudes de extracción son bienvenidas, especialmente para:

  • Soporte para macOS / Linux (cron + rutas de Library/Application Support)

  • Resiliencia del esquema: ayudantes para detectar cambios de versión de Cursor temprano

  • Rotación / compresión opcional del diario

  • Mejor activación de la habilidad en consultas que no sean en francés

Licencia

MIT: haz lo que quieras, sin garantía. Consulta LICENSE.

Descargo de responsabilidad

Esta es una herramienta de terceros, no afiliada a Anthropic o Cursor. Lee los datos locales de Cursor a través de medios no oficiales y puede romperse con futuras versiones de Cursor. Úsala bajo tu propia discreción, especialmente en máquinas donde manejes datos confidenciales.

Maintenance

ActivityInactive
ResponsivenessNo issues

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