mirror of
https://github.com/openshift/openshift-mcp-server.git
synced 2025-10-17 14:27:48 +03:00
50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
package mcp
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/mark3labs/mcp-go/mcp"
|
|
"github.com/mark3labs/mcp-go/server"
|
|
|
|
"github.com/containers/kubernetes-mcp-server/pkg/output"
|
|
)
|
|
|
|
func (s *Server) initEvents() []server.ServerTool {
|
|
return []server.ServerTool{
|
|
{Tool: mcp.NewTool("events_list",
|
|
mcp.WithDescription("List all the Kubernetes events in the current cluster from all namespaces"),
|
|
mcp.WithString("namespace",
|
|
mcp.Description("Optional Namespace to retrieve the events from. If not provided, will list events from all namespaces")),
|
|
// Tool annotations
|
|
mcp.WithTitleAnnotation("Events: List"),
|
|
mcp.WithReadOnlyHintAnnotation(true),
|
|
mcp.WithDestructiveHintAnnotation(false),
|
|
mcp.WithOpenWorldHintAnnotation(true),
|
|
), Handler: s.eventsList},
|
|
}
|
|
}
|
|
|
|
func (s *Server) eventsList(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
namespace := ctr.GetArguments()["namespace"]
|
|
if namespace == nil {
|
|
namespace = ""
|
|
}
|
|
derived, err := s.k.Derived(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
eventMap, err := derived.EventsList(ctx, namespace.(string))
|
|
if err != nil {
|
|
return NewTextResult("", fmt.Errorf("failed to list events in all namespaces: %v", err)), nil
|
|
}
|
|
if len(eventMap) == 0 {
|
|
return NewTextResult("No events found", nil), nil
|
|
}
|
|
yamlEvents, err := output.MarshalYaml(eventMap)
|
|
if err != nil {
|
|
err = fmt.Errorf("failed to list events in all namespaces: %v", err)
|
|
}
|
|
return NewTextResult(fmt.Sprintf("The following events (YAML format) were found:\n%s", yamlEvents), err), nil
|
|
}
|