本ドキュメントでは、SQLite Vector MCP Server の内部構造、各コンポーネントの責務、および最新のアーキテクチャに基づいたデータフローについて詳細に解説します。
Tauri v2 への移植に伴い、システムのコアロジックは高性能かつ型安全な Rust 側に集約されました。
src/backend)| モジュール | 責務 | 使用技術 |
|---|---|---|
src/backend/src/lib.rs |
アプリケーションのライフサイクル、Sidecar 起動、システムトレイ制御。 | tauri, tokio |
src/backend/src/mcp.rs |
MCP プロトコル(JSON-RPC / SSE)の実装、ツールハンドリング。 | axum, serde_json |
src/backend/src/db.rs |
データベース接続管理、スキーマ初期化、トリガー設定。 | sqlx, rusqlite |
src/backend/src/entities/ |
データベーステーブルの Rust 構造体マッピング。 | sea-orm |
src/backend/src/llama.rs |
llama-server と整合した HTTP 通信、Embedding/Completion 依頼。 |
reqwest |
llama.cpp プロジェクトの llama-server を外部プロセスとして実行します。
ユーザーへの状態通知(Sidecar の稼働状況、ログ出力のモニタリングなど)を行う軽量な UI です。
add_item_text)sequenceDiagram
participant User as MCP Client
participant Axum as MCP Handler (Axum)
participant Llama as Llama Client
participant Sidecar as llama-server
participant SeaORM as SeaORM / DB
User->>Axum: Call Tool: add_item_text(content)
Axum->>Llama: generate_embedding(content)
Llama->>Sidecar: POST /embedding
Sidecar-->>Llama: [f32; 384]
Llama-->>Axum: Vector Result
Axum->>SeaORM: Transaction: Insert into items & vec_items
SeaORM-->>Axum: Success (ID)
Axum-->>User: JSON Response (ID, Datetime)
データの一貫性と追跡可能性を確保するため、データベースレベルで以下の処理が行われます。
created_at, updated_at に localtime が自動付与。updated_at が現在の時刻に自動更新。tokio ランタイムを活用し、複数の MCP リクエストや Sidecar 管理を非同期で効率的に処理。async/await にネイティブ対応しており、Tauri との相性が抜群。