From d24acf583d932130ed1cbeae40aecc0f684546fb Mon Sep 17 00:00:00 2001 From: Kyle Rockman Date: Tue, 15 Apr 2025 13:00:30 -0500 Subject: [PATCH] =?UTF-8?q?Experiment=20to=20add=20a=20=E2=80=9Cmutation?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cmd/mcp.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/cmd/mcp.go b/src/cmd/mcp.go index eee3fece..3eaa3eef 100644 --- a/src/cmd/mcp.go +++ b/src/cmd/mcp.go @@ -4,11 +4,18 @@ import ( "encoding/json" mcp_golang "github.com/metoro-io/mcp-golang" "github.com/metoro-io/mcp-golang/transport/stdio" + ol "github.com/opslevel/opslevel-go/v2024" "github.com/spf13/cobra" ) type NullArguments struct{} +type InviteUserArgument struct { + Email string `jsonSchema:"required,description=The email address of the user to invite"` + Name string `jsonSchema:"required,description=The name of the user to invite"` + Role ol.UserRole `jsonSchema:"description=The role of the user to invite must be one of [admin, standards_admin, team_member, user] (default: user)"` +} + type LightweightComponent struct { Id string `json:"id"` Name string `json:"name"` @@ -134,6 +141,25 @@ var mcpCmd = &cobra.Command{ panic(err) } + // Invite User + if err := server.RegisterTool("invite-user", "Invite a user to your opslevel account", func(args InviteUserArgument) (*mcp_golang.ToolResponse, error) { + client := getClientGQL() + resp, err := client.InviteUser(args.Email, ol.UserInput{ + Name: &args.Name, + Role: &args.Role, + }, false) + if err != nil { + return nil, err + } + data, err := json.Marshal(resp) + if err != nil { + return nil, err + } + return mcp_golang.NewToolResponse(mcp_golang.NewTextContent(string(data))), nil + }); err != nil { + panic(err) + } + if err := server.Serve(); err != nil { panic(err) }