mirror of
https://github.com/k8sgpt-ai/k8sgpt.git
synced 2026-07-17 18:30:21 +00:00
TestServe started the server in a goroutine that captured Serve's return value, slept two seconds, then called assert.NoError on it. The test body returned immediately after Shutdown without ever joining that goroutine, so the assertion ran after the test had already been recorded as passed and could never affect its result (a dead assertion). It was also wrong: closing the listener in Shutdown makes Serve return a net.ErrClosed error, not nil. Capture Serve's error over a buffered channel and assert it synchronously in the test body after Shutdown, checking it wraps net.ErrClosed so the check actually runs within the test's lifetime and catches an unexpected Serve failure. Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com> Co-authored-by: Alex Jones <1235925+AlexsJones@users.noreply.github.com>
K8sGPT MCP Server
This directory contains the implementation of the Mission Control Protocol (MCP) server for K8sGPT. The MCP server allows K8sGPT to be integrated with other tools that support the MCP protocol.
Components
mcp.go: The main MCP server implementationserver.go: The HTTP server implementationtools.go: Tool definitions for the MCP server
Features
The MCP server provides the following features:
- Analyze Kubernetes Resources: Analyze Kubernetes resources in a cluster
- Get Cluster Information: Retrieve information about the Kubernetes cluster
Usage
To use the MCP server, you need to:
- Initialize the MCP server with a Kubernetes client
- Start the server
- Connect to the server using an MCP client
Example:
client, err := kubernetes.NewForConfig(config)
if err != nil {
log.Fatalf("Failed to create Kubernetes client: %v", err)
}
mcpServer := server.NewMCPServer(client)
if err := mcpServer.Start(); err != nil {
log.Fatalf("Failed to start MCP server: %v", err)
}
Integration
The MCP server can be integrated with other tools that support the MCP protocol, such as:
- Mission Control
- Other MCP-compatible tools
License
This code is licensed under the Apache License 2.0.