Vvkmnn

claude-historian-mcp

Community Vvkmnn
Updated

๐Ÿค– An MCP server for Claude Code conversation history

claude-historian-mcp

claude-historian-mcp

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.

npm version GitHub stars CodeRabbit Pull Request Reviews Claude TypeScript Node.js License: MIT

install

Requirements:

Claude Code

From shell:

claude mcp add claude-historian-mcp -- npx claude-historian-mcp

From inside Claude (restart required):

Add this to our global mcp config: npx claude-historian-mcp

Install this mcp: https://github.com/Vvkmnn/claude-historian-mcp

From any manually configurable mcp.json: (Cursor, Windsurf, etc.)

{
  "mcpServers": {
    "claude-historian-mcp": {
      "command": "npx",
      "args": ["claude-historian-mcp"],
      "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

๐Ÿ“ฆ renamed: This project was renamed from claude-historian to claude-historian-mcp. Existing users should update your install command and MCP config args to claude-historian-mcp.

features

MCP server that gives Claude access to your conversation history. Fast search with smart prioritization.

Runs locally (with cool shades [โŒโ– _โ– ]):

search_conversations

Search your conversation history for past solutions, discussions, and context.

[โŒโ– _โ– ] 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"
[โŒโ– _โ– ] "docker auth" | 2 results

{
  "results": [{
    "type": "assistant",
    "ts": "2h ago",
    "content": "Fixed Docker auth by updating registry credentials...",
    "project": "my-app",
    "score": 15,
    "ctx": { "filesReferenced": ["docker-compose.yml"], "toolsUsed": ["Edit", "Bash"] }
  }]
}
find_file_context

Track modifications, edits, and discussions about specific files across sessions.

[โŒโ–ก_โ–ก] 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"
[โŒโ–ก_โ–ก] "package.json" | 5 operations

{
  "filepath": "package.json",
  "operations": [{
    "type": "edit",
    "ts": "1d ago",
    "changes": ["added vitest dependency", "updated build script"],
    "ctx": { "filesReferenced": ["package.json", "vitest.config.ts"] }
  }]
}
get_error_solutions

Find how you've resolved similar errors before, with code fixes and patterns.

[โŒร—_ร—] 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"
[โŒร—_ร—] "ENOENT no such file" | 2 solutions

{
  "solutions": [{
    "pattern": "ENOENT: no such file or directory",
    "frequency": 3,
    "fixes": [{ "content": "Created missing directory", "code": ["mkdir -p ./dist"] }]
  }]
}
find_similar_queries

Discover related questions you've asked before and their answers.

[โŒโ—†_โ—†] 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"
[โŒโ—†_โ—†] "typescript error handling" | 3 similar

{
  "similar": [{
    "query": "how to handle async errors in typescript",
    "similarity": 0.72,
    "ts": "3d ago",
    "project": "api-server"
  }]
}
list_recent_sessions

Browse your recent Claude sessions with project context and accomplishments.

[โŒโ—‹_โ—‹] list_recent_sessions
  > "Tuesday debugging marathon: 9pm-3am flaky test hunt"
  > "Performance optimization sprint - reduced bundle 40%"
  > "The great TypeScript migration of 2024"
[โŒโ—‹_โ—‹] all | 3 sessions

{
  "sessions": [{
    "id": "68d5323b",
    "ts": "2h ago",
    "duration": 45,
    "messages": 128,
    "project": "my-app",
    "tools": ["Edit", "Bash", "Read"],
    "accomplishments": ["fixed auth bug", "added unit tests"]
  }]
}
find_tool_patterns

Learn from your successful tool usage workflows and common sequences.

[โŒโŽš_โŽš] 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"
[โŒโŽš_โŽš] "Edit" | 3 patterns

{
  "tool": "Edit",
  "patterns": [{
    "name": "Read โ†’ Edit โ†’ Bash",
    "uses": 7,
    "workflow": "Read โ†’ Edit โ†’ Bash",
    "practice": "Read file, edit, then run tests (7x successful)"
  }]
}
search_plans

Search Claude Code plan files for past implementation approaches, decisions, and patterns.

[โŒโ–ฃ_โ–ฃ] search_plans query=<query>
  > "How did we architect the authentication system?"
  > "Database migration strategy from last refactor"
  > "API versioning approach we decided on"
[โŒโ–ฃ_โ–ฃ] "auth implementation" | 2 plans

{
  "plans": [{
    "file": "implement-oauth.md",
    "ts": "3d ago",
    "project": "my-app",
    "summary": "OAuth2 implementation with refresh tokens...",
    "decisions": ["chose PKCE flow", "JWT for access tokens"]
  }]
}
extract_compact_summary

Get a concise summary of what was accomplished in a specific session.

[โŒโ—‰_โ—‰] extract_compact_summary session_id=<id>
  > "What did we accomplish in last session?"
  > "Summarize the authentication refactor work"
  > "Key decisions from yesterday's debugging"
[โŒโ—‰_โ—‰] extracting summary from my-app (68d5323b)

{
  "session": {
    "id": "68d5323b",
    "ts": "2h ago",
    "duration": 45,
    "messages": 128,
    "project": "my-app",
    "tools": ["Edit", "Bash", "Read"],
    "files": ["src/auth.ts", "package.json"],
    "accomplishments": ["fixed auth bug", "added unit tests"],
    "decisions": ["chose JWT over sessions"]
  }
}

methodology

How claude-historian works:

"docker auth" query
      |
      โ”œโ”€> Parallel Processing (search.ts:157): 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:582): 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:637):
      |   โ€ข "Edit workflow (7x successful)" (2h ago) *****
      |   โ€ข "Docker auth with context paths" (yesterday) ****
      |   โ€ข "Container debugging patterns" (last week) ***
      |
      โ””โ”€> Return Claude Code optimized results

Core optimizations:

Search strategies:

File access:

  • Reads from: ~/.claude/conversations/
  • Zero persistent storage or indexing
  • Never leaves your machine

performance

See PERF.md for benchmarks, optimization history, and quality scores.

Current (v1.0.2): 4/7 tools at โ‰ฅ4.0/5, targeting all 7. Focus: structured JSON output for Claude Code consumption.

development

git clone https://github.com/vvkmnn/claude-historian-mcp && 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 start          # Run the MCP server directly
npm run lint           # ESLint code quality checks
npm run lint:fix       # Auto-fix linting issues
npm run format         # Prettier formatting (src/)
npm run format:check   # Check formatting without changes
npm run type-check     # TypeScript validation without emit
npm run test           # Run help command + type check
npm run prepublishOnly # Pre-publish validation (build + lint + format:check)

Git hooks (via Husky):

  • pre-commit: Auto-formats staged .ts files with Prettier and ESLint
  • pre-push: Runs full validation (format, lint, type-check, build) before push

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:

desktop

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.

license

MIT

Claude Fauchet

Claude Fauchet (1744-1793), French Historian

MCP Server ยท Populars

MCP Server ยท New