Skip to main content
Glama
TaylorChen

Cursor DB MCP Server

by TaylorChen

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.

Related MCP server: chatlab-mcp

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.

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables comprehensive search and analysis of Claude Code conversation history using full-text search, optional semantic vector search, and conversation management tools. Provides fast SQLite-based indexing with role-based filtering, project organization, and hybrid search capabilities combining keyword and semantic matching.
    -
  • F
    license
    A
    quality
    F
    maintenance
    Enables AI assistants to query local ChatLab chat history using natural language, with tools for session listing, message retrieval, and analytics.
    17
    8 npm
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables searching and analyzing GitHub Copilot's conversation history stored locally, providing tools for full-text search, session listing, statistics, and file-based retrieval.
    6
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Indexes and searches agent conversation logs from Antigravity and Cursor workspaces, enabling semantic search, token analysis, and benchmarking over local SQLite storage.
    7 npm
    MIT