Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Context Bridge

БесплатноНе проверен

Enables Claude Code to search and retrieve past chat history from Claude.ai exports and Claude Code sessions, allowing the AI to reference previous conversation

GitHubEmbed

Описание

Enables Claude Code to search and retrieve past chat history from Claude.ai exports and Claude Code sessions, allowing the AI to reference previous conversations and decisions.

README

This file is the practical "how do I actually run this" companion. See PLAN.md for the original design rationale and vague roadmap.

Installation

bash scripts/wizard.sh

The wizard creates a .venv, installs dependencies, registers the MCP server with Claude Code (global by default, so it's available in every session), and writes a .env file for local config.

Configuration.env (created by the wizard, gitignored) supports:

Variable Default Purpose
CONTEXT_BRIDGE_DB_PATH ./chat_memory.db Where the database lives
CONTEXT_BRIDGE_MODEL BAAI/bge-base-en-v1.5 fastembed model ID; changing after a build triggers a full rebuild
CONTEXT_BRIDGE_BATCH_SIZE 64 Embedding batch size; reduce to 16 or 8 if you hit OOM during build

Edit .env directly to change these after initial setup. See .env.example for the template.

Changing the embedding model: set CONTEXT_BRIDGE_MODEL to a different fastembed-compatible model ID, then run a full rebuild with your complete Claude.ai export — build_db.py detects the model mismatch and skips the partial-export merge to avoid mixing incompatible vectors. Partial exports are safe again after the first full rebuild with the new model.

Getting your Claude.ai export

There is no API for this — the export is pull-only, triggered manually:

  1. Go to Claude.ai → Settings → Account → Export Data
  2. Anthropic emails you a .dms file attachment (has been a few minutes in my exp)
  3. Run ./scripts/build_all.sh path/to/export.dms (or .zip) — it handles the rename, unpack, and rebuild

Abstract overview

Claude.ai export (.zip)                ~/.claude/projects/**/*.jsonl
      │  unzip                                │  ingest_code_sessions.py
      ▼                                       │  (incremental, walk parentUuid tree)
data/inspect/                                 │
      │  ingest.py + embed.py                 │
      │  (full rebuild via build_db.py)       │
      └──────────────────┬────────────────────┘
                         ▼
               chat_memory.db   (SQLite — chunks + sessions + meta)
                         │  source: 'claude_ai' | 'claude_code'
                         │  server.py: search_chat_history, get_conversation
                         ▼
               Claude Code session, via "context-bridge" MCP

build_db.py always parses the entire data/inspect/ export and re-embeds everything, but before the atomic replace it merges back any claude_ai chunks from the previous DB whose conversation/project UUID is absent from the new export. This means a partial export (e.g. 90-day-only) is safe — older history that isn't in the new export is preserved from the old DB.

One exception: if the embedding model changes between builds, the merge is skipped (mixing vectors from two models would corrupt search). In that case run build_db.py with a full export to get a clean rebuild.

Commands

Each shell script accepts --help for full usage and options. Quick reference:

Script Purpose
./scripts/wizard.sh One-time setup: venv, dependencies, MCP registration
./scripts/build_all.sh Rebuild DB from a Claude.ai export (run after each new export)
./scripts/run_server.sh Start the MCP server manually (smoke check outside Claude Code)
scripts/service/ Watcher background-service templates: launchd plist (macOS), systemd user unit (Linux) — install instructions in each file's header
./scripts/build_all.sh --help      # full options + steps
./scripts/wizard.sh --help         # prerequisites + what the wizard does

Tests and standalone scripts:

pytest                           # full suite (unit + integration)
pytest -m "not integration"      # fast local loop: skips real subprocess/lock tests
pytest -n auto                   # parallelize across cores (pip install pytest-xdist)
bash tests/check_docs.sh         # structural lint (versions, file paths)
python3 ingest_code_sessions.py  # incremental Claude Code session ingest
python3 ingest.py                # parse-only, no embedding (dry-run check)
python3 query.py "your query"    # ad-hoc CLI search (--top-k N, --db PATH)
python3 scripts/print_schema.py  # dump each MCP tool's input/output JSON schema
mcp dev server.py                # interactive MCP Inspector (browse + invoke tools)

How the MCP server is actually used

The server registers three tools with Claude: search_chat_history, get_nearby_context, and get_conversation. Claude Code loads a tool's schema lazily — only once that specific tool is actually called in a session — so an unused tool costs nothing. Measured cost per tool once loaded (via /context): search_chat_history ~517 tokens, get_nearby_context ~393, get_conversation ~283 (~1193 total if a session calls all three).

search_chat_history results are for orientation/ranking only — each hit's text is a short preview, not the full chunk. Before treating anything from a hit as fact, call get_nearby_context or get_conversation to pull the real reconstructed text.

What triggers a search: Note that the tool description drives autonomous behavior. The current description is reactive: Claude calls search_chat_history when it notices it's about to re-derive something it suspects has been covered before. In a narrow coding task it may never fire; in a design or planning conversation it may fire more.

The most reliable pattern: ask explicitly.

"Search the context bridge for [topic]."

This produces a direct, well-formed tool call rather than leaving query construction to Claude's autonomous judgment. Semantic search rewards descriptive phrases over single keywords — "what did we decide about chunking strategy" retrieves better than "chunking".

Current retrieval limitation: search_chat_history has no locality signal. A query from a foo session ranks foo sessions no higher than sessions from bar, baz, or any other project. This is the Phase 3 gap (current_project parameter — see PLAN.md). Until Phase 3 is implemented, cross-project noise is a known retrieval quality ceiling.

Troubleshooting / FAQ

The model download hangs or fails. fastembed downloads ~130 MB on first run. If it times out, check your network and retry. The cache lives at ~/.cache/fastembed/.

build_all.sh says "OOM" or crashes during embedding. Reduce CONTEXT_BRIDGE_BATCH_SIZE in .env (try 16 or 8) and re-run.

The MCP server isn't appearing in Claude Code. Run claude mcp list to verify registration, then restart Claude Code (exit & resume session). The server list is read at session start. If it's missing, re-run ./scripts/wizard.sh.

search_chat_history returns nothing (or only irrelevant results). Run ./scripts/build_all.sh first — the server needs a built chat_memory.db. If the DB exists, try a more descriptive phrase ("what did we decide about X") rather than a single keyword.

Claude Code sessions aren't appearing in search. Run python3 ingest_code_sessions.py to ingest the latest sessions, then restart the MCP server. This step is separate from the Claude.ai export build.

I changed the embedding model and now search is broken. See "Changing the embedding model" under Configuration above.

Notes / known constraints

  • chat_memory.db and data/ are gitignored — local build artifacts, not committed.

from github.com/zachvp/context_bridge

Установить Context Bridge в Claude Desktop, Claude Code, Cursor

Рекомендуется · одна команда, все IDE
unyly install context-bridge

Ставит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.

Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh

Или настроить вручную

Выполни в терминале:

claude mcp add context-bridge -- uvx context-bridge

FAQ

Context Bridge MCP бесплатный?

Да, Context Bridge MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Context Bridge?

Нет, Context Bridge работает без API-ключей и переменных окружения.

Context Bridge — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить Context Bridge в Claude Desktop, Claude Code или Cursor?

Открой Context Bridge на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Context Bridge with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории communication