feat(mcp): add SSE (Server-Sent Events) transport type support
Add comprehensive support for SSE transport type to MCP server configuration,
enabling real-time streaming connections alongside existing stdio and http types.
Backend Changes:
- Add SSE type validation in mcp.rs validate_server_spec()
- Extend Codex TOML import/export to handle SSE servers
- Update claude_mcp.rs legacy API for backward compatibility
- Unify http/sse handling in json_server_to_toml_table()
Frontend Changes:
- Extend McpServerSpec type definition to include "sse"
- Add SSE radio button to configuration wizard UI
- Update wizard form logic to handle SSE url and headers
- Add SSE validation in McpFormModal submission
Validation & Error Handling:
- Add SSE support in useMcpValidation hook (TOML/JSON)
- Extend tomlUtils normalizeServerConfig for SSE parsing
- Update Zod schemas (common.ts, mcp.ts) with SSE enum
- Add SSE error message mapping in errorUtils
Internationalization:
- Add "typeSse" translations (zh: "sse", en: "sse")
Tests:
- Add SSE validation test cases in useMcpValidation.test.tsx
SSE Configuration Format:
{
"type": "sse",
"url": "https://api.example.com/sse",
"headers": { "Authorization": "Bearer token" }
}
This commit is contained in:
@@ -87,6 +87,15 @@ describe("useMcpValidation", () => {
|
||||
expect(validateTomlConfig("foo")).toBe("mcp.wizard.urlRequired");
|
||||
});
|
||||
|
||||
it("returns url required when sse server missing url", () => {
|
||||
tomlToMcpServerMock.mockReturnValue({
|
||||
type: "sse",
|
||||
url: "",
|
||||
});
|
||||
const { validateTomlConfig } = getHookResult();
|
||||
expect(validateTomlConfig("foo")).toBe("mcp.wizard.urlRequired");
|
||||
});
|
||||
|
||||
it("surface tomlToMcpServer errors via formatter", () => {
|
||||
tomlToMcpServerMock.mockImplementation(() => {
|
||||
throw new Error("normalize failed");
|
||||
@@ -128,6 +137,11 @@ describe("useMcpValidation", () => {
|
||||
expect(validateJsonConfig('{"type":"http","url":""}')).toBe("mcp.wizard.urlRequired");
|
||||
});
|
||||
|
||||
it("requires url for sse type", () => {
|
||||
const { validateJsonConfig } = getHookResult();
|
||||
expect(validateJsonConfig('{"type":"sse","url":""}')).toBe("mcp.wizard.urlRequired");
|
||||
});
|
||||
|
||||
it("returns empty string when json config valid", () => {
|
||||
const { validateJsonConfig } = getHookResult();
|
||||
expect(
|
||||
@@ -142,4 +156,3 @@ describe("useMcpValidation", () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user