Skip to content

Commit 470b19d

Browse files
authored
Merge branch 'main' into feat-cli-server-request-configs
2 parents 29947ea + 6d4a664 commit 470b19d

File tree

2 files changed

+29
-21
lines changed

2 files changed

+29
-21
lines changed

cli/scripts/cli-tests.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,7 @@ async function runTests() {
858858
await runBasicTest(
859859
"http_transport_with_explicit_flag",
860860
null,
861-
"http://127.0.0.1:3001",
861+
"http://127.0.0.1:3001/mcp",
862862
"--transport",
863863
"http",
864864
"--cli",
@@ -890,6 +890,26 @@ async function runTests() {
890890
"tools/list",
891891
);
892892

893+
// Test 29: HTTP transport without URL (should fail)
894+
await runErrorTest(
895+
"http_transport_without_url",
896+
"--transport",
897+
"http",
898+
"--cli",
899+
"--method",
900+
"tools/list",
901+
);
902+
903+
// Test 30: SSE transport without URL (should fail)
904+
await runErrorTest(
905+
"sse_transport_without_url",
906+
"--transport",
907+
"sse",
908+
"--cli",
909+
"--method",
910+
"tools/list",
911+
);
912+
893913
// Kill HTTP server
894914
try {
895915
process.kill(-httpServer.pid);

cli/src/transport.ts

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,6 @@ export type TransportOptions = {
1414
url?: string;
1515
};
1616

17-
function createSSETransport(options: TransportOptions): Transport {
18-
const baseUrl = new URL(options.url ?? "");
19-
const sseUrl = baseUrl.pathname.endsWith("/sse")
20-
? baseUrl
21-
: new URL("/sse", baseUrl);
22-
23-
return new SSEClientTransport(sseUrl);
24-
}
25-
26-
function createHTTPTransport(options: TransportOptions): Transport {
27-
const baseUrl = new URL(options.url ?? "");
28-
const mcpUrl = baseUrl.pathname.endsWith("/mcp")
29-
? baseUrl
30-
: new URL("/mcp", baseUrl);
31-
32-
return new StreamableHTTPClientTransport(mcpUrl);
33-
}
34-
3517
function createStdioTransport(options: TransportOptions): Transport {
3618
let args: string[] = [];
3719

@@ -75,12 +57,18 @@ export function createTransport(options: TransportOptions): Transport {
7557
return createStdioTransport(options);
7658
}
7759

60+
// If not STDIO, then it must be either SSE or HTTP.
61+
if (!options.url) {
62+
throw new Error("URL must be provided for SSE or HTTP transport types.");
63+
}
64+
const url = new URL(options.url);
65+
7866
if (transportType === "sse") {
79-
return createSSETransport(options);
67+
return new SSEClientTransport(url);
8068
}
8169

8270
if (transportType === "http") {
83-
return createHTTPTransport(options);
71+
return new StreamableHTTPClientTransport(url);
8472
}
8573

8674
throw new Error(`Unsupported transport type: ${transportType}`);

0 commit comments

Comments
 (0)