@楽曲作りまくりおじさん 楽曲作りまくりおじさん authored 6 days ago
.github Add MCP server with llama.cpp integration and docs 8 days ago
.vscode chore: migrate to Tauri/Rust backend with SeaORM and add unit/integration tests 7 days ago
document chore: comprehensive project restructuring and cleanup 6 days ago
resources/ icons chore: comprehensive project restructuring and cleanup 6 days ago
scripts feat: automate .env creation during setup for zero-config onboarding 6 days ago
src chore: comprehensive project restructuring and cleanup 6 days ago
test chore: comprehensive project restructuring and cleanup 6 days ago
.env.example style: tidy project root and simplify onboarding commands 6 days ago
.gitignore chore: comprehensive project restructuring and cleanup 6 days ago
README.md docs: expand architecture diagram and documentation references in README 6 days ago
bun.lock chore: comprehensive project restructuring and cleanup 6 days ago
jsconfig.json Add MCP server with llama.cpp integration and docs 8 days ago
launch.cmd chore: migrate to Tauri/Rust backend with SeaORM and add unit/integration tests 7 days ago
package-lock.json chore: comprehensive project restructuring and cleanup 6 days ago
package.json feat: automate .env creation during setup for zero-config onboarding 6 days ago
README.md

🦀 SQLite Vector MCP Server (Tauri 2 Edition)

SQLite と Rust で構築された、ローカル向けベクトル検索サーバー

Tauri 2
Rust
Gemma 3

📝 イントロダクション

Model Context Protocol (MCP) に準拠した、ローカル実行用のベクトル検索サーバーです。以前の設計から Tauri v2 および Rust をベースにした構成に整理しました。

Gemma 3 300M Embedding モデルや llama-server をサイドカー(外部プロセス)として利用することで、外部ネットワークに依存せず、ローカル環境のみでテキストのベクトル化と検索を行うことができます。


✨ 主な機能

1. Tauri v2 + Rust による軽量な基盤

  • バックエンドを Rust で構築しており、OS 標準の WebView を利用するため、アプリケーションの実行サイズとメモリ使用量を低減しています。
  • システムトレイに常駐し、バックグラウンドで動作し続けることが可能です。

2. SQLite + sqlite-vec 拡張による統合データ探索

  • リレーショナルデータとベクトルデータを一つの SQLite ファイルで管理できます。
  • sqlite-vec を利用した高速なベクトル近傍検索(MATCH 演算子)に対応しています。

3. MCP (Model Context Protocol) 準拠

  • SSE (Server-Sent Events) をベースにした MCP プロトコルを実装しており、Claude Desktop などの外部エージェントからツールとして呼び出すことができます。

4. Sidecar 方式による内蔵 LLM サーバー

  • llama.cppllama-server をアプリケーション内に内蔵(Sidecar)しています。
  • 外部 API に依存せず、ローカル環境のみでテキストのベクトル変換(Embedding)や文章生成(Completion)を行えます。

5. 自動化されたデータ管理

  • SeaORM を採用し、データベーススキーマの型安全な操作を実現しています。
  • created_atupdated_at の自動付与、トリガーによる更新日時の管理、WAL モードの有効化などを内部で自動処理します。

6. 運用・診断機能

  • tauri-plugin-log を利用したログ記録(標準出力、および OS 標準のログディレクトリへの出力)。
  • ログファイルのサイズローテーション(10MB × 5世代)に対応しています。

7. 簡略化された開発環境構築

  • bun setup を実行するだけで、必要なサイドカーバイナリや LLM モデルを自動的に収集・配置します。
  • 環境変数を .env ファイルで柔軟にカスタマイズ可能です。

📁 ディレクトリ構成

プロジェクトの役割に応じて、以下のようにディレクトリを整理しています。

.
├── bin/          # 外部バイナリ (llama-server等)
├── data/         # データベースファイル (vector.db)
├── document/     # 仕様・設計ドキュメント
├── journals/     # 開発記録
├── logs/         # 開発用ログ
├── resources/    # アイコン等のアセット
├── scripts/      # 各種ユーティリティ
├── src/
│   ├── backend/  # Rust / Tauri バックエンド
│   └── frontend/ # Webview 用 UI
├── target/       # ビルド成果物
└── test/         # テストコード

🏗️ システム構造

本システムは、高い分離性と連携性を両立したアーキテクチャを採用しています。詳細な設計については document/architecture.md を参照してください。

graph TD
    subgraph "Frontend Layer (WebView2)"
        UI["Status UI (JS/HTML)"]
    end
    
    subgraph "Tauri Backend Layer (Rust)"
        Axum["MCP Server (SSE/JSON-RPC)"]
        Tray["System Tray Manager"]
        Sidecar["Sidecar Manager (tokio::process)"]
        ORM["SeaORM Layer"]
        Llama["Llama API Client (reqwest)"]
    end
    
    subgraph "External Process Layer"
        LS["llama-server.exe (Sidecar)"]
    end
    
    subgraph "Data Layer"
        DB[("SQLite + sqlite-vec")]
        Model["Gemma 3 300M (GGUF)"]
    end
    
    UI <-->|Tauri Commands| Tray
    Axum <--> ORM
    ORM <--> DB
    Llama <-->|HTTP/JSON| LS
    Sidecar -->|Process Control| LS
    LS -->|Memory Map| Model

🚀 クイックスタート

1. セットアップ

プロジェクトの実行に必要なアセットを一括で準備します。環境構築の詳細は document/development_guide.md に記載されています。

bun install
bun setup

bun setup の実行内容:

  • bin/: llama-server と依存 DLL をダウンロード
  • models/: ベクトル生成用モデルをダウンロード

2. 実行

bun dev

または、launch.cmd を実行しても起動できます。


🛠️ MCP ツール

利用可能なツールとプロトコルの詳細は document/mcp_specification.md を参照してください。

ツール名 用途
add_item_text 文書の追加とベクトル化
search_text 文書の類似検索
add_item ベクトル指定での追加
search_vector ベクトル検索
llm_generate テキスト生成

📘 詳細ドキュメント

document/ フォルダには、システムの理解を深めるための詳細な資料を整備しています。


📜 ライセンス

ISC License.