src/backend/src/mcp.rs が 1100 行を超え、ネストも 13 階層に達しており、新しく導入したコード品質基準(600行以内 / 7階層以内)を大幅に超過していたため。
mcp.rs を src/backend/src/mcp/ ディレクトリ配下の複数のモジュールに分割する計画を立てた。
以下の構成でファイルを新規作成し、コードを移譲した:
src/backend/src/mcp/types.rs: AppState や JSON-RPC 構造体の定義。src/backend/src/mcp/handlers.rs: SSE やステータス確認用の axum ハンドラ。src/backend/src/mcp/system.rs: LSA トレーニングや HNSW 同期などの基盤ロジック。src/backend/src/mcp/tools/mod.rs: ツールのディスパッチャ。src/backend/src/mcp/tools/items.rs: add, update, delete, get の実装。src/backend/src/mcp/tools/search.rs: search_text のハイブリッド検索実装。src/backend/src/mcp/tools/system.rs: lsa_retrain ツール。src/backend/src/mcp/mod.rs: メインのメッセージハンドラとサーバー起動処理。JapaneseTokenizer::new() の戻り値(Result)の処理漏れによりビルドエラーが発生したが、unwrap() を追加して修正した。initialize ハンドラを src/backend/src/mcp/mod.rs に復旧し、LM Studio 等の外部クライアントからの初期化が失敗する問題を解決した。session_id から sessionId (camelCase) に変更。これにより、SSE 経由のレスポンスが正しくストリームに送信されるよう改善した。log, serde_json, ndarray, sqlx などのインポートを補完した。src/backend/src/mcp/ ディレクトリを作成。src/backend/src/mcp.rs を削除し、lib.rs からの参照が mcp/mod.rs に向くように調整。cargo check によるビルド確認を実施。count_loc.cjs および nesting_depth.cjs で品質基準の遵守を確認。items.rs)となり、基準の 600 行をクリア。graph TD
A[lib.rs] --> B[mcp/mod.rs]
B --> C[mcp/handlers.rs]
B --> D[mcp/tools/mod.rs]
B --> E[mcp/system.rs]
D --> F[mcp/tools/items.rs]
D --> G[mcp/tools/search.rs]
D --> H[mcp/tools/system.rs]
F -.-> I[AppState / types.rs]
G -.-> I
H -.-> I