MCPcopy Create free account
hub / github.com/VersusControl/devops-ai-guidelines / main

Function main

02-mcp-for-devops/code/03/cmd/server/main.go:16–69  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

14)
15
16func main() {
17 // Load configuration
18 cfg, err := config.Load()
19 if err != nil {
20 log.Fatalf("Failed to load config: %v", err)
21 }
22
23 // Initialize logger
24 logger := logging.NewLogger("info", "text")
25
26 // Initialize Kubernetes client
27 k8sClient, err := k8s.NewClient(cfg.K8s.ConfigPath, logger.Logger)
28 if err != nil {
29 logger.Fatalf("Failed to create Kubernetes client: %v", err)
30 }
31
32 // Test Kubernetes connection
33 ctx := context.Background()
34 if err := k8sClient.HealthCheck(ctx); err != nil {
35 logger.Fatalf("Kubernetes health check failed: %v", err)
36 }
37 logger.Info("Kubernetes connection established successfully")
38
39 // Create MCP server
40 mcpServer := mcp.NewServer(cfg, k8sClient)
41
42 // Setup graceful shutdown
43 ctx, cancel := context.WithCancel(context.Background())
44 defer cancel()
45
46 // Handle shutdown signals
47 sigChan := make(chan os.Signal, 1)
48 signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
49
50 // Start server in a goroutine
51 serverErr := make(chan error, 1)
52 go func() {
53 if err := mcpServer.Start(ctx); err != nil {
54 serverErr <- err
55 }
56 }()
57
58 // Wait for shutdown signal or server error
59 select {
60 case sig := <-sigChan:
61 logger.Infof("Received signal %v, shutting down gracefully...", sig)
62 cancel()
63 case err := <-serverErr:
64 logger.Errorf("Server error: %v", err)
65 cancel()
66 }
67
68 logger.Info("Server shutdown complete")
69}

Callers

nothing calls this directly

Calls 2

HealthCheckMethod · 0.95
StartMethod · 0.95

Tested by

no test coverage detected