A Model Context Protocol (MCP) server for searching your Claude Code (& Claude Desktop) conversation history. Find past solutions, track file changes, and learn from previous work.
Requirements:
npm install -g claude-historian
From shell:
claude mcp add claude-historian -- npx claude-historian
From inside Claude (restart required):
Add this to our global mcp config: npx claude-historian
Install this mcp: https://github.com/Vvkmnn/claude-historian
From any manually configurable mcp.json
: (Cursor, Windsurf, etc.)
{
"mcpServers": {
"claude-historian": {
"command": "npx",
"args": ["claude-historian"],
"env": {}
}
}
}
That's it; there is no npm install
required as there are no external dependencies or local databases, only search algorithms.
However, in the unlikely event that you pull the wrong package / npx
registry is out of date, you can force resolution issues in certain environments with:
npm install -g claude-historian
MCP server that gives Claude access to your conversation history. Fast search with smart prioritization.
Runs locally (with cool shades [ββ _β ]
):
[ββ _β ] search_conversations query=<query>
> "How did we fix that Redis connection pooling nightmare?"
> "Docker container keeps crashing on Kubernetes deployment"
> "React infinite re-render loop - useEffect dependency hell"
[ββ‘_β‘] find_file_context filepath=<filepath>
> "package.json changes that broke everything last month"
> "When we accidentally committed .env to main branch"
> "Authentication service refactor - before/after comparison"
[βΓ_Γ] get_error_solutions error_pattern=<error>
> "MODULE_NOT_FOUND - the classic npm/yarn version mismatch"
> "CORS preflight failing - but only on production Fridays?"
> "Database deadlock during Black Friday traffic spike"
[ββ_β] find_similar_queries query=<query>
> "Database queries slower than my morning coffee brewing"
> "How to implement error boundaries without losing sanity"
> "State management: Redux vs Zustand vs just useState"
[ββ_β] list_recent_sessions
> "Tuesday debugging marathon: 9pm-3am flaky test hunt"
> "Performance optimization sprint - reduced bundle 40%"
> "The great TypeScript migration of 2024"
[ββ_β] find_tool_patterns tool_name=<tool>
> "Read β Edit β Bash combo for rapid prototyping"
> "When I use Grep vs Task for different searches"
> "Git operations during feature branch management"
How claude-historian works:
"docker auth" query
|
ββ> Parallel Processing (search.ts:949): 15 projects Γ 10 files concurrently
| β’ Promise.allSettled for 6x speed improvement
| β’ Early termination when sufficient results found
| β’ Enhanced file coverage with comprehensive patterns
|
ββ> Enhanced Classification (search.ts:294): implementation β boost tool workflows
| β’ Workflow detection for tool sequences (Edit β Read β Bash)
| β’ Semantic boundary preservation (never truncate mid-function)
| β’ Claude-optimized formatting with rich metadata
|
ββ> Smart Ranking (search.ts:213):
| β’ "Edit workflow (7x successful)" (2h ago) *****
| β’ "Docker auth with context paths" (yesterday) ****
| β’ "Container debugging patterns" (last week) ***
|
ββ> Return Claude Code optimized results
Core optimizations:
- parallel processing:
Promise.allSettled
for 6x speed improvement across projects and files - workflow detection: Captures tool sequences like "Edit β Read β Bash" patterns
- enhanced file matching: Comprehensive path variations with case-insensitive matching
- intelligent deduplication: Content-based deduplication preserving highest-scoring results
- intelligent truncation: Never truncates mid-function or mid-error
- Claude-optimized formatting: Rich metadata with technical content prioritization
Search strategies:
- JSON streaming parser (parseJsonlFile): Reads Claude Code conversation files on-demand without full deserialization
- LRU caching (messageCache): In-memory cache with intelligent eviction for frequently accessed conversations
- TF-IDF inspired scoring (calculateRelevanceScore): Term frequency scoring with document frequency weighting for relevance
- Query classification (classifyQueryType): Naive Bayes-style classification (error/implementation/analysis/general) with adaptive limits
- Edit distance (calculateQuerySimilarity): Fuzzy matching for technical terms and typo tolerance
- Exponential time decay (getTimeRangeFilter): Recent messages weighted higher with configurable half-life
- Parallel file processing (getErrorSolutions): Concurrent project scanning with early termination for 0.8s response times
- Workflow pattern recognition (getToolPatterns): Detects tool usage sequences and related workflows for learning
- Enhanced file context (findFileContext): Multi-project search with comprehensive path matching
- Content-aware truncation (smartTruncation): Intelligent content boundaries over arbitrary character limits
- Technical content prioritization (formatSearchResults): Code blocks, errors, and file paths get full preservation
- Query similarity clustering (findSimilarQueries): Semantic expansion and pattern grouping for related questions
File access:
- Reads from:
~/.claude/conversations/
- Zero persistent storage or indexing
- Never leaves your machine
git clone https://github.com/vvkmnn/claude-historian && cd claude-historian
npm install && npm run build
npm test
Package requirements:
- Node.js: >=20.0.0 (ES modules support)
- npm: >=10.0.0 (package-lock v3)
- Runtime: Only
@modelcontextprotocol/sdk
dependency - Zero external dependencies for production deployment
- Optimized: 50% token reduction with parallel processing
Development workflow:
npm run build # TypeScript compilation with executable permissions
npm run dev # Watch mode with tsc --watch
npm run lint # ESLint code quality checks
npm run format # Prettier formatting
npm run type-check # TypeScript validation without emit
npm run prepublishOnly # Pre-publish validation (build + lint + format)
Contributing:
- Please fork the repository and create feature branches
- Test with large conversation histories before submitting PRs
- Follow TypeScript strict mode and MCP protocol standards
Learn from examples:
- Official MCP servers for reference implementations
- TypeScript SDK for best practices
- Creating Node.js modules - NPM package development guide
Claude Desktop support is currently blocked by LevelDB locks and Electron sandboxing. You will still search Claude Desktop from Claude Code, but only when the Claude app is closed.
A DXT package and build is available for future compatibility; further investigations are ongoing. Feel free to test with it.
Claude Fauchet (1744-1793), French Historian