Cursor Conversations MCP Server
The Cursor Conversations MCP Server enables AI assistants to locally access and analyze your Cursor chat history for personalized coding insights.
Access & Search: Browse conversations with filtering options, perform text-based searches, and discover related discussions based on files, folders, or languages.
Analyze & Extract: Generate analytics on usage patterns, extract code blocks, languages, and file references to identify recurring solutions and best practices.
Generate Content: Create personalized coding standards, project-specific documentation, and technical guides based on your actual development discussions.
Export & Visualize: Export chat data in JSON, CSV, or Graph formats for external analysis and visualization.
Privacy-Focused: Operates entirely locally without sending data to external services, ensuring your data remains private and under your control.
Supports accessing Cursor conversation data stored on Linux systems through the auto-detected database path.
Supports accessing Cursor conversation data stored on macOS systems through the auto-detected database path.
Enables analysis of React-specific conversations and code patterns to generate component guidelines and best practices.
Uses SQLite to access Cursor's conversation database for retrieving and analyzing development history.
Allows extraction of TypeScript coding standards and interface discussions from conversation history to create personalized guidelines.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cursor Conversations MCP Serveranalyze my recent React conversations and suggest component patterns"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Cursor Chat History MCP
Connect your Cursor conversations to your git history.
Why?
You make a commit. Weeks later you wonder: "Why did I write it this way?"
The git message says fix auth bug but the real context - the debugging session, the alternatives considered, the AI suggestions - lives in a Cursor conversation you'll never find again.
This MCP server automatically links your Cursor conversations to git commits. When you revisit code, the AI assistant can pull up the original discussion.
Related MCP server: AI Conversation Logger
Quick Start
Add to .cursor/mcp.json:
{
"mcpServers": {
"cursor-chat-history": {
"command": "npx",
"args": ["-y", "--package=cursor-chat-history-mcp", "cursor-chat-history-mcp"]
}
}
}That's it. Hooks install automatically on first use.
What You Can Do
Find Context for Code
"What was the context behind commit abc123?"
"Find the conversation that led to this fix"
"Show discussions about auth.ts from the last month"Search Your Chat History
"Find all debugging sessions about performance"
"Search conversations mentioning useState"
"List recent conversations in this project"Extract Patterns
"Create TypeScript guidelines from my actual usage"
"Extract error handling patterns from my conversations"
"Summarize my React patterns from chat history"Available Tools
Git Linker
Tool | Purpose |
| Get conversations and commits related to a file |
| Find conversations linked to a commit |
| Find commits linked to a conversation |
| Manually link conversation ↔ commit |
Chat History
Tool | Purpose |
| Browse with filters (project, keywords, files) |
| Get full conversation content |
| Multi-keyword and pattern search |
| Usage patterns, file activity, language stats |
Privacy
100% local - No external services, no API keys
Your data stays on disk - SQLite databases only
Open source - Audit the code yourself
How It Works
Hooks are installed automatically when the MCP server starts:
Cursor hooks (
~/.cursor/hooks.json) - capture file edits and session endsGit post-commit hook (current repo) - link commits to conversations
When you commit, the system finds related conversations using:
File overlap (70%): Commits touching files discussed in conversations
Recency (30%): Conversations from the last 14 days
Efficient Context Retrieval
Large conversations aren't loaded directly into context. Instead:
Use
get_file_contextwithkeywordsto find relevant conversationsCall
get_conversation- writes to~/.cursor-chat-history/context/conversations/<id>.mdUse Read/Grep tools to navigate the markdown file efficiently
CLI Commands
# Query links
npx cursor-chat-history-mcp link list-conversation-links --conversation <id>
npx cursor-chat-history-mcp link get-commit-links --hash <commit-hash>
# Manual linking
npx cursor-chat-history-mcp link manual --conversation <id> --commit <hash>Database Locations
Database | macOS | Windows | Linux |
Cursor chats |
|
|
|
Git links |
|
|
|
Context files |
| same | same |
Override with CURSOR_DB_PATH or CURSOR_LINKS_DB_PATH.
Tool Reference
list_conversations
limit(default: 10) - Number of resultsprojectPath- Filter by projectkeywords- Search keywordshasCodeBlocks- Filter by code presence
get_conversation
conversationId(required) - Conversation IDsummaryOnly- Return summary only (saves context)
search_conversations
query- Text searchkeywords+keywordOperator('AND'/'OR') - Multi-keywordlikePattern- SQL LIKE patterns
get_conversation_analytics
scope- 'all', 'recent', 'project'projectPath- Filter by projectincludeBreakdowns- ['files', 'languages', 'temporal', 'size']
get_file_context
filePath(required) - File to get context forkeywords- Filter by keywords (e.g.,["JWT", "auth"]) - returns matching excerptslimit- Max results (default: 5)
list_conversation_commits
conversationId- Filter by conversationprojectPath- Filter by projectfilePath- Filter by file
get_commit_conversations
commitHash(required) - Git commit hash
link_conversation_commit
conversationId(required)commitHash(required)confidence- Link confidence (0-1)
Development
git clone https://github.com/vltansky/cursor-chat-history-mcp
cd cursor-chat-history-mcp
yarn install
yarn buildSupported AI Assistants
Assistant | Status | Notes |
Cursor | ✅ Full | Chat, Composer, Agent modes |
Claude Code | ✅ Full | VS Code extension |
Cline/Roo/Kilo | ✅ Full | JSON task-based storage |
Windsurf | ✅ Full | SQLite (same pattern as Cursor) |
GitHub Copilot Chat | ✅ Full | VS Code native |
Roadmap
Knowledge graph extraction - Extract entities and relationships from conversations (learn more)
Multi-agent support - Cline, Windsurf, Copilot Chat
Quality scoring - Prioritize conversations with solutions
Natural time filters - "last week", "yesterday"
Topic clustering - Group by detected themes
Semantic search - Find similar conversations via embeddings
Technical Notes
Supports legacy and modern Cursor conversation formats
Uses ROWID for chronological ordering (UUIDs aren't chronological)
Close Cursor to avoid database lock issues
See docs/SPEC.md for git linker specification
License
MIT
Available Tools
8 toolsexport_conversation_dataA
Export chat data in various formats (JSON, CSV, Graph) for external analysis, visualization, or integration with other tools. TIP: Use filters.projectPath to export only project-specific conversations for focused analysis of a particular codebase. Use this to create datasets for machine learning, generate reports for stakeholders, prepare data for visualization tools like Gephi or Tableau, or backup chat data in structured formats.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationIds | No | Specific conversation IDs to export (if not provided, exports all conversations) | |
| format | No | Export format: JSON for structured data, CSV for spreadsheets, Graph for network analysis | json |
| includeContent | No | Include full conversation content in the export | |
| includeRelationships | No | Include relationship data between conversations | |
| flattenStructure | No | Flatten nested structures for easier processing | |
| filters | No | Filters to apply when selecting conversations to export | |
| outputMode | No | Output format: "json" for formatted JSON (default), "compact-json" for minified JSON | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's function and use cases but lacks details on permissions, rate limits, side effects (e.g., whether it's read-only or generates files), or error handling. It adds value by explaining the purpose and applications but misses operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose and formats, followed by a TIP and use cases. Every sentence adds value (e.g., explaining applications), but it could be slightly more concise by integrating the TIP into the main flow rather than as a separate note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, nested objects, no output schema) and lack of annotations, the description is adequate but incomplete. It covers purpose and usage well but does not address output behavior (e.g., what is returned or how data is delivered), error conditions, or performance aspects, leaving gaps for an AI agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal parameter-specific semantics beyond the schema, only emphasizing 'filters.projectPath' in a TIP. It does not explain parameter interactions or provide additional syntax/format details, aligning with the baseline score when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('Export') and resource ('chat data'), and distinguishes it from siblings by specifying it exports data for external analysis/visualization/integration, unlike tools like 'get_conversation' (fetch single) or 'list_conversations' (list metadata). The mention of formats (JSON, CSV, Graph) further clarifies its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (e.g., for machine learning datasets, stakeholder reports, visualization tools, or backups) and includes a TIP recommending 'filters.projectPath' for project-specific conversations. However, it does not explicitly state when NOT to use it or name alternatives among siblings (e.g., 'extract_conversation_elements' might overlap for specific elements).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_conversation_elementsA
Extract specific elements from conversations such as file references, code blocks, programming languages, folder paths, metadata, or conversation structure. Use this to build knowledge bases, analyze code patterns, extract reusable snippets, understand project file usage, or prepare data for further analysis and documentation.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationIds | No | Specific conversation IDs to extract elements from (if not provided, extracts from all conversations) | |
| elements | No | Types of elements to extract from conversations | |
| includeContext | No | Include surrounding context for extracted elements | |
| groupBy | No | How to group the extracted elements in the output | conversation |
| filters | No | Filters to apply when extracting elements | |
| outputMode | No | Output format: "json" for formatted JSON (default), "compact-json" for minified JSON | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the tool's function and use cases but lacks details on behavioral traits such as performance characteristics, rate limits, error handling, or authentication requirements. The description adds value by explaining the tool's purpose but does not fully compensate for the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose and following with use cases. Both sentences earn their place by clarifying the tool's function and applications. It could be slightly more concise by integrating the use cases more tightly, but overall it is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, nested objects) and the absence of both annotations and an output schema, the description is somewhat incomplete. It explains what the tool does and why to use it but does not address behavioral aspects or output format, leaving gaps that could hinder an AI agent's understanding of how to invoke it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema already documents all parameters thoroughly. The description does not add any parameter-specific information beyond what the schema provides, such as explaining the semantics of 'elements' or 'filters' in more detail. Baseline score of 3 is appropriate when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('extract specific elements from conversations') and resources ('conversations'), listing concrete element types like file references, code blocks, and metadata. It distinguishes from sibling tools like 'export_conversation_data' or 'get_conversation' by focusing on element extraction rather than full export or retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('to build knowledge bases, analyze code patterns, extract reusable snippets, understand project file usage, or prepare data for further analysis and documentation'), which helps differentiate it from siblings. However, it does not explicitly state when not to use it or name specific alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversationA
Retrieves the complete content of a specific Cursor conversation including all messages, code blocks, file references, title, and AI summary. WORKFLOW TIP: Use conversation IDs from list_conversations, search_conversations, or analytics breakdowns (files/languages arrays contain conversation IDs). Use summaryOnly=true to get enhanced summary data without full message content when you need to conserve context.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | Conversation ID from list_conversations, search_conversations, or analytics breakdowns | |
| summaryOnly | No | Return only enhanced summary data without full message content | |
| outputMode | No | Output format: "json" for formatted JSON (default), "compact-json" for minified JSON | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what the tool retrieves (complete content including specific elements) and mentions a performance consideration (summaryOnly to conserve context), but lacks details on permissions, rate limits, error handling, or response structure. It adds some context but is incomplete for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence clearly states the purpose, followed by a workflow tip that adds practical guidance without redundancy. Every sentence earns its place by providing actionable information, with no wasted words or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (retrieving conversation data with optional filtering), no annotations, and no output schema, the description is mostly complete. It covers the purpose, usage guidelines, and key parameters, but lacks details on behavioral aspects like error handling or response format. It compensates well but has minor gaps in transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema: it mentions using conversation IDs from specific sources (implied in the schema) and explains the purpose of summaryOnly=true for context conservation, but doesn't provide additional syntax or format details. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Retrieves') and resource ('complete content of a specific Cursor conversation'), listing concrete components like messages, code blocks, file references, title, and AI summary. It distinguishes from siblings by specifying this tool retrieves full conversation content, unlike list_conversations (which lists IDs) or get_conversation_analytics (which provides analytics).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: it specifies obtaining conversation IDs from list_conversations, search_conversations, or analytics breakdowns, and includes a 'WORKFLOW TIP' for using summaryOnly=true to conserve context. It implicitly distinguishes from siblings by not suggesting alternatives for retrieving full conversation content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversation_analyticsA
Get comprehensive analytics and statistics about Cursor chats including usage patterns, file activity, programming language distribution, and temporal trends. BEST PRACTICE: Use projectPath parameter for project-specific analytics - this analyzes only conversations that worked on files in that project, providing much more relevant insights for understanding coding patterns, file usage, and development activity within a specific codebase. WORKFLOW TIP: Always include "files" and "languages" in breakdowns - these contain conversation IDs in their arrays that you can immediately use with get_conversation tool. Use includeConversationDetails=true when you need the full conversation ID list and basic metadata for follow-up analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Analysis scope: all conversations, recent only, or project-specific. Use "project" with projectPath for focused project analysis. | all |
| projectPath | No | **HIGHLY RECOMMENDED** Project/codebase name (e.g., "my-app") or full path for project-scoped analysis. When provided, analyzes only conversations that worked on files in that project, giving much more relevant insights about coding patterns and development activity. | |
| recentDays | No | Number of recent days to analyze (1-365) | |
| includeBreakdowns | No | Types of breakdowns to include in the analysis. IMPORTANT: "files" and "languages" breakdowns contain conversation IDs in their arrays - use these for follow-up analysis! | |
| includeConversationDetails | No | Include full conversation ID list and basic metadata (increases response size significantly) | |
| outputMode | No | Output format: "json" for formatted JSON (default), "compact-json" for minified JSON | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it explains that using projectPath 'analyzes only conversations that worked on files in that project,' mentions that includeConversationDetails 'increases response size significantly,' and provides workflow tips for efficient usage. However, it doesn't address potential rate limits, authentication needs, or error conditions, leaving some gaps in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, best practice, workflow tip) and uses bold text for emphasis. It's appropriately sized for a tool with 6 parameters and no annotations, though it could be slightly more concise by avoiding repetition of schema details (e.g., projectPath explanation appears in both description and schema). Every sentence adds value, but minor trimming is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no output schema, no annotations), the description does a good job of providing context: it explains the tool's purpose, usage guidelines, and key behavioral aspects. However, it lacks details on output structure (since no output schema exists) and doesn't fully cover all behavioral traits like error handling or performance considerations, leaving room for improvement in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds some semantic context beyond the input schema, such as emphasizing projectPath as 'HIGHLY RECOMMENDED' and explaining its impact on relevance. However, with 100% schema description coverage, the schema already documents all parameters thoroughly (e.g., scope, recentDays, includeBreakdowns). The description reinforces but doesn't significantly expand on parameter meanings, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get comprehensive analytics and statistics about Cursor chats including usage patterns, file activity, programming language distribution, and temporal trends.' It specifies the verb ('Get') and resource ('analytics and statistics about Cursor chats') with detailed scope, distinguishing it from siblings like 'list_conversations' or 'get_conversation' that focus on individual conversations rather than aggregated analytics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines: it includes a 'BEST PRACTICE' section recommending the projectPath parameter for project-specific analytics and a 'WORKFLOW TIP' advising to always include 'files' and 'languages' in breakdowns for follow-up analysis with get_conversation. It also mentions when to use includeConversationDetails=true, offering clear alternatives and context for effective tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_infoA
Get system information and utilities for AI assistants. Provides current date, timezone, and other helpful context that AI assistants may not have access to. Use this when you need reference information for date filtering, time-based queries, or other system context.
| Name | Required | Description | Default |
|---|---|---|---|
| info | No | Type of system information to retrieve: "date" for current date only, "timezone" for timezone info, "all" for everything | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes what information is available (date, timezone, other context) but doesn't specify format, precision, or limitations. It mentions this is 'helpful context that AI assistants may not have access to' which hints at its utility, but lacks details on rate limits, authentication needs, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences: first stating the purpose and scope, then providing clear usage guidelines. Every element serves a purpose with no redundant information, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only utility tool with 1 parameter and no output schema, the description provides good context about what information is available and when to use it. However, without annotations or output schema, it could benefit from more detail about the format and scope of 'other helpful context' returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the single parameter with enum values and default. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score of 3 for adequate coverage through structured data alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get system information and utilities') and resources ('current date, timezone, and other helpful context'). It distinguishes itself from sibling tools (all conversation-related) by focusing on system-level information rather than conversation data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'Use this when you need reference information for date filtering, time-based queries, or other system context.' It clearly differentiates from sibling tools by addressing a completely different domain (system utilities vs. conversation management).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversationsA
Lists Cursor chats with summaries, titles, and metadata ordered by recency. HIGHLY RECOMMENDED: Use projectPath parameter to filter conversations by specific project/codebase - this dramatically improves relevance by finding conversations that actually worked on files in that project. Returns conversation IDs for use with get_conversation tool. WORKFLOW TIP: Start with projectPath filtering for project-specific analysis, then call get_conversation with specific IDs from results. Includes AI-generated summaries by default. Supports date range filtering (YYYY-MM-DD format).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of conversations to return (1-100) | |
| minLength | No | Minimum conversation length in characters to include | |
| hasCodeBlocks | No | Filter to conversations that contain code blocks | |
| keywords | No | Filter conversations containing any of these exact keywords (literal text matching) | |
| projectPath | No | **RECOMMENDED** Filter conversations by project/codebase name (e.g., "my-app") or full path (e.g., "/Users/name/Projects/my-app"). This finds conversations that actually worked on files in that project, dramatically improving relevance for project-specific analysis. | |
| filePattern | No | Filter conversations mentioning files matching this pattern (e.g., "*.tsx") | |
| relevantFiles | No | Filter conversations that reference any of these specific files | |
| startDate | No | Start date for filtering (YYYY-MM-DD). Note: Timestamps may be unreliable. | |
| endDate | No | End date for filtering (YYYY-MM-DD). Note: Timestamps may be unreliable. | |
| includeEmpty | No | Include conversations with no messages | |
| includeAiSummaries | No | Include AI-generated conversation summaries | |
| includeRelevanceScore | No | Include relevance scores when filtering by projectPath | |
| outputMode | No | Output format: "json" for formatted JSON (default), "compact-json" for minified JSON | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behaviors: ordering ('ordered by recency'), default inclusion of AI-generated summaries, date format requirements ('YYYY-MM-DD format'), and a warning about timestamp reliability. It doesn't mention pagination, rate limits, or authentication needs, but covers substantial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with core functionality. The bold recommendation about projectPath is prominent, and the workflow tip provides practical guidance. Some sentences could be more concise, but overall it's well-structured with zero wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter tool with no annotations and no output schema, the description provides substantial context about usage patterns, filtering importance, and relationship to other tools. It doesn't describe the return format in detail (though mentions conversation IDs), but given the rich parameter documentation in the schema, it's reasonably complete for guiding effective tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some value by emphasizing the importance of 'projectPath' parameter and providing workflow context, but doesn't significantly enhance understanding of individual parameters beyond what the schema already documents thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Lists') and resource ('Cursor chats') with specific attributes ('summaries, titles, and metadata ordered by recency'). It distinguishes from siblings like 'search_conversations' by emphasizing comprehensive listing with filtering rather than search functionality, and explicitly mentions the relationship to 'get_conversation' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('HIGHLY RECOMMENDED: Use projectPath parameter...'), includes a workflow tip ('Start with projectPath filtering... then call get_conversation'), and implicitly distinguishes from alternatives like 'search_conversations' by focusing on filtered listing rather than search operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_conversationsA
Searches through Cursor chat content using exact text matching (NOT semantic search) to find relevant discussions. WARNING: For project-specific searches, use list_conversations with projectPath instead of this tool! This tool is for searching message content, not project filtering.
WHEN TO USE THIS TOOL:
Searching for specific technical terms in message content (e.g., "useState", "async/await")
Finding conversations mentioning specific error messages
Searching for code patterns or function names
WHEN NOT TO USE THIS TOOL:
❌ DON'T use query="project-name" - use list_conversations with projectPath instead
❌ DON'T search for project names in message content
❌ DON'T use this for project-specific filtering
Search methods (all use exact/literal text matching):
Simple text matching: Use query parameter for literal string matching (e.g., "react hooks")
Multi-keyword: Use keywords array with keywordOperator for exact matching
LIKE patterns: Advanced pattern matching with SQL wildcards (% = any chars, _ = single char)
Date range: Filter by message timestamps (YYYY-MM-DD format)
IMPORTANT: When using date filters, call get_system_info first to know today's date.
Examples: likePattern="%useState(%" for function calls, keywords=["typescript","interface"] with AND operator.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Exact text matching - searches for literal string occurrences in MESSAGE CONTENT (e.g., "react hooks", "useState", "error message"). ❌ DON'T use for project names - use list_conversations with projectPath instead! | |
| keywords | No | Array of keywords for exact text matching - use with keywordOperator to find conversations with specific combinations | |
| keywordOperator | No | How to combine keywords: "AND" = all keywords must be present, "OR" = any keyword can be present | OR |
| likePattern | No | SQL LIKE pattern for advanced searches - use % for any characters, _ for single character. Examples: "%useState(%" for function calls, "%.tsx%" for file types | |
| startDate | No | Start date for search (YYYY-MM-DD). Note: Timestamps may be unreliable. | |
| endDate | No | End date for search (YYYY-MM-DD). Note: Timestamps may be unreliable. | |
| searchType | No | Focus search on specific content types. Use "project" for project-specific searches that leverage file path context. | all |
| maxResults | No | Maximum number of conversations to return | |
| includeCode | No | Include code blocks in search results | |
| outputMode | No | Output format: "json" for formatted JSON (default), "compact-json" for minified JSON | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively explains the search method (exact text matching, NOT semantic search), provides warnings about unreliable timestamps, and mentions the need to call 'get_system_info' for date context. However, it doesn't fully describe return format or pagination behavior, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (warning, usage guidelines, search methods, examples) and uses formatting effectively. While comprehensive, some sentences could be more concise, and the warning is repeated multiple times, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter search tool with no annotations and no output schema, the description does an excellent job covering purpose, usage, and parameter semantics. It provides concrete examples and warnings. The main gap is the lack of information about return values or result format, which would be helpful given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds significant value by explaining the four search methods (simple text matching, multi-keyword, LIKE patterns, date range) with concrete examples and clarifying the relationship between parameters. This goes well beyond what the schema provides in isolation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'searches through Cursor chat content using exact text matching' and distinguishes it from sibling tools by explicitly warning against using it for project-specific searches, directing users to 'list_conversations with projectPath instead'. This provides specific verb+resource+scope and clear sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'WHEN TO USE THIS TOOL' and 'WHEN NOT TO USE THIS TOOL' sections with concrete examples and clear exclusions. It names the alternative tool ('list_conversations') and provides specific guidance on what queries to avoid, making it highly actionable for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, but there is some overlap between list_conversations and search_conversations, as both can be used to find conversations, which might cause confusion despite the detailed warnings. The other tools like export, extract, find_related, get, and analytics are clearly differentiated in their functions.
All tool names follow a consistent snake_case pattern with clear verb_noun structures (e.g., export_conversation_data, list_conversations, get_system_info). This uniformity makes the tool set predictable and easy to navigate for an agent.
With 8 tools, the count is well-suited for the server's purpose of managing and analyzing Cursor conversations. It covers core operations like listing, searching, retrieving, analyzing, exporting, and extracting, without being overwhelming or insufficient for the domain.
The tool set provides comprehensive coverage for conversation analysis, including CRUD-like operations (list, get, search) and advanced features (analytics, export, extraction, finding related). A minor gap is the lack of tools for modifying or deleting conversations, but this is likely intentional for a read-only analysis server.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Gives your AI assistant persistent memory and intelligence about your work patterns.
Shared memory for AI coding agents. Save once, reuse from Cursor, Claude Code, Codex.
Persistent memory for Claude Code and Cursor. Stop re-explaining your project every session.
Adaptive plan/build/review cycles for AI coding assistants, persisted across sessions.
Related MCP Servers
- AlicenseBqualityCmaintenanceProvides AI assistants with persistent memory of your project architecture, development history, and technical decisions, allowing them to give context-aware coding help without needing repeated explanations.16612MIT
- FlicenseBqualityCmaintenanceEnables AI assistants to automatically log and manage conversation history with developers in structured markdown format. Provides powerful search and context suggestions to help AI understand project history and maintain continuity across sessions.41
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI to automatically search, retrieve, and organize your Cursor chat history across sessions. Supports tagging, nicknames, project-scoped search, and full-text search to maintain context between conversations.
- AlicenseNot gradedqualityAmaintenanceEnables Claude Code to search and retrieve past chat history from Claude.ai exports and Claude Code sessions, allowing the AI to reference previous conversations and decisions.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/vltansky/cursor-chat-history-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server