Skip to main content
Glama

MemoCall

An MCP server that lets Claude Code recall the context of your past conversations — from any project — on demand.

Claude Code can resume a session, but getting another conversation's context into the one you're in is a chore — copy-pasting exports or digging through raw transcript files by hand — and resume only sees the current directory anyway. MemoCall turns it into a single ask: "what was I working on?" or "load the session where we set up X", and it pulls that transcript in as clean, compact Markdown — even from a totally different project.

It's read-only. Claude Code already records every session to ~/.claude/projects/<project>/<id>.jsonl; this server just reads those files, strips the noise, collapses tool calls, and hands back a readable transcript. It never writes, hooks, or touches a live session.

What you get

Five tools, available in every session once installed. Claude picks the right one from the request:

Tool

What it does

list_sessions

Your recent conversations across all projects, grouped by directory. "What was I working on?"

search_sessions

Find a past conversation by keyword (matches titles + first messages + paths).

load_session

Load one conversation as compact Markdown — by id or query. Optionally a turn window via turns.

session_outline

A cheap map of one conversation: the numbered list of your prompts. Great for huge sessions.

search_in_session

Return only the turns within one conversation that match a keyword.

You don't call these directly — you talk normally and Claude reaches for them:

You:  what sessions have i worked on recently?
You:  load the one where we set up the license invitation system
You:  which session did we debug the keychain SIGKILL thing in?

Related MCP server: Cortex

How the transcript is rendered

Raw transcripts are a verbose event log (one big file hit 11 MB). memocall reduces each turn to the essentials, Conductor-style:

**You:** right now i need to set up a system to invite prospects...
↳ 12 tool calls (Bash ×5, Read ×4, Edit ×3)
**Claude:** I've set up the invitation flow. Key decisions: ...

Tool-call outputs are elided (the big token win, and a privacy win — see below). Abandoned/edited message branches are dropped so you get the conversation as it actually played out. A token budget keeps even an 11 MB session well under Claude Code's MCP output cap via middle-out truncation.

Navigating large sessions

A single response can't hold a 1,000-turn session, so for big ones you don't dump — you navigate:

  1. session_outline → a numbered map of every prompt (tiny, fits any session).

  2. search_in_session → jump straight to the turns about a topic, or load_session with turns: "300-340" to pull an exact window (turn numbers come from the outline).

So you never lose access to the middle of a huge conversation — load_session alone would middle-out-truncate it, but the outline + range/search tools let Claude reach any part on demand.

Install

Requires the Claude Code CLI (and Node 18+). One line — npx fetches and runs the published package:

claude mcp add --scope user memocall -- npx -y memocall

--scope user makes it available in every session, in every directory. Restart Claude Code (or open a new session) and ask it to list your sessions. Verify with claude mcp list — you should see memocall: … ✔ Connected.

git clone https://github.com/baodq06/memocall.git
cd memocall && npm install && npm run build
claude mcp add --scope user memocall -- node "$(pwd)/dist/index.js"

Privacy & security

  • Local only. No network, no auth, no telemetry. It reads files under ~/.claude/projects/ and nothing else.

  • Compact mode elides tool outputs, which is where secrets (tokens, keys, env) usually live — so the default output is much safer than the raw transcript.

  • format: "full" includes brief tool inputs and may surface sensitive strings. Use it deliberately.

  • Transcripts can contain secrets regardless; treat loaded context as you would the original conversation.

Limitations

  • Recall is best-effort: Claude Code deletes transcripts after cleanupPeriodDays (default 30).

  • Forked sessions may only contain post-fork turns.

  • The transcript format is undocumented and can change between Claude Code versions; all format knowledge is isolated in src/jsonl.ts so it's a one-file patch if it does.

Development

npm run build           # compile TypeScript -> dist/
npm test                # unit suite (node:test) on synthetic fixtures
npm run smoke           # optional: checks all YOUR real sessions stay under the output cap
node dist/parser.js <file.jsonl> [--full|--outline] [--turns 10-20] [--search "kw"] [--max N] [--think]   # test the parser
node test-client.mjs    # drive the server over stdio like Claude Code does
npm run inspect         # open the MCP Inspector UI

Layout:

  • src/jsonl.ts — all knowledge of the transcript format (helpers, ordering, classification).

  • src/parser.ts — JSONL → compact Markdown (the core transform).

  • src/locator.ts — session enumeration + cached metadata index.

  • src/index.ts — the MCP server wiring the three tools.

License

MIT

Available Tools

5 tools
list_sessionsList recent Claude Code sessionsA

List your recent Claude Code conversations across ALL projects, grouped by project directory. Use this to answer 'what sessions have I worked on recently?' or to find a past session before loading it. Returns each session's title, date, turn count, and id.

Inputs: cwd, limit.

load_sessionLoad a past Claude Code conversationA

Load the context of a past Claude Code conversation as compact Markdown (human turns, collapsed tool-call summaries, and assistant replies — tool outputs are elided). Provide either a session id (from list_sessions/search_sessions) or a free-text query to find it. Use this to pull a previous conversation's context into the current session. For a very large session, either pass turns to load a specific window (turn numbers come from session_outline), or prefer session_outline / search_in_session.

Inputs: id, query, format, turns, +2 more.

search_in_sessionSearch within a past conversationA

Find specific turns WITHIN one past Claude Code conversation by keyword — returns only the matching turns (with their turn numbers). Use when the user asks what was decided or discussed about a topic inside a known or large session (e.g. 'what did we decide about retries in that session'). Pick the session by id or session (free-text); query is the keyword to find inside it.

Inputs: query (required), id, session.

search_sessionsSearch past Claude Code sessionsA

Search your past Claude Code conversations (across all projects) by keyword — matches session titles, first messages, and project paths. Use when the user refers to a past conversation by topic (e.g. 'the session where we set up the license system'). Returns matching sessions with their ids.

Inputs: query (required), limit.

session_outlineOutline a past conversationA

Get a quick MAP of a past Claude Code conversation: the numbered list of the user's prompts, one line each. Very cheap even for huge sessions. Use this to see what a session covered, or to find which turn numbers to then load with load_session's turns. Identify the session by id or free-text query.

Inputs: id, query.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool targets a distinct operation: listing sessions, loading a session, searching within a session, searching across sessions, and outlining a session. There is no overlap in functionality.

    Naming Consistency4/5

    Four tools follow the verb_noun pattern (list_sessions, load_session, search_in_session, search_sessions), while session_outline uses noun_verb. This minor deviation slightly breaks full consistency.

    Tool Count5/5

    Five tools is appropriate for managing Claude Code sessions, covering the essential workflows without excess or deficiency.

    Completeness4/5

    The set covers listing, loading, searching, and outlining sessions. A tool for deleting or archiving sessions might be expected but is not critical, resulting in a minor gap.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      An MCP server that makes Claude Code conversation history searchable and proactively useful by indexing past sessions with hybrid BM25+TF-IDF search, extracting decisions and solutions, and auto-injecting relevant project context at session start.
      9
      9 npm
      69
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Persistent memory MCP server for Claude Code that captures and recalls project context across sessions, eliminating the need to re-explain architecture and decisions daily.
      73 npm
      1
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      A persistent memory MCP server for Claude Code that automatically saves conversations and retrieves relevant history across sessions to provide context.
      17
      67 PyPI
      10
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that provides Claude Code with persistent memory across sessions, including session checkpoints, image persistence, and bidirectional sync with claude.ai projects.
      1
      MIT