TaylorChen

cursor-db-mcp (MCP Server)

Community TaylorChen
Updated

An MCP server for querying, exporting, and analyzing Cursor IDE conversation history from the new `workspaceStorage` (SQLite) layout

cursor-db-mcp (MCP Server)

An MCP server for querying, exporting, and analyzing Cursor IDE conversation history from the new workspaceStorage (SQLite) layout.

Highlights

  • Query conversations across all workspaces (SQLite state.vscdb under workspaceStorage)
  • Search and analyze messages, code blocks, and estimated code changes
  • Export data in json, csv, or markdown
  • Workspace utilities to list/filter recent workspaces
  • Diagnostics tool to discover actual storage keys in your environment

Data sources and fallbacks

  • Primary: legacy chat key (if present): workbench.panel.aichat.view.aichat.chatdata
  • Heuristics: if the legacy key is missing, the server scans values for structures containing conversations/messages/assistant/role.
  • Last resort: synthesizes conversations from aiService.generations (user-side prompts). Optionally, it heuristically pairs items from aiService.prompts as assistant replies to improve completeness.

Note: Depending on your Cursor version, assistant replies may not be locally persisted under known keys. The diagnostics tool can help you discover new keys. If you can share a confirmed key/path containing assistant messages, this server can be adapted quickly.

Installation

npm install
npm run build

Run MCP Inspector for local testing:

npm run inspector

The Inspector prints a local URL for interactive testing in your browser.

Configure in Cursor

Basic configuration:

{
  "mcp.servers": {
    "cursor-db": {
      "command": "cursor-db-mcp",
      "args": []
    }
  }
}

Custom workspaceStorage path:

{
  "mcp.servers": {
    "cursor-db": {
      "command": "cursor-db-mcp",
      "args": ["--workspace-path", "/custom/path/to/workspaceStorage"]
    }
  }
}

Available Tools

  • list_workspaces

    • Input: { recent_days?: number }
    • Returns workspace list with hash, path, projectPath, lastModified
  • get_workspace_conversations

    • Input: { workspace_hash: string }
    • Use list_workspaces to obtain workspace_hash
    • Returns conversations for that workspace
  • get_all_conversations

    • Input: { limit?: number }
    • Returns cross-workspace conversations (sorted by updated time)
  • search_conversations

    • Input: { query: string, limit?: number }
    • Full-text search in titles and messages
  • analyze_conversation

    • Input: { conversation_id: string }
    • Returns stats (message counts, code blocks, estimated code changes)
  • export_conversations

    • Input: { format?: 'json'|'csv'|'markdown', conversation_id?: string, conversation_ids?: string[] }
    • Export all or a subset filtered by conversation_id/conversation_ids
  • analyze_code_statistics

    • Input: { days?: number, group_by?: 'day'|'week'|'month'|'language'|'workspace' }
    • Aggregated metrics across the selected period
  • diagnose_storage

    • Input: { limit?: number }
    • Lists the largest ItemTable keys per workspace to help locate actual chat storage

Ensuring assistant replies in results

  • If your environment has a key containing full conversations (including assistant messages), the server will parse it directly.
  • If not, the server falls back to aiService.generations (user-only prompts) and tries to pair them with aiService.prompts as assistant replies heuristically. This improves completeness but may not perfectly reflect the original assistant responses.
  • To achieve exact assistant outputs, provide the confirmed storage key or path where Cursor persists assistant replies in your version.

Export formats

  • JSON: raw conversations array
  • CSV: one line per conversation with high-level metadata
  • Markdown: per-conversation sections with messages and code blocks

Development

npm install
npm run build
npm run watch   # optional: incremental builds
npm run inspector

Notes

  • SQLite access uses sqlite3. On some systems you may need build tools (e.g., Xcode CLT on macOS) installed.
  • Default workspace storage paths:
    • macOS: ~/Library/Application Support/Cursor/User/workspaceStorage
    • Windows: %APPDATA%/Cursor/User/workspaceStorage
    • Linux: ~/.config/Cursor/User/workspaceStorage

Troubleshooting

  • No conversations returned:

    • Use diagnose_storage to inspect keys. If no conversation-like key exists, your Cursor version may not store assistant replies locally.
    • The server will still return synthesized conversations from aiService.generations (user prompts). Provide the real chat key to enable full parsing.
  • Permission/locking errors:

    • Ensure Cursor is not locking the database when scanning. Try closing heavy operations in Cursor.

License

MIT โ€” see LICENSE.

MCP Server ยท Populars

MCP Server ยท New

    conorluddy

    Context-Pods

    ๐Ÿซ› Local-first Model Context Protocol management suite. Provides an MCP to create and manage other local MCPs. Useful for local Tooling etc.

    Community conorluddy
    vfarcic

    DevOps AI Toolkit

    Intelligent dual-mode agent for deploying applications to ANY Kubernetes cluster through dynamic discovery and plain English governance

    Community vfarcic
    paiml

    Depyler

    Compiles Python to Rust, helping transition off of Python to Energy Efficient and Safe Rust Code

    Community paiml
    campfirein

    Cipher

    Cipher is an opensource memory layer specifically designed for coding agents. Compatible with Cursor, Windsurf, Claude Desktop, Claude Code, Gemini CLI, AWS's Kiro, VS Code, and Roo Code through MCP, and coding agents, such as Kimi K2. Built by https://byterover.dev/

    Community campfirein
    neilberkman

    Clippy ๐Ÿ“Ž

    Unified clipboard tool for macOS that intelligently handles both text and file copying

    Community neilberkman