MCP server and CLI for queryable analytics on Claude Code session logs.
Related: agent-event-bus shares design patterns with this project.
Parses your Claude Code session logs (~/.claude/projects/**/*.jsonl) and provides:
- Tool frequency - Which tools you use most (Read, Edit, Bash, Grep, etc.)
- Command breakdown - Bash command patterns (git, make, cargo, npm, etc.)
- Workflow sequences - Common tool chains like
Read → Edit → Bash - Permission gaps - Commands that should be added to settings.json
- Token usage - Usage breakdown by day, session, or model
- Session timeline - Events across conversations with filtering
- Cross-session insights - Gotchas, patterns, and learnings from event-bus
Data is stored persistently in SQLite and auto-refreshes when stale (>5 min old).
make installThis will:
- Create a virtual environment and install dependencies
- Set up a LaunchAgent for auto-start (macOS) or systemd service (Linux)
- Add the MCP server to Claude Code
- Install the CLI to your path
# Status & Ingestion
agent-session-analytics-cli status # Database stats
agent-session-analytics-cli ingest --days 7 # Refresh data from logs
# Core Analytics
agent-session-analytics-cli frequency # Tool usage (--no-expand to hide breakdowns)
agent-session-analytics-cli commands # Bash command breakdown (--prefix git)
agent-session-analytics-cli sessions # Session metadata and tokens
agent-session-analytics-cli tokens --by day # Token usage (day/session/model)
# Workflow Analysis
agent-session-analytics-cli sequences # Tool chains (--expand for command-level)
agent-session-analytics-cli permissions # Commands needing settings.json
agent-session-analytics-cli insights # Pre-computed patterns for /improve-workflow
# File & Project Activity
agent-session-analytics-cli file-activity # File reads/edits/writes
agent-session-analytics-cli languages # Language distribution
agent-session-analytics-cli projects # Activity by project
agent-session-analytics-cli mcp-usage # MCP server/tool usage
# Agent Activity
agent-session-analytics-cli agents # Task subagent activity vs main session
# Session Analysis
agent-session-analytics-cli signals # Raw session metrics for LLM interpretation
agent-session-analytics-cli classify # Categorize sessions (debug/dev/research)
agent-session-analytics-cli failures # Error patterns and rework detection
agent-session-analytics-cli error-details # Detailed errors with tool parameters
agent-session-analytics-cli trends # Compare usage across time periods
agent-session-analytics-cli handoff # Context summary for session handoff
# User Messages
agent-session-analytics-cli journey # User messages across sessions
agent-session-analytics-cli search <query> # Full-text search on messages
# Session Relationships
agent-session-analytics-cli parallel # Find simultaneously active sessions
agent-session-analytics-cli related <id> # Find sessions with similar patterns
# Git Integration
agent-session-analytics-cli git-ingest # Import git commit history
agent-session-analytics-cli git-correlate # Link commits to sessions
agent-session-analytics-cli session-commits # Show commits per session
# Event-Bus Integration
agent-session-analytics-cli bus-events # Query cross-session events (gotchas, patterns)
# Pattern Inspection
agent-session-analytics-cli sample-sequences # Sample instances of a pattern with context
# Performance
agent-session-analytics-cli benchmark # Benchmark all MCP tool response timesAll commands support:
--jsonfor machine-readable output--days Nto specify time range (default: 7)--project PATHto filter by project
31 tools available when running as an MCP server:
| Category | Tools |
|---|---|
| Status | get_status, ingest_logs |
| Analytics | get_tool_frequency, get_command_frequency, get_session_events, list_sessions, get_token_usage |
| Patterns | get_tool_sequences, sample_sequences, get_permission_gaps, get_insights |
| Files | get_file_activity, get_languages, get_projects, get_mcp_usage |
| Agents | get_agent_activity |
| Sessions | get_session_signals, classify_sessions, analyze_failures, get_error_details, analyze_trends, get_handoff_context |
| Messages | get_session_messages, search_messages |
| Relationships | detect_parallel_sessions, find_related_sessions |
| Git | ingest_git_history, correlate_git_with_sessions, get_session_commits |
| Event-Bus | ingest_bus_events, get_bus_events |
For detailed usage, read the MCP resource agent-session-analytics://guide or see guide.md.
# Install dev dependencies
make dev
# Run in dev mode with auto-reload
./scripts/dev.sh
# Run checks (format, lint, test)
make check
# Run tests only
.venv/bin/pytest tests/ -v- Database:
~/.claude/contrib/agent-session-analytics/data.db - Logs parsed from:
~/.claude/projects/**/*.jsonl - Event-bus source:
~/.claude/contrib/agent-event-bus/data.db(if agent-event-bus is installed)
- Ingestion: Parses JSONL session logs incrementally (tracks file mtime/size)
- Storage: SQLite database with events, sessions, and patterns tables
- Auto-refresh: Queries detect stale data (>5 min) and trigger re-ingestion
- Patterns: Pre-computes tool sequences and permission gaps for fast queries
See docs/SCHEMA.md for detailed database schema documentation.
Key patterns used in the codebase:
- Public Storage API: Use
storage.execute_query()for reads,execute_write()for writes - Query Helpers:
build_where_clause()reduces duplication across query functions - Formatter Registry: CLI uses
@_register_formatter(predicate)for extensible output formatting - Schema Migrations:
@migration(version, name)decorator for future DB schema changes
See CLAUDE.md for more details on contributing.
- agent-event-bus - Cross-session communication for Claude Code
make uninstallMIT