From 0ee1d1c63dedaf771d3298b0c89909cdaa98f0a1 Mon Sep 17 00:00:00 2001 From: Kirill Zhukov Date: Sun, 28 Dec 2025 00:19:18 -0800 Subject: [PATCH] Add SSE server type support for MCP configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Sse variant to McpServerType enum alongside existing Http variant - Support "type": "sse" in MCP server configurations (used by JetBrains MCP) - Add tests for SSE server type and mixed HTTP/SSE configurations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/operations/mcp_reader.rs | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/operations/mcp_reader.rs b/src/operations/mcp_reader.rs index 9ed5bd3..c8c540a 100644 --- a/src/operations/mcp_reader.rs +++ b/src/operations/mcp_reader.rs @@ -11,6 +11,7 @@ use std::path::Path; #[serde(rename_all = "lowercase")] pub enum McpServerType { Http, + Sse, } #[derive(Debug, Deserialize, Serialize)] @@ -351,4 +352,49 @@ mod tests { let result = read_mcp_config(temp_dir.path()); assert!(result.is_err()); } + + #[test] + fn test_read_mcp_config_sse_server() { + let temp_dir = TempDir::new().unwrap(); + let sse_config = r#"{ + "mcpServers": { + "jetbrains": { + "type": "sse", + "url": "http://localhost:64342/sse" + } + } +}"#; + create_file(temp_dir.path(), "ai-rules/mcp.json", sse_config); + + let result = read_mcp_config(temp_dir.path()).unwrap(); + assert!(result.is_some()); + let content = result.unwrap(); + assert!(content.contains("jetbrains")); + assert!(content.contains("sse")); + assert!(content.contains("http://localhost:64342/sse")); + } + + #[test] + fn test_read_mcp_config_mixed_http_and_sse() { + let temp_dir = TempDir::new().unwrap(); + let mixed_config = r#"{ + "mcpServers": { + "remote-http": { + "type": "http", + "url": "https://remote.example.com/mcp" + }, + "local-sse": { + "type": "sse", + "url": "http://localhost:64342/sse" + } + } +}"#; + create_file(temp_dir.path(), "ai-rules/mcp.json", mixed_config); + + let result = read_mcp_config(temp_dir.path()).unwrap(); + assert!(result.is_some()); + let content = result.unwrap(); + assert!(content.contains("remote-http")); + assert!(content.contains("local-sse")); + } }