RLM-powered semantic search for Claude Code conversation history.
ccrecall provides three tools for exploring your Claude Code conversation history:
- memory_projects - Discover all projects with session counts and sizes
- memory_timeline - Browse recent sessions with summaries
- memory_recall - Semantic search across conversations using RLM
Claude Code (Main)
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
ccrecall RLM MCP Server Other MCPs
│ ▲
│ MCP Client │
└──────────────────┘
│
▼
~/.claude/projects/
├── -Users-richard-projects-foo/
│ ├── {session}.jsonl
│ └── {session}/session-memory/summary.md
ccrecall is dual-role: It's an MCP server (exposing tools to Claude) and an MCP client (calling RLM tools for semantic search).
ccrecall requires RLM for semantic search.
git clone https://github.com/richardwhiteii/rlm.git
cd rlm
uv pip install -e .git clone https://github.com/richardwhiteii/ccrecall.git
cd ccrecall
uv pip install -e .Add both MCP servers to ~/.claude/.mcp.json:
{
"mcpServers": {
"rlm": {
"command": "uv",
"args": ["run", "rlm-server"],
"cwd": "/path/to/rlm"
},
"ccrecall": {
"command": "uv",
"args": ["run", "ccrecall"],
"cwd": "/path/to/ccrecall",
"env": {
"RLM_SERVER_PATH": "/path/to/rlm"
}
}
}
}Restart Claude Code to load the new MCP servers.
Claude Code can help you install and configure ccrecall. Just ask:
Help me install ccrecall (https://github.com/richardwhiteii/ccrecall) and
rlm (https://github.com/richardwhiteii/rlm) so I can search my Claude Code
conversation history. Clone both repos, install them with uv, and use
`claude mcp add` to configure both MCP servers.
Claude will walk you through each step, adapting paths to your system.
List all Claude Code projects with session counts and storage sizes.
Input: None
Output:
{
"projects": [
{
"path": "/Users/richard/projects/myapp",
"session_count": 45,
"last_used": "2026-01-18T10:30:00",
"total_size_mb": 12.5
}
],
"total_projects": 15,
"total_sessions": 452,
"total_size_gb": 4.6
}View recent sessions with summaries and metadata.
Input:
days(optional, default: 7) - Number of days to look backproject(optional) - Filter by project path substring
Output:
{
"sessions": [
{
"session_id": "abc123",
"project": "/Users/richard/projects/myapp",
"summary": "Fixed authentication bug",
"timestamp": "2026-01-18T10:30:00",
"model": "claude-sonnet-4"
}
],
"total_sessions": 12,
"date_range": "Last 7 days"
}Semantic search across conversation history using RLM.
Input:
query(required) - Natural language questionproject(optional) - Filter by project path
Algorithm:
- Extract keywords and grep summaries for pre-filtering
- Load top 10 matching sessions into RLM
- Run
rlm_sub_query_batchwith Claude Haiku for semantic search - Return top 5 most relevant results
Output:
{
"results": [
{
"session_id": "abc123",
"project": "/Users/richard/projects/myapp",
"summary": "Fixed authentication bug",
"timestamp": "2026-01-18T10:30:00",
"relevance": "high - directly addresses login issue",
"excerpt": "The bug was in the JWT validation logic..."
}
],
"total_sessions_searched": 10
}| Environment Variable | Required | Description |
|---|---|---|
RLM_SERVER_PATH |
Yes | Path to RLM MCP server installation |
Once both MCP servers are configured and Claude Code is restarted, you can ask Claude natural questions about your conversation history:
Exploring your projects:
You: What Claude Code projects do I have?
Claude: [uses memory_projects tool] You have 45 projects with 452 total sessions...
Browsing recent work:
You: What did I work on this week?
Claude: [uses memory_timeline tool] Here are your recent sessions...
Semantic search across conversations:
You: How did I fix the authentication bug?
Claude: [uses memory_recall tool] Found in session abc123: "The bug was in the JWT validation..."
Claude automatically selects the appropriate tool based on your question. The memory_recall tool uses RLM for semantic search, which is why both MCP servers need to be configured.
uv pip install -e ".[dev]"# Unit tests only (no RLM required)
pytest tests/ -v -m "not integration"
# Integration tests (requires running RLM server)
pytest tests/ -v -m integration
# All tests
pytest tests/ -vMIT