Skip to content

Commit 6c24fb3

Browse files
authored
Merge pull request #17 from StacklokLabs/fix_transport_mode
fix: set env var and values for mcp transport according to standards
2 parents 534f445 + f10a86c commit 6c24fb3

File tree

2 files changed

+33
-7
lines changed

2 files changed

+33
-7
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ The server can be configured using environment variables:
6464
- Must be a valid integer between 0 and 65535
6565
- If invalid or not set, the server will use port 8080
6666

67-
- `MCP_TRANSPORT_MODE`: The transport mode for the server (default: `sse`)
68-
- Supported values: `sse`, `stream`
67+
- `MCP_TRANSPORT`: The transport mode for the server (default: `sse`)
68+
- Supported values: `sse`, `http-stream`
6969
- If invalid or not set, the server will use SSE transport mode
7070

7171
Example:

cmd/server/main.go

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33

44
import (
55
"flag"
6+
"fmt"
67
"log"
78
"os"
89
"os/signal"
@@ -14,6 +15,30 @@ import (
1415
"github.com/StacklokLabs/osv-mcp/pkg/osv"
1516
)
1617

18+
// TransportMode defines the type for transport modes used by the MCP server.
19+
type TransportMode string
20+
21+
const (
22+
// TransportSSE represents the Server-Sent Events transport mode.
23+
TransportSSE TransportMode = "sse"
24+
// TransportHTTPStream represents the HTTP streaming transport mode.
25+
TransportHTTPStream TransportMode = "http-stream"
26+
)
27+
28+
func getTransportMode() (TransportMode, error) {
29+
mode := strings.ToLower(strings.TrimSpace(os.Getenv("MCP_TRANSPORT")))
30+
if mode == "" {
31+
return TransportSSE, nil // default
32+
}
33+
34+
switch TransportMode(mode) {
35+
case TransportSSE, TransportHTTPStream:
36+
return TransportMode(mode), nil
37+
default:
38+
return "", fmt.Errorf("invalid MCP_TRANSPORT: %q (allowed: sse, http-stream)", mode)
39+
}
40+
}
41+
1742
// getMCPServerPort returns the port number from MCP_PORT environment variable.
1843
// If the environment variable is not set or contains an invalid value,
1944
// it returns the default port 8080.
@@ -40,9 +65,10 @@ func main() {
4065
// Parse command-line flags
4166
addr := flag.String("addr", ":"+port, "Address to listen on")
4267
flag.Parse()
43-
mode := strings.ToLower(strings.TrimSpace(os.Getenv("MCP_TRANSPORT_MODE")))
44-
if mode == "" {
45-
mode = "sse" // Default to "sse" if MCP_TRANSPORT_MODE is not set
68+
69+
mode, err := getTransportMode()
70+
if err != nil {
71+
log.Fatalf("Error getting transport mode: %v", err)
4672
}
4773

4874
// Create OSV client
@@ -61,9 +87,9 @@ func main() {
6187
errChan := make(chan error, 1)
6288
go func() {
6389
switch mode {
64-
case "stream":
90+
case TransportHTTPStream:
6591
errChan <- mcpServer.ServeHTTPStream(*addr)
66-
default:
92+
case TransportSSE:
6793
errChan <- mcpServer.ServeSSE(*addr)
6894
}
6995
}()

0 commit comments

Comments
 (0)