ContextBridge について
ContextBridgeは、コーディングアシスタント向けのWindows用MCPメモリーサーバーで、コンテキストをSQLiteに永続保存し、セマンティック検索できます。バックグラウンドサービスを介して、外部サービスや埋め込みAPI呼び出しなしで、対応クライアント間のメモリーとセッション引き継ぎを共有します。
主な機能
- 01SQLiteによる永続メモリー保存
- 02ONNX埋め込みによるセマンティック検索
- 03メモリーの書き込み、更新、削除ツール
- 04有効期限付きの一時セッション引き継ぎ
- 05バックグラウンドWindowsサービス
- 06対応クライアントの自動設定
活用シーン
- 01アシスタントのセッションをまたいでコーディング上の決定を保持
- 02対応クライアント間でプロジェクトのコンテキストを共有
- 03保存したセッション引き継ぎから作業を再開
- 04保存した設定や反復パターンを検索
MCP 対応
MCPクライアントにメモリーとセッション引き継ぎのツールを提供します。対応クライアントはHTTPまたはstdioで接続し、同じローカルSQLiteストアを共有します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ContextBridge
Windows 向けの依存関係ゼロの MCP メモリーサーバーです。AI コーディングアシスタントに、セマンティック検索に対応した共有の永続メモリーレイヤーを提供します。
ContextBridge とは?
Claude Code などの AI コーディングアシスタントはステートレスです。各セッションはまっさらな状態で始まり、以前のコンテキスト、判断、発見を永続的に記憶しません。ContextBridge は、すべての AI ツールが接続するバックグラウンドの Windows サービスとして動作することで、この問題を解決します。メモリーを永続的に保存し、キーワードではなく意味に基づいて検索できるため、複数のセッションや異なるツール間でコンテキストが蓄積されます。
ContextBridge を選ぶ理由
- 外部依存関係ゼロ — Docker、Postgres、Python、Ollama は不要です。すべて単一の Windows サービスプロセスで動作します。
- プロセス内でのエンベディング — エンベディングモデル(all-MiniLM-L6-v2、約 22 MB)は ONNX Runtime 経由で動作し、外部 API 呼び出しはありません。
- 単一ファイルでの保存 — SQLite データベースは
%ProgramData%\ContextBridge\memories.dbに保存されます。バックアップはファイルを 1 つコピーするだけです。 - ツール間で共有 — Claude Code(HTTP)、Claude Desktop(stdio)、Cline、VS Code Chat Agents はすべて、同じメモリーストアにリアルタイムで接続します。
- サービスを再起動してもメモリーは保持 — メモリーは SQLite に保存されます。エンベディングモデルは起動時に一度だけ読み込まれ、メモリー上に保持されます。
要件
- Windows 10 / Windows 11(Windows サービスとの統合に必要です)
- オプション A: .NET 10 SDK(
dotnet tool経由でインストールする場合) - オプション B: Windows 10 以降(ビルド済みの .exe をダウンロードする場合、追加の前提条件はありません)
- 管理者権限の PowerShell(Windows サービスのインストール/アンインストールに必要です)
クイックスタート
オプション A:dotnet グローバルツール経由でインストール
.NET 10 SDK がインストールされている場合:
dotnet tool install -g ThunderEagle.ContextBridge
これにより、システムの PATH に context-bridge 実行ファイルが配置されます。
オプション B:直接ダウンロード
GitHub Releases からビルド済みの実行ファイルをダウンロードします(SDK は不要です。SmartScreen の警告が一度表示されます)。.exe を PATH に追加するか、直接実行してください。
初回セットアップ
管理者権限の PowerShell で、次の 2 つのコマンドを実行します(右クリック →「管理者として実行」):
# 1. Download the embedding model, register as Windows Service, start it
context-bridge service install
# 2. Configure your AI tools to connect
context-bridge configure
実行される内容:
service installはエンベディングモデル(約 22 MB)をダウンロードし、Windows サービスを登録して、ブート時に自動起動するよう設定したうえで、すぐに起動します。configureはインストール済みのクライアント(Claude Code、Claude Desktop、Cline、VS Code Chat)を自動検出し、サービスに接続するよう設定します。
これでサービスはバックグラウンドで動作します。AI ツールを次回再起動すると、メモリーストアが認識されます。
サービスが実行中であることを確認します:
Get-Service ContextBridge
想定される出力:Status = Running
対応クライアント
| クライアント | トランスポート | バージョン | 備考 |
|---|---|---|---|
| Claude Code | HTTP | 最新 | context-bridge configure により自動設定 |
| Claude Desktop | stdio | 最新 | claude_desktop_config.json 経由で自動設定 |
| Cline(VS Code) | HTTP | 最新 | context-bridge configure により自動設定 |
| VS Code Chat Agents | HTTP | 1.99+ | context-bridge configure により自動設定 |
すべてのクライアントは、並行接続を介して同じ SQLite データベースを共有します。あるツールが書き込んだメモリーは、ほかのツールからすぐに参照できます。
MCP ツール
ContextBridge は、AI アシスタントが使用できる 7 つの MCP ツールを提供します。
| ツール | 用途 |
|---|---|
memory_write | 自動的なセマンティック埋め込みと任意のタグ付けにより、単一のメモリーを保存します |
memory_batch_write | 関連する複数のメモリーを一括で保存します(セッション終了時の効率的な情報抽出に便利です) |
memory_search | セマンティック検索 — 自然言語で検索し、近傍の結果を返します |
memory_list | 任意のタグフィルターを指定できる、すべてのメモリーのページ分割リストです |
memory_update | メモリーの内容を更新します(埋め込みは自動的に再生成されます) |
memory_delete | ID を指定してメモリーを削除します |
memory_status | サービスのヘルスチェック、レコード数、モデル情報を確認します |
タグの規約(任意。AI ツールが割り当てます):
project:<repo-name>— メモリーの対象をプロジェクトに限定しますtype:decision— アーキテクチャや技術に関する選択type:preference— コーディングスタイル、ツール、ワークフローに関する好みtype:pattern— 繰り返し使われるパターンや規約type:reference— 外部リソースやドキュメントへの参照
引き継ぎ — セッションの再開
メモリーは永続的な事実です。引き継ぎはそれとは異なり、会話履歴を再読み込みせずに、次回のセッションで前回の続きから再開できるようにする一時的なセッション状態です。
仕組み
セッションの終了時に、AI アシスタントに状態を保存するよう依頼します。
「プロジェクト context-bridge について、取り組んでいた内容を引き継ぎとして保存してください。」
モデルは、決定事項、次のステップ、未解決の質問など、現在の作業の要約を使って handoff_write を呼び出し、プロジェクトに関連付けます。
次のセッションの開始時に、モデルは handoff_list を自動的に呼び出し(サーバーの指示を介して)、以前の引き継ぎがあれば開始時のコンテキストに取り込みます。その後、処理が完了した引き継ぎを削除するために handoff_acknowledge を呼び出します。
引き継ぎ用ツール
| ツール | 用途 |
|---|---|
handoff_write | セッションの状態を記録します — 作業内容、決定事項、次のステップ |
handoff_list | アクティブな引き継ぎを取得します。プロジェクトで絞り込むこともできます |
handoff_acknowledge | 処理後に引き継ぎを削除します(完全に削除されます) |
handoff_write の主なパラメーター:
content— セッションの要約(自由形式のテキスト)project— プロジェクト識別子。例:context-bridge(任意ですが、指定を推奨します)ttl_days— 自動的に期限切れになるまで引き継ぎを保持する日数(デフォルト:7)
引き継ぎとメモリーの違い
| メモリー | 引き継ぎ | |
|---|---|---|
| 目的 | 永続的な事実、決定事項、好み | 一時的な「どこまで進めたか」のスナップショット |
| 有効期間 | 永続(明示的に削除されるまで) | TTL で制限(デフォルト 7 日) |
| 検索 | memory_search によるセマンティック検索 | handoff_list による完全一致検索 |
| クリーンアップ | memory_delete | handoff_acknowledge(または TTL の期限切れ) |
引き継ぎの内容を自動的にメモリーに変換しないでください。メモリーは、いつまでも変わらない事実のためのものです。再開したセッションで、その水準に達する情報が出てきた場合は、別途 memory_write を使って書き込んでください。
明示的な再開
MCP クライアントが prompts 機能(例:Claude Code)に対応している場合、セッションの再開を明示的に開始できます。
/mcp__context-bridge__resume-session context-bridge
これにより、resume-session という名前のプロンプトが呼び出され、指定したプロジェクトの引き継ぎを検索して取り込むようモデルに指示します。
期限切れと信頼性
引き継ぎは ttl_days が経過すると期限切れになり、サービスの起動時に削除されます。handoff_acknowledge が呼び出される前にセッションがクラッシュした場合、引き継ぎは TTL の期限まで保持され、次回のセッションで handoff_list を呼び出したときに再び表示されます。
既存のコンテキストのインポート
Claude Code の組み込みファイルベースメモリ(~/.claude/projects/<name>/memory/)を使用している場合、特別なツールを使わずに、そのコンテキストを ContextBridge に移行できます。次のように依頼してください。
「メモリファイルを確認し、関連するエントリを
memory_batch_writeを使って context-bridge に追加してください。」
Claude Code は独自のメモリインデックスを読み込み、エントリを順に確認して、memory_batch_write を呼び出し、ContextBridge に保存します。保存されたエントリは意味検索が可能になり、接続されているすべてのクライアントからすぐに参照できるようになります。
依頼の範囲を指定することもできます。「project:my-repo タグが付いたエントリだけをインポートしてください」、または 「メモリファイル内のすべてを追加してください」 と依頼できます。
インポートが完了したら、2つの保存先を管理し続ける必要がないよう、元のファイルベースのエントリを削除できます。ContextBridge が唯一の信頼できる情報源となり、Claude Code、Claude Desktop、およびその他の接続されたクライアント間で共有されます。
CLI リファレンス
すべての機能は context-bridge コマンドで操作します。任意のコマンドラインから実行できます(サービスのインストール/アンインストール/設定変更には管理者権限の PowerShell が必要です)。
サービス管理
context-bridge service install # Download model, register service, start it
context-bridge service start # Start the service (no-op if already running)
context-bridge service stop # Stop the service gracefully
context-bridge service status # Show current status
context-bridge service uninstall # Stop and unregister (preserves memories.db)
モデル管理
context-bridge model download # Download embedding model (~22 MB) from Hugging Face
context-bridge model download --yes # Skip confirmation, force re-download
構成
context-bridge config get port # Show current HTTP port (default: 5290)
context-bridge config set port 8000 # Change HTTP port (requires service restart)
構成は %ProgramData%\ContextBridge\appsettings.json に保存されます。変更は、次回のサービス起動時に反映されます。
クライアント構成
context-bridge configure # Auto-configure all installed clients
このコマンドは次の処理を行います。
- インストール済みの AI クライアント(Claude Code、Claude Desktop、Cline、VS Code)を検出します
- 各クライアントの MCP サーバー構成を書き込みます
- Claude Code の場合、使用ガイドラインを
~/.claude/CLAUDE.mdに挿入します - 構成したクライアントを表示します
出力例:
Claude Code configured (HTTP transport)
Claude Desktop configured (stdio transport)
Cline configured (HTTP transport)
VS Code Chat Agents configured (HTTP transport)
Configured 4 client(s). Restart them to pick up changes.
次の場合に、もう一度実行してください。
- 新しい AI クライアントをインストールした後
- サービスポートを変更した後(
config set port) - ContextBridge 自体を更新した後
セキュリティ
セキュリティモデル: Kestrel は 127.0.0.1(ローカルホストのみ)に限定してバインドします。認証も TLS もありません。
設計上の理由: ローカルホストへのバインドがセキュリティ境界となります。127.0.0.1 上の通信を傍受できる十分な権限を持つプロセスは、追加の認証がなくても、すでにマシンに広範なアクセスが可能です。
機密データ: %ProgramData%\ContextBridge\memories.db には平文のメモリ内容が含まれているため、機密情報として扱ってください。メモリに保存された認証情報や API キーは、ローカルプロセスから読み取り可能と考えてください。それに応じて、バックアップを安全に保管してください。
ソースからのビルド
ContextBridge を変更、テスト、またはローカルで実行したい開発者向けです。
前提条件
- .NET 10 SDK —
dotnetCLI とランタイムを提供します - Windows 10 / Windows 11
- 管理者権限の PowerShell — Windows サービスとしてインストールする場合に必要です
- Git
クローンとビルド
git clone https://github.com/ThunderEagle/context-bridge.git
cd context-bridge
dotnet build
ビルド時間は初回が30~60秒で、2回目以降は短縮されます。プロジェクトのポリシーにより、警告はエラーとして扱われます。
テストの実行
dotnet test
すべての xUnit 統合テストを実行します(約2~5分)。
- ベクトル検索の精度検証
- 再起動後のメモリ永続性
- すべての MCP ツールの実装
- スキーマのマイグレーション
- SQLite と sqlite-vec の統合
sqlite-vec はファイルベースの接続を必要とするため、テストではインメモリではなく、実際の一時ファイル SQLite データベースを使用します。
ローカルでの実行(コンソールモード)
Windows サービスとしてインストールせずにサービスをテストするには、次のようにします。
dotnet run --project src/ContextBridge.Service
HTTP MCP サーバーをフォアグラウンドで起動します。
- バインド先:
http://127.0.0.1:5290(ローカルホストのみ) - ストレージ:
%LOCALAPPDATA%\ContextBridge\memories.db(ユーザーの一時ディレクトリ) - ログ: コンソール出力に起動、リクエストのトレース、エラーが表示されます
Ctrl+C を押すまでサービスは実行されます。起動時間の目安は5~10秒です(初回は ONNX モデルの読み込みと JIT コンパイルが行われます。2回目以降の起動は短縮されます)。
Windows サービスとしてインストールする(ソースから)
プロジェクトを発行し、発行されたバイナリからインストールします。
dotnet publish -c Release -o ./publish
./publish/ContextBridge.Service.exe service install
重要: 管理者権限で PowerShell を実行してください。これにより、リリース版の実行ファイルと同じく、自動起動が有効な Windows サービスとして ContextBridge が登録されます。
サービスの実行中にプロジェクトを再ビルドする場合に発生するファイルロックの問題を避けるため、別のディレクトリに発行してください。
アンインストール:
./publish/ContextBridge.Service.exe service uninstall
ロードマップ
v1(現在) — Windows サービス、プロセス内での埋め込み(all-MiniLM-L6-v2)、SQLite ベクトルストレージ、Claude Code と Claude Desktop のサポート。
v2 — サードパーティ製エディターのサポート(Cursor、Windsurf)、ウェブダッシュボード、設定可能な埋め込みプロバイダー。
v3 — クロスプラットフォーム対応(macOS、Linux)、クライアントエコシステムの拡大。
技術スタック
コントリビューターやアーキテクチャの詳細に関心のある方向けです。
| 懸念事項 | 技術 | 理由 |
|---|---|---|
| ランタイム | .NET 10 Worker Service (Microsoft.NET.Sdk.Web) | Windows サービスとの統合、シンプルな配布、外部ランタイム不要 |
| 埋め込み | ONNX Runtime + all-MiniLM-L6-v2 INT8 | 高速、同梱、384 次元ベクトル、約 22 MB のモデル、プロセス内で実行 |
| ベクトル検索 | sqlite-vec 拡張機能 | SQLite でネイティブなベクトル操作が可能、単一ファイルでのストレージ、外部 DB 不要 |
| データアクセス | Dapper + 生 SQL | Sqlite-vec では生 SQL が必要です。Dapper がオブジェクトのマッピングを処理します |
| AI 抽象化 | Microsoft.Extensions.AI | .NET 向けの標準 AI ライブラリ |
| CLI | System.CommandLine | 組み込みの CLI 解析、最小限の依存関係 |
| MCP トランスポート | ストリーミング可能な HTTP(ModelContextProtocol SDK) | 共有サービス、複数クライアントの同時利用、シンプルな async/await モデル |
外部依存関係なし: コアドメインのロジックは C# 標準ライブラリのみに依存します。インフラストラクチャと CLI では、Microsoft パッケージと MCP SDK が追加されます。
設計の詳しい根拠については、docs/DESIGN.md と docs/adr/(アーキテクチャ決定記録)をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。