Skip to main content
Glama

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 : (Cursor, Windsurf, etc.)

{ "mcpServers": { "claude-historian-mcp": { "command": "npx", "args": ["claude-historian-mcp"], "env": {} } } }

That's it; there is no 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.

Related MCP server: Claude AI Documentation Assistant

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

Latest Blog Posts

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/Vvkmnn/claude-historian'

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