@@ -3,16 +3,19 @@ package config
33import (
44 "fmt"
55 "os"
6+ "strconv"
7+ "strings"
68)
79
810type Config struct {
9- APIHost string
10- APIToken string
11- Transport string
12- ListeningHost string
13- ListeningPort string
14- MountPath string
15- LogLevel string
11+ APIHost string
12+ APIToken string
13+ SkipTLSVerification bool
14+ Transport string
15+ ListeningHost string
16+ ListeningPort string
17+ MountPath string
18+ LogLevel string
1619}
1720
1821func (c * Config ) Validate () error {
@@ -27,13 +30,14 @@ func (c *Config) Validate() error {
2730
2831func Load () (* Config , error ) {
2932 cfg := & Config {
30- APIHost : getEnv ("SYSDIG_MCP_API_HOST" , "" ),
31- APIToken : getEnv ("SYSDIG_MCP_API_TOKEN" , "" ),
32- Transport : getEnv ("SYSDIG_MCP_TRANSPORT" , "stdio" ),
33- ListeningHost : getEnv ("SYSDIG_MCP_LISTENING_HOST" , "localhost" ),
34- ListeningPort : getEnv ("SYSDIG_MCP_LISTENING_PORT" , "8080" ),
35- MountPath : getEnv ("SYSDIG_MCP_MOUNT_PATH" , "/sysdig-mcp-server" ),
36- LogLevel : getEnv ("SYSDIG_MCP_LOGLEVEL" , "INFO" ),
33+ APIHost : getEnv ("SYSDIG_MCP_API_HOST" , "" ),
34+ APIToken : getEnv ("SYSDIG_MCP_API_TOKEN" , "" ),
35+ SkipTLSVerification : getEnv ("SYSDIG_MCP_API_SKIP_TLS_VERIFICATION" , false ),
36+ Transport : getEnv ("SYSDIG_MCP_TRANSPORT" , "stdio" ),
37+ ListeningHost : getEnv ("SYSDIG_MCP_LISTENING_HOST" , "localhost" ),
38+ ListeningPort : getEnv ("SYSDIG_MCP_LISTENING_PORT" , "8080" ),
39+ MountPath : getEnv ("SYSDIG_MCP_MOUNT_PATH" , "/sysdig-mcp-server" ),
40+ LogLevel : getEnv ("SYSDIG_MCP_LOGLEVEL" , "INFO" ),
3741 }
3842
3943 if err := cfg .Validate (); err != nil {
@@ -43,9 +47,32 @@ func Load() (*Config, error) {
4347 return cfg , nil
4448}
4549
46- func getEnv (key , fallback string ) string {
47- if value , ok := os .LookupEnv (key ); ok {
48- return value
50+ type envType interface {
51+ ~ string | ~ bool
52+ }
53+
54+ func getEnv [T envType ](key string , fallback T ) T {
55+ value , ok := os .LookupEnv (key )
56+ if ! ok {
57+ return fallback
4958 }
59+
60+ switch any (fallback ).(type ) {
61+ case string :
62+ return any (value ).(T )
63+
64+ case bool :
65+ value = strings .TrimSpace (value )
66+ if value == "" {
67+ return fallback
68+ }
69+
70+ b , err := strconv .ParseBool (value )
71+ if err != nil {
72+ return fallback
73+ }
74+ return any (b ).(T )
75+ }
76+
5077 return fallback
5178}
0 commit comments