コンテンツにスキップ

Context-Hub 概要

要約

Context-Hub は、顧客プロジェクトの文脈(Slack / Backlog / Redmine / Gmail / 議事録)を取り込み、手元の SQLite または PostgreSQL に蓄え、MCP(Model Context Protocol)と REST API の両方で AI に提供する文脈基盤です。Claude Desktop や Claude Code が直接つながり、プロジェクト固有の情報に基づいて回答します。生データ(raw data)を第三者サービスに送らない設計が中核で、pipx install だけで動き出します(Docker 不要・Postgres 不要・API キー不要)。CLI 名は context-hub、PyPI パッケージ名は yohakuforce-context-hub(現行 0.3.0)。


何を解決するか

AI に「このプロジェクトのことを分かったうえで答えてほしい」と思っても、Slack の議論・Backlog/Redmine の課題・議事録は別々の場所に散らばっています。これらを一つの問い合わせ先に集約し、AI から検索・参照できるようにするのが Context-Hub です。

  • 散在する文脈の一元化 — Slack / Backlog / Redmine / Gmail / 議事録・メモを 1 つのローカルストアに集約します。
  • AI からの直接アクセス — MCP ツールと REST API でそのまま AI に渡せます。コピペや手作業の貼り付けは不要です。
  • 取りこぼさない要約 — 議事録は取り込み時にタスクを抽出して永続化するため、読み直すたびに結果がブレません。

MCP ネイティブ

Context-Hub は MCP を一級市民として設計しています。stdio トランスポートで Claude Desktop / Claude Code に直接プラグインでき、search_contextget_issues など 7 種のツールを提供します。HTTP REST API は同じ QueryService を薄くラップしたもう一つの入り口で、MCP と REST は同じビジネスロジックを共有します。

┌─────────────────────────────────────────────────────┐
│                  Context-Hub プロセス                │
│   ┌──────────────┐    ┌──────────────────────────┐  │
│   │  MCP サーバ  │    │     FastAPI REST API      │  │
│   │  (stdio)     │    │  /api/v1/{projects,query} │  │
│   └──────┬───────┘    └───────────┬──────────────┘  │
│          └───────────┬────────────┘                  │
│                      ▼                               │
│               QueryService(共有)                   │
│          VectorStore + FTS + RRF フュージョン        │
│          ┌───────────┴───────────┐                   │
│          ▼                       ▼                   │
│    SQLite (sqlite-vec)    PostgreSQL (pgvector)       │
└─────────────────────────────────────────────────────┘

詳細は REST / MCP API を参照してください。連携先の AI エージェント本体については AI-Project-Manager のデプロイ も合わせてご覧ください。

ハイブリッド検索(FTS + ベクトル / RRF)

検索は 全文検索(FTS5)ベクトル検索(sqlite-vec / pgvector) を組み合わせ、両者の結果を RRF(Reciprocal Rank Fusion) で統合します。キーワード一致と意味的な近さの両方を拾えるため、「正確な単語」でも「言い回しが違う文章」でも引っかかります。

検索方式 強み バックエンド
FTS5(全文検索) 正確なキーワード一致・高速 SQLite FTS5
ベクトル検索 意味的な類似(言い換えに強い) sqlite-vec / pgvector
RRF フュージョン 両者の順位を統合し総合的に最良の結果を返す QueryService 共有層

埋め込みモデルとプロファイル

意味検索の品質は埋め込みモデルに依存します。quickstart プロファイルの既定はハッシュベースの mock 埋め込み(ゼロ依存・意味的な精度なし)で、personal / production では BGE-M3 を使います。詳しくは プロファイル を参照してください。

Windows での自動デグレード

python.org 配布の Windows ビルドは sqlite3 が拡張ロード非対応のため sqlite-vec を読み込めません。その場合 Context-Hub は自動的に FTS-only モードで動作します(取り込み・キーワード検索は動作、ベクトル検索のみ無効)。完全な意味検索が必要なら conda/miniforge の Python か production(PostgreSQL + pgvector)を使ってください。

「raw data を第三者に出さない」設計境界

Context-Hub の中核思想は、取り込んだ生データを外部サービスへ送らないことです。

  • 保存先はローカル — データは手元の SQLite ファイル、または自分で管理する PostgreSQL に保存されます。
  • 議事録 → タスク抽出は on-prem LLM — 会議の生トランスクリプトを外部 API に投げず、LLM_PROVIDER(Ollama / Claude Code 等)で抽出します。抽出結果のみを永続化します。
  • Gmail はラベルベースのオプトイン — 既定クエリ label:context-hub により、自分でタグ付けしたメールだけが取り込まれ、私的なメールはストアに入りません。
  • Admin GUI は localhost 前提/admin は資格情報を読み書きするため、127.0.0.1 バインドでの利用を前提とし、すべてのデータ呼び出しに ADMIN API キーを要求します。

Context-Hub ではないもの(誤解の整理)

  • チャット UI ではありません — 会話は Claude 等の MCP クライアント側で行います。Context-Hub は文脈の保管・提供に徹します。
  • マシン全体の検索エンジンではありません — 取り込んだものしか知りません。
  • バックアップではありません — SQLite を消すと全消失します。data/.env をセットでバックアップしてください。
  • マルチテナント SaaS ではありません — API キーはインスタンス単位。信頼境界ごとに別インスタンスを立てます。

誤って取り込んだときの対処

  1. サーバを停止する
  2. GET /api/v1/projects/{id}/context 等で対象を特定する
  3. SQLite から該当を削除、または rm -rf data/ で全リセットする
  4. Gmail 由来ならラベルを外して再同期し、カーソルを追従させる

状態の在り処

ドキュメント / プロジェクト / ジョブ=./data/context_hub.db、スケジューラ=./data/scheduler.db、Gmail トークン=$GMAIL_TOKEN_FILE、API キー=.env。ログは structlog による構造化 JSON で stdout に出力されます(context-hub serve 2>&1 | jq -R 'fromjson? // .' で整形可)。

次に読む

まずは インストール でセットアップし、プロファイル で用途に合った構成を選び、データ取り込み で各ソースを繋いでください。設定はコマンドではなく 設定GUI(/admin) からも行えます。