Skip to main content
Glama

Cursor DB MCP Server

by TaylorChen
README.md4.71 kB
# 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 ```bash npm install npm run build ``` Run MCP Inspector for local testing: ```bash npm run inspector ``` The Inspector prints a local URL for interactive testing in your browser. ## Configure in Cursor Basic configuration: ```json { "mcp.servers": { "cursor-db": { "command": "cursor-db-mcp", "args": [] } } } ``` Custom `workspaceStorage` path: ```json { "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 ```bash 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 directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TaylorChen/cursor-db-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server