Skip to content

Commit 28b5dbe

Browse files
committed
convert rest
1 parent 9d1d671 commit 28b5dbe

1 file changed

Lines changed: 105 additions & 108 deletions

File tree

src/cmd/mcp.go

Lines changed: 105 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ var mcpCmd = &cobra.Command{
2626
RunE: func(cmd *cobra.Command, args []string) error {
2727
done := make(chan struct{})
2828

29-
// transport := http.NewHTTPTransport("/mcp")
30-
// transport.WithAddr(":8080")
31-
// server := mcp_golang.NewServer(transport)
3229
s := server.NewMCPServer(
3330
"OpsLevel",
3431
"1.0.0",
@@ -66,111 +63,111 @@ var mcpCmd = &cobra.Command{
6663
}
6764
return mcp.NewToolResultText(string(data)), nil
6865
})
69-
//
70-
//// Register Actions
71-
//if err := server.RegisterTool("actions", "Get all the information about actions the user can run in the opslevel account", func(args NullArguments) (*mcp_golang.ToolResponse, error) {
72-
// client := getClientGQL()
73-
// resp, err := client.ListTriggerDefinitions(nil)
74-
// if err != nil {
75-
// return nil, err
76-
// }
77-
// data, err := json.Marshal(resp.Nodes)
78-
// if err != nil {
79-
// return nil, err
80-
// }
81-
// return mcp_golang.NewToolResponse(mcp_golang.NewTextContent(string(data))), nil
82-
//}); err != nil {
83-
// panic(err)
84-
//}
85-
//
86-
//// Register Filters
87-
//if err := server.RegisterTool("filters", "Get all the rubric filter names and which predicates they have for the opslevel account", func(args NullArguments) (*mcp_golang.ToolResponse, error) {
88-
// client := getClientGQL()
89-
// resp, err := client.ListFilters(nil)
90-
// if err != nil {
91-
// return nil, err
92-
// }
93-
// data, err := json.Marshal(resp.Nodes)
94-
// if err != nil {
95-
// return nil, err
96-
// }
97-
// return mcp_golang.NewToolResponse(mcp_golang.NewTextContent(string(data))), nil
98-
//}); err != nil {
99-
// panic(err)
100-
//}
101-
//
102-
//// Register Components
103-
//if err := server.RegisterTool("components", "Get all the components in the opslevel account. Components are objects in opslevel that represent things like apis, libraries, services, frontends, backends, etc.", func(args NullArguments) (*mcp_golang.ToolResponse, error) {
104-
// client := getClientGQL()
105-
// resp, err := client.ListServices(nil)
106-
// if err != nil {
107-
// return nil, err
108-
// }
109-
// var components []LightweightComponent
110-
// for _, node := range resp.Nodes {
111-
// components = append(components, LightweightComponent{
112-
// Id: string(node.Id),
113-
// Name: node.Name,
114-
// Owner: node.Owner.Alias,
115-
// URL: node.HtmlURL,
116-
// })
117-
// }
118-
// data, err := json.Marshal(components)
119-
// if err != nil {
120-
// return nil, err
121-
// }
122-
// return mcp_golang.NewToolResponse(mcp_golang.NewTextContent(string(data))), nil
123-
//}); err != nil {
124-
// panic(err)
125-
//}
126-
//
127-
//// Register Infra
128-
//if err := server.RegisterTool("infrastructure", "Get all the infrastructure in the opslevel account. Infrastructure are objects in opslevel that represent cloud provider resources like vpc, databases, caches, networks, vms, etc.", func(args NullArguments) (*mcp_golang.ToolResponse, error) {
129-
// client := getClientGQL()
130-
// resp, err := client.ListInfrastructure(nil)
131-
// if err != nil {
132-
// return nil, err
133-
// }
134-
// data, err := json.Marshal(resp.Nodes)
135-
// if err != nil {
136-
// return nil, err
137-
// }
138-
// return mcp_golang.NewToolResponse(mcp_golang.NewTextContent(string(data))), nil
139-
//}); err != nil {
140-
// panic(err)
141-
//}
142-
//
143-
//// Register Domains
144-
//if err := server.RegisterTool("domains", "Get all the domains in the opslevel account. Domains are objects in opslevel that represent a top-level abstraction used to organize and categorize software systems.", func(args NullArguments) (*mcp_golang.ToolResponse, error) {
145-
// client := getClientGQL()
146-
// resp, err := client.ListDomains(nil)
147-
// if err != nil {
148-
// return nil, err
149-
// }
150-
// data, err := json.Marshal(resp.Nodes)
151-
// if err != nil {
152-
// return nil, err
153-
// }
154-
// return mcp_golang.NewToolResponse(mcp_golang.NewTextContent(string(data))), nil
155-
//}); err != nil {
156-
// panic(err)
157-
//}
158-
//
159-
//// Register Systems
160-
//if err := server.RegisterTool("systems", "Get all the systems in the opslevel account. Systems are objects in opslevel that represent a grouping of services or components that act together to serve a business function or process.", func(args NullArguments) (*mcp_golang.ToolResponse, error) {
161-
// client := getClientGQL()
162-
// resp, err := client.ListSystems(nil)
163-
// if err != nil {
164-
// return nil, err
165-
// }
166-
// data, err := json.Marshal(resp.Nodes)
167-
// if err != nil {
168-
// return nil, err
169-
// }
170-
// return mcp_golang.NewToolResponse(mcp_golang.NewTextContent(string(data))), nil
171-
//}); err != nil {
172-
// panic(err)
173-
//}
66+
67+
// Register Actions
68+
s.AddTool(
69+
mcp.NewTool("actions", mcp.WithDescription("Get all the information about actions the user can run in the opslevel account")),
70+
func(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
71+
client := getClientGQL()
72+
resp, err := client.ListTriggerDefinitions(nil)
73+
if err != nil {
74+
return nil, err
75+
}
76+
data, err := json.Marshal(resp.Nodes)
77+
if err != nil {
78+
return nil, err
79+
}
80+
return mcp.NewToolResultText(string(data)), nil
81+
})
82+
83+
// Register Filters
84+
s.AddTool(
85+
mcp.NewTool("filters", mcp.WithDescription("Get all the rubric filter names and which predicates they have for the opslevel account")),
86+
func(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
87+
client := getClientGQL()
88+
resp, err := client.ListFilters(nil)
89+
if err != nil {
90+
return nil, err
91+
}
92+
data, err := json.Marshal(resp.Nodes)
93+
if err != nil {
94+
return nil, err
95+
}
96+
return mcp.NewToolResultText(string(data)), nil
97+
})
98+
99+
// Register Components
100+
s.AddTool(
101+
mcp.NewTool("components", mcp.WithDescription("Get all the components in the opslevel account. Components are objects in opslevel that represent things like apis, libraries, services, frontends, backends, etc.")),
102+
func(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
103+
client := getClientGQL()
104+
resp, err := client.ListServices(nil)
105+
if err != nil {
106+
return nil, err
107+
}
108+
var components []LightweightComponent
109+
for _, node := range resp.Nodes {
110+
components = append(components, LightweightComponent{
111+
Id: string(node.Id),
112+
Name: node.Name,
113+
Owner: node.Owner.Alias,
114+
URL: node.HtmlURL,
115+
})
116+
}
117+
data, err := json.Marshal(components)
118+
if err != nil {
119+
return nil, err
120+
}
121+
return mcp.NewToolResultText(string(data)), nil
122+
})
123+
124+
// Register Infra
125+
s.AddTool(
126+
mcp.NewTool("infrastructure", mcp.WithDescription("Get all the infrastructure in the opslevel account. Infrastructure are objects in opslevel that represent cloud provider resources like vpc, databases, caches, networks, vms, etc.")),
127+
func(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
128+
client := getClientGQL()
129+
resp, err := client.ListInfrastructure(nil)
130+
if err != nil {
131+
return nil, err
132+
}
133+
data, err := json.Marshal(resp.Nodes)
134+
if err != nil {
135+
return nil, err
136+
}
137+
return mcp.NewToolResultText(string(data)), nil
138+
})
139+
140+
// Register Domains
141+
s.AddTool(
142+
mcp.NewTool("domains", mcp.WithDescription("Get all the domains in the opslevel account. Domains are objects in opslevel that represent a top-level abstraction used to organize and categorize software systems.")),
143+
func(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
144+
client := getClientGQL()
145+
resp, err := client.ListDomains(nil)
146+
if err != nil {
147+
return nil, err
148+
}
149+
data, err := json.Marshal(resp.Nodes)
150+
if err != nil {
151+
return nil, err
152+
}
153+
return mcp.NewToolResultText(string(data)), nil
154+
})
155+
156+
// Register Systems
157+
s.AddTool(
158+
mcp.NewTool("systems", mcp.WithDescription("Get all the systems in the opslevel account. Systems are objects in opslevel that represent a grouping of services or components that act together to serve a business function or process.")),
159+
func(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
160+
client := getClientGQL()
161+
resp, err := client.ListSystems(nil)
162+
if err != nil {
163+
return nil, err
164+
}
165+
data, err := json.Marshal(resp.Nodes)
166+
if err != nil {
167+
return nil, err
168+
}
169+
return mcp.NewToolResultText(string(data)), nil
170+
})
174171

175172
log.Info().Msg("Starting MCP server...")
176173
if err := server.ServeStdio(s); err != nil {

0 commit comments

Comments
 (0)