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 0f1d49e..c33a727 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" @@ -33,6 +33,7 @@ - **不一致の修正**: 初期移行時、`JapaneseTokenizer::new()` の戻り値(Result)の処理漏れによりビルドエラーが発生したが、`unwrap()` を追加して修正した。 - **ハンドラの復旧**: リファクタリング時に誤って削除された `initialize` ハンドラを `src/backend/src/mcp/mod.rs` に復旧し、LM Studio 等の外部クライアントからの初期化が失敗する問題を解決した。 +- **プロトコル整合性の修正**: MCP 仕様に従い、セッション ID のパラメータ名を `session_id` から `sessionId` (camelCase) に変更。これにより、SSE 経由のレスポンスが正しくストリームに送信されるよう改善した。 - **インポートの欠落**: 各サブモジュールで必要な `log`, `serde_json`, `ndarray`, `sqlx` などのインポートを補完した。 ## 作業詳細 diff --git a/src/backend/src/mcp/handlers.rs b/src/backend/src/mcp/handlers.rs index b3ada67..2268974 100644 --- a/src/backend/src/mcp/handlers.rs +++ b/src/backend/src/mcp/handlers.rs @@ -31,6 +31,7 @@ #[allow(dead_code)] #[derive(Deserialize)] pub struct SseQuery { + #[serde(rename = "sessionId")] pub session_id: Option, } @@ -48,7 +49,7 @@ state.sessions.write().await.insert(session_id.clone(), tx); // Initial endpoint event - let endpoint_url = format!("/messages?session_id={}", session_id); + let endpoint_url = format!("/messages?sessionId={}", session_id); let endpoint_event = Event::default().event("endpoint").data(endpoint_url); let session_id_for_close = session_id.clone();