🔍 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
With uv (recommended)
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:
- Discovers the database by checking common locations for your OS
- Parses the key-value store to extract conversation data
- Groups conversations by project/workspace
- 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.
Metadata
Release files for mycursordata 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mycursordata-0.1.0.tar.gz | 16.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mycursordata-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 34.8 kB
Release files / mycursordata-0.1.0.tar.gz
| Download URL | mycursordata-0.1.0.tar.gz |
|---|---|
| Size | 16.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
39df409d00a00cbe2335e5050a50f2e4d774d612778732bcaab8771d1c195881
|
|
BLAKE2b-256 checksum How to use checksums |
27c392bea4dd7ce32d35977be894c4fc55bee460ba6c1cc63c659946303ce661
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.6
|
Release files / mycursordata-0.1.0-py3-none-any.whl
| Download URL | mycursordata-0.1.0-py3-none-any.whl |
|---|---|
| Size | 18.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8410d230e9f3de5400ab681d839c0ecc45f8bba71d643e2108faccb681c5e1cc
|
|
BLAKE2b-256 checksum How to use checksums |
082a761bf2d69ca104fd303870bdd367d15b0ada2c726d17902ef5e4e712fd67
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.6
|