Labsco
leesgit logo

claude-session-continuity-mcp

β˜… 1

from leesgit

Zero-config session continuity for Claude Code. Auto-captures context via Claude Hooks, provides 24 tools for memory, tasks, solutions, and knowledge graph. Multilingual semantic search (94+ languages).

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeQuick setup

claude-session-continuity-mcp (v1.13.2)

Zero Re-explanation Session Continuity for Claude Code — Automatic context capture + semantic search + auto error→solution pipeline

npm version License: MIT Tests Node claude-session-continuity-mcp MCP server

The Problem

Every new Claude Code session:

"This is a Next.js 15 project with App Router..."
"We decided to use Server Actions because..."
"Last time we were working on the auth system..."
"The build command is pnpm build..."

5 minutes of context-setting. Every. Single. Time.

The Solution

Fully automatic. Claude Hooks handle everything without manual calls:

# Session start β†’ Auto-loads relevant context + recent session history
# When asking β†’ Auto-injects relevant memories/solutions
# During conversation β†’ Tracks active files + auto-injects error solutions
# On compact β†’ Structured handover context for continuity
# On exit β†’ Extracts commits, decisions, error-fix pairs from transcript
← Auto-output on session start:
# my-app - Session Resumed

πŸ“ **State**: Implementing signup form

## Recent Sessions

### 2026-02-28
**Work**: Completed OAuth integration with Google provider
**Commits**: feat: add OAuth callback handler; fix: redirect URI config
**Decisions**: Use Server Actions instead of API routes

### 2026-02-27
**Work**: Set up authentication foundation
**Next**: Implement signup form validation

## Directives

- πŸ”΄ Always use Zod for form validation
- πŸ“Ž Prefer Server Components by default

## Key Memories

- 🎯 Decided on App Router, using Server Actions
- ⚠️ OAuth redirect_uri mismatch β†’ check env file

Zero manual work. Context follows you.


Features

FeatureDescription
πŸ€– Zero Manual WorkClaude Hooks automate all context capture/load
🎯 Quality Memory Only(v1.10.0) Only decisions, learnings, errors β€” no file-change noise
🧠 Semantic Searchmultilingual-e5-small embedding (94+ languages, 384d)
🌍 MultilingualKorean/English/Japanese + cross-language search (ENβ†’KR, KRβ†’EN)
πŸ”— Git IntegrationCommit messages auto-extracted from transcripts
πŸ•ΈοΈ Knowledge GraphMemory relations (solves, causes, extends...)
πŸ“Š Memory Classification5 types: observation, decision, learning, error, pattern
βœ… Integrated VerificationOne-click build/test/lint execution
πŸ“‹ Task ManagementPriority-based task management
πŸ”§ Auto Errorβ†’Solution(v1.12.0) Bash errors auto-detect β†’ inject past solutions; session-end auto-records error-fix pairs
πŸ’° Token Efficiency(v1.11.0) Removed loadContext from UserPromptSubmit (saves 24-60K tokens/session)
πŸ“‘ Progressive Disclosure(v1.11.0) memory_search returns index first, memory_get for full content
⏳ Temporal Decay(v1.11.0) Memory scoring with type-specific half-lives for relevance
πŸ“ Structured Handover(v1.10.0) PreCompact saves work summary, active files, pending actions
πŸšͺ Smart Session End(v1.10.0) Extracts commits, decisions, error-fix pairs from transcript
πŸ—‘οΈ Auto Noise Cleanup(v1.10.0) Auto-deletes stale observation memories (3d+)
πŸ” Past Reference Detection(v1.8.0) "μ €λ²ˆμ— X μ–΄λ–»κ²Œ ν–ˆμ–΄?" auto-searches DB
πŸ“ User Directive Extraction(v1.8.0) Auto-extracts "always/never" rules from prompts

Claude Hooks - Auto Context System

How It Works

SessionStart Hook (npx claude-hook-session-start):

  • Auto-detects project: monorepo (apps/project-name/) or single project (package.json root folder name)
  • Loads context from .claude/sessions.db
  • Injects: Current state, 3 recent sessions with commits/decisions, directives, pending tasks, filtered key memories
  • Auto-cleans stale noise memories (3d+ auto-tracked, 14d+ auto-compact)

UserPromptSubmit Hook (npx claude-hook-user-prompt):

  • Runs on every prompt submission
  • (v1.11.0) No longer calls loadContext() β€” saves 24-60K tokens/session
  • Injects relevant context (filtered: decisions, learnings, errors only)

PostToolUse Hook (npx claude-hook-post-tool):

  • Tracks hot file paths and updates active_context.recent_files
  • (v1.12.0) Auto-detects Bash errors β†’ searches solutions DB β†’ injects past solutions into context
  • No longer creates observation memories (v1.10.0 β€” eliminates [File Change] noise)

PreCompact Hook (npx claude-hook-pre-compact):

  • Builds structured handover context: work summary, active file, pending action, key facts, recent errors
  • No longer stores auto-compact memories (v1.10.0)

Stop Hook (npx claude-hook-session-end):

  • Extracts commit messages from JSONL transcript (git commit -m patterns)
  • Extracts error-fix pairs (error β†’ resolution within 3 messages)
  • (v1.12.0) Auto-records errorβ†’fix pairs to solutions table for future reuse
  • Extracts decisions ("because", "instead of", "chose" patterns)
  • (v1.11.0) Single-pass transcript parsing (4 JSONL reads β†’ 1)
  • Stores structured metadata in sessions.issues column as JSON

Example Output (Session Start)

# my-app - Session Resumed

πŸ“ **State**: Implementing signup form
🚧 **Blocker**: OAuth callback URL issue

## Recent Sessions

### 2026-02-28
**Work**: Completed OAuth integration
**Commits**: feat: add OAuth handler; fix: redirect config
**Decisions**: Use Server Actions over API routes
**Next**: Implement form validation

## Directives

- πŸ”΄ Always use Zod for validation

## Pending Tasks

- πŸ”„ [P8] Implement form validation
- ⏳ [P5] Add error handling

## Key Memories

- 🎯 Decided on App Router, using Server Actions
- ⚠️ OAuth redirect_uri mismatch β†’ check env file

Hook Management

# Check status
npx claude-session-hooks status

# Reinstall
npx claude-session-hooks install

# Remove
npx claude-session-hooks uninstall

# Temporarily disable
export MCP_HOOKS_DISABLED=true

Past Reference Detection (v1.8.0)

When you ask about past work, the UserPromptSubmit hook automatically searches the database:

You: "μ €λ²ˆμ— μΈμ•±κ²°μ œ μ–΄λ–»κ²Œ ν–ˆμ–΄?"
β†’ Hook detects "μ €λ²ˆμ—" + extracts keyword "μΈμ•±κ²°μ œ"
β†’ Searches sessions, memories (FTS5), and solutions
β†’ Injects matching results into context automatically

Supported patterns (Korean & English):

PatternExample
μ €λ²ˆμ—/전에/이전에 ... μ–΄λ–»κ²Œ"μ €λ²ˆμ— CORS μ—λŸ¬ μ–΄λ–»κ²Œ ν•΄κ²°ν–ˆμ§€?"
~ν–ˆλ˜/λ§Œλ“€μ—ˆλ˜/ν•΄κ²°ν–ˆλ˜"μˆ˜μ •ν–ˆλ˜ 둜그인 둜직"
μ§€λ‚œ μ„Έμ…˜/μž‘μ—…μ—μ„œ"μ§€λ‚œ μ„Έμ…˜μ—μ„œ 결제 κ΅¬ν˜„"
last time/before/previously"How did we handle auth last time?"
did we/did I ... before"Did we fix the database migration before?"
remember when/recall when"Remember when we set up CI?"

Output example:


## Related Past Work (auto-detected from your question)

### Sessions
- [2/14] 카카였 둜그인 μ•±ν‚€ μˆ˜μ •, μΈμ•±κ²°μ œ IAP ν”Œλ‘œμš° μˆ˜μ •

### Memories
- 🎯 [decision] ν…ŒμŠ€νŠΈ: μΈμ•±κ²°μ œ μƒν’ˆ 등둝 μ™„λ£Œ

### Solutions
- **IAP_BILLING_ERROR**: StoreKit 2 migration으둜 ν•΄κ²°

Why npm exec? (v1.4.3+)

Previous versions used absolute paths or npx:

// v1.3.x - absolute paths (broke on multi-project)
"command": "node \"/path/to/project-a/node_modules/.../session-start.js\""

// v1.4.0-1.4.2 - npx (required global install or hit npm registry)
"command": "npx claude-hook-session-start"

Now we use npm exec --:

"command": "npm exec -- claude-hook-session-start"

npm exec -- finds local node_modules/.bin first, then falls back to global. Works with both local and global installation without hitting npm registry.


Tools (v5 API) - 25 Focused Tools

1. Session Lifecycle (4) ⭐

// Start of session - auto-loads context
session_start({ project: "my-app", compact: true })

// End of session - auto-saves context
session_end({
  project: "my-app",
  summary: "Completed auth flow",
  modifiedFiles: ["src/auth.ts", "src/login/page.tsx"]
})

// View session history
session_history({ project: "my-app", limit: 5 })

// Semantic search past sessions
search_sessions({ query: "auth work", project: "my-app" })

2. Project Management (4)

// Get project status with task stats
project_status({ project: "my-app" })

// Initialize new project
project_init({ project: "my-app" })

// Analyze project tech stack
project_analyze({ project: "my-app" })

// List all projects
list_projects()

3. Task Management (4)

// Add a task
task_add({ project: "my-app", title: "Implement signup", priority: 8 })

// Update task status
task_update({ taskId: 1, status: "done" })

// List tasks
task_list({ project: "my-app", status: "pending" })

// Suggest tasks from TODO comments
task_suggest({ project: "my-app" })

4. Solution Archive (3)

// Record an error solution
solution_record({
  errorSignature: "TypeError: Cannot read property 'id'",
  solution: "Use optional chaining: user?.id"
})

// Find similar solutions (keyword or semantic)
solution_find({ query: "TypeError property", semantic: true })

// AI-powered solution suggestion
solution_suggest({ errorMessage: "Cannot read property 'email'" })

5. Verification (3)

// Run build
verify_build({ project: "my-app" })

// Run tests
verify_test({ project: "my-app" })

// Run all (build + test + lint)
verify_all({ project: "my-app" })

6. Memory System (5)

// Store a classified memory
memory_store({
  content: "State management with Riverpod makes testing easier",
  type: "learning",  // observation, decision, learning, error, pattern
  project: "my-app",
  tags: ["flutter", "state-management"],
  importance: 8,
  relatedTo: 23  // Connect to existing memory
})

// Search memories β€” returns index (id, type, tags, score) for token efficiency
memory_search({
  query: "state management test",
  type: "learning",
  semantic: true,  // Use embedding similarity
  limit: 10
})

// Get full memory content by ID (v1.11.0)
memory_get({ memoryId: 23 })

// Find related memories (graph + semantic)
memory_related({
  memoryId: 23,
  includeGraph: true,
  includeSemantic: true
})

// Get memory statistics
memory_stats({ project: "my-app" })

7. Knowledge Graph (2)

// Connect two memories with a typed relation
graph_connect({
  sourceId: 23,
  targetId: 25,
  relation: "solves",  // related_to, causes, solves, depends_on, contradicts, extends, example_of
  strength: 0.9
})

// Explore knowledge graph
graph_explore({
  memoryId: 23,
  depth: 2,
  relation: "all",  // or specific relation type
  direction: "both"  // outgoing, incoming, both
})

Memory Types

TypeDescriptionUse Case
observationPatterns, structures found in codebase"All screens are separated in features/ folder"
decisionArchitecture, library choices"Decided to use SharedPreferences for caching"
learningNew knowledge, best practices"Riverpod is better for testing"
errorOccurred errors and solutions"Provider.read() doesn't rebuild β†’ use watch()"
patternRecurring code patterns, conventions"Avoid late keyword abuse"

Relation Types

RelationDescriptionExample
related_toGeneral relationA and B are related
causesA causes BCaching decision β†’ folder structure change
solvesA solves BRiverpod learning β†’ Provider bug fix
depends_onA depends on BFolder structure β†’ Caching decision
contradictsA conflicts with BTwo design decisions conflict
extendsA extends Blate pattern β†’ Extended to Riverpod learning
example_ofA is example of BSpecific code is example of pattern

Data Storage

SQLite database at ~/.claude/sessions.db:

TablePurpose
memoriesClassified memories (observation, decision, learning, error, pattern)
memories_ftsFull-text search index (FTS5)
memory_relationsKnowledge graph relations
embeddings_v4Semantic search vectors (multilingual-e5-small, 384d)
project_contextFixed project info (tech stack, decisions)
active_contextCurrent work state
tasksTask backlog
solutionsError solution archive
sessionsSession history

Environment Variables

VariableDefaultDescription
WORKSPACE_ROOT-Workspace root path (required)
MCP_HOOKS_DISABLEDfalseDisable Claude Hooks
LOG_LEVELinfoLog level (debug/info/warn/error)
LOG_FILE-Optional file logging path

Development

# Clone
git clone https://github.com/leesgit/claude-session-continuity-mcp.git
cd claude-session-continuity-mcp

# Install
npm install

# Build
npm run build

# Test
npm test

# Test with coverage
npm run test:coverage

Performance

MetricValue
Context load (cached)<5ms
Memory search (FTS)~10ms
Semantic search~50ms
Build verificationProject-dependent

Roadmap

  • v2 API (15 focused tools)
  • v4 API (24 tools - memory + graph)
  • v5 Claude Hooks (auto-capture)
  • Knowledge Graph with typed relations
  • Memory classification (6 types)
  • Semantic search (embeddings)
  • Multilingual pattern detection (KO/EN/JA)
  • Git commit integration
  • 111 tests (6 test suites)
  • GitHub Actions CI/CD
  • Multilingual semantic search (v1.6.0 - multilingual-e5-small)
  • Cross-language search EN↔KR (v1.6.0)
  • Solution semantic search (v1.6.0)
  • Fix hooks settings file path (v1.6.1 - settings.json, not settings.local.json)
  • Auto-migrate legacy hooks (v1.6.1)
  • Fix PostToolUse matcher format to string (v1.6.3)
  • Fix README documentation for new hook format (v1.6.4)
  • Empty session skip and techStack save improvements (v1.7.1)
  • Past reference auto-detection in UserPromptSubmit hook (v1.8.0)
  • User directive extraction ("always/never" rules) (v1.8.0)
  • Memory quality overhaul β€” no more [File Change] noise (v1.10.0)
  • Structured handover context in PreCompact (v1.10.0)
  • Smart session-end: commit/decision/error-fix extraction from transcript (v1.10.0)
  • Auto noise cleanup (3d+ observations, 14d+ auto-compact) (v1.10.0)
  • 3 recent sessions display with structured metadata (v1.10.0)
  • Token efficiency β€” remove loadContext from UserPromptSubmit, saves 24-60K tokens/session (v1.11.0)
  • Single-pass transcript parsing, 4 JSONL reads β†’ 1 (v1.11.0)
  • Temporal decay for memory scoring with type-specific half-lives (v1.11.0)
  • Progressive disclosure β€” memory_search returns index, memory_get for full content (v1.11.0)
  • Memory consolidation via Jaccard similarity (v1.11.0)
  • Auto errorβ†’solution pipeline β€” PostToolUse detects Bash errors, injects past solutions (v1.12.0)
  • SessionEnd auto-records error-fix pairs to solutions table (v1.12.0)
  • Cross-project solution search with current project prioritization (v1.12.0)
  • sqlite-vec native vector search (v2 - when data > 1000 records)
  • Web dashboard
  • Cloud sync option

Contributing

PRs welcome! Please:

  1. Fork the repo
  2. Create a feature branch
  3. Add tests for new features
  4. Ensure npm test passes
  5. Submit PR

License

MIT Β© Byeongchang Lee


Acknowledgments