diff --git "a/journals/20260223-0023-MCP\343\203\242\343\202\270\343\203\245\343\203\274\343\203\253\343\201\256\343\203\252\343\203\225\343\202\241\343\202\257\343\202\277\343\203\252\343\203\263\343\202\260\343\201\250\346\251\237\350\203\275\345\210\206\345\211\262.md" "b/journals/20260223-0023-MCP\343\203\242\343\202\270\343\203\245\343\203\274\343\203\253\343\201\256\343\203\252\343\203\225\343\202\241\343\202\257\343\202\277\343\203\252\343\203\263\343\202\260\343\201\250\346\251\237\350\203\275\345\210\206\345\211\262.md" index 764969e..0f1d49e 100644 --- "a/journals/20260223-0023-MCP\343\203\242\343\202\270\343\203\245\343\203\274\343\203\253\343\201\256\343\203\252\343\203\225\343\202\241\343\202\257\343\202\277\343\203\252\343\203\263\343\202\260\343\201\250\346\251\237\350\203\275\345\210\206\345\211\262.md" +++ "b/journals/20260223-0023-MCP\343\203\242\343\202\270\343\203\245\343\203\274\343\203\253\343\201\256\343\203\252\343\203\225\343\202\241\343\202\257\343\202\277\343\203\252\343\203\263\343\202\260\343\201\250\346\251\237\350\203\275\345\210\206\345\211\262.md" @@ -32,6 +32,7 @@ ### 3. 指摘事項とその対応 - **不一致の修正**: 初期移行時、`JapaneseTokenizer::new()` の戻り値(Result)の処理漏れによりビルドエラーが発生したが、`unwrap()` を追加して修正した。 +- **ハンドラの復旧**: リファクタリング時に誤って削除された `initialize` ハンドラを `src/backend/src/mcp/mod.rs` に復旧し、LM Studio 等の外部クライアントからの初期化が失敗する問題を解決した。 - **インポートの欠落**: 各サブモジュールで必要な `log`, `serde_json`, `ndarray`, `sqlx` などのインポートを補完した。 ## 作業詳細 diff --git a/src/backend/src/mcp/mod.rs b/src/backend/src/mcp/mod.rs index 3b1fd36..4b19171 100644 --- a/src/backend/src/mcp/mod.rs +++ b/src/backend/src/mcp/mod.rs @@ -92,6 +92,26 @@ log::info!("MCP Request: {} (Actual: {})", method, actual_method); let result = match method { + "initialize" => { + let client_version = req.params.as_ref() + .and_then(|p| p.as_object()) + .and_then(|p| p.get("protocolVersion")) + .and_then(|v| v.as_str()) + .unwrap_or("2024-11-05"); + + log::info!("MCP Handshake: Client requested protocol version {}", client_version); + + Some(serde_json::json!({ + "protocolVersion": client_version, + "capabilities": { + "tools": { "listChanged": false }, + "resources": { "listChanged": false, "subscribe": false }, + "prompts": { "listChanged": false }, + "logging": {} + }, + "serverInfo": { "name": "TelosDB", "version": "0.3.0" } + })) + }, "notifications/initialized" => { log::info!("MCP Client Initialized"); None