GitHunt
JO

josancamon19/re-cursor-scripts

๐Ÿ” MyCursorData

Extract and export your Cursor IDE conversation history.

MyCursorData reads Cursor's internal SQLite database and exports all your AI conversations to readable text files, organized by project.

โœจ Features

  • ๐Ÿ” Auto-discovery - Automatically finds your Cursor databases on macOS, Linux, and Windows
  • ๐Ÿ“ Project organized - Exports conversations grouped by workspace/project
  • ๐Ÿ› ๏ธ Tool call tracking - Includes full tool call details (file edits, terminal commands, searches)
  • โœ… Approval tracking - Shows which changes were approved/rejected by the user
  • ๐Ÿ“Š Statistics - Get quick stats about your conversation history

๐Ÿ“ฆ Installation

With pip

pip install mycursordata
uv pip install mycursordata

Run directly with uvx

uvx mycursordata ~/my-cursor-export

๐Ÿš€ Usage

Quick Export

Export all conversations to a directory:

# Export to a directory
mycursordata export ~/cursor-export

# Or simply (export is the default command)
mycursordata ~/cursor-export

Discover Databases

Find all available Cursor databases on your system:

mycursordata discover

Output:

๐Ÿ” Searching for Cursor databases...

Default search paths:
  โœ… /Users/you/Library/Application Support/Cursor/User/globalStorage/state.vscdb
  โŒ /Users/you/Library/Application Support/Cursor Nightly/User/globalStorage/state.vscdb
  ...

๐Ÿ“Š Found 1 database(s):

  1. [GLOBAL] cursor/global
     Path: /Users/you/Library/Application Support/Cursor/User/globalStorage/state.vscdb
     Conversations: 42, Messages: 1337

View Statistics

Get quick stats about your conversation history:

mycursordata info

Export with Options

# Use a specific database file
mycursordata export ~/output -d /path/to/state.vscdb

# Show summary before exporting
mycursordata export ~/output --summary

# Verbose output for debugging
mycursordata export ~/output -v

๐Ÿ“„ Output Format

Conversations are exported as text files organized by project:

output/
โ”œโ”€โ”€ my-project/
โ”‚   โ”œโ”€โ”€ 2024-01-15_10-30-00_Add_dark_mode_toggle.txt
โ”‚   โ””โ”€โ”€ 2024-01-16_14-22-10_Fix_login_bug.txt
โ”œโ”€โ”€ another-project/
โ”‚   โ””โ”€โ”€ 2024-01-17_09-00-00_Refactor_API.txt
โ””โ”€โ”€ unknown/
    โ””โ”€โ”€ 2024-01-18_11-45-00_abc123.txt

Each file contains:

  • Conversation metadata (name, timestamps, message count)
  • Full message history with thinking blocks
  • Tool calls with arguments and results
  • Code blocks and diffs
  • Approval summary (what was approved/rejected)

๐Ÿ”ง How It Works

Cursor stores its conversation history in a SQLite database called state.vscdb. This tool:

  1. Discovers the database by checking common locations for your OS
  2. Parses the key-value store to extract conversation data
  3. Groups conversations by project/workspace
  4. Formats everything into readable text files

Database Locations

OS Path
macOS ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb
Linux ~/.config/Cursor/User/globalStorage/state.vscdb
Windows %APPDATA%\Cursor\User\globalStorage\state.vscdb

๐Ÿ Python API

You can also use MyCursorData as a library:

from mycursordata import CursorDataParser, discover_cursor_databases

# Discover databases
databases = discover_cursor_databases()
for db in databases:
    print(f"Found: {db['path']} ({db['source']})")

# Parse and export
with CursorDataParser("/path/to/state.vscdb") as parser:
    # Get stats
    stats = parser.get_bubble_stats()
    print(f"Total conversations: {stats['conversations']}")
    
    # Export all conversations
    parser.export_all("./output")
    
    # Or get raw data
    conversations = parser.get_all_conversations()
    for project, convs in conversations.items():
        print(f"Project: {project}, Conversations: {len(convs)}")

๐Ÿ“‹ Requirements

  • Python 3.11+
  • No external dependencies (uses only stdlib!)

๐Ÿค Contributing

Contributions are welcome! Please open an issue or PR on GitHub.

๐Ÿ“œ License

MIT License - see LICENSE for details.

josancamon19/re-cursor-scripts | GitHunt