@@ -61,6 +61,10 @@ func NewServer() *MCPServer {
61
61
mcp .Required (),
62
62
mcp .Description ("Builder to be used to build the function image" ),
63
63
),
64
+ mcp .WithBoolean ("remote" ,
65
+ mcp .DefaultBool (false ),
66
+ mcp .Description ("If true, the function will be deployed remotely" ),
67
+ ),
64
68
),
65
69
handleDeployTool ,
66
70
)
@@ -91,6 +95,17 @@ func NewServer() *MCPServer {
91
95
handleBuildTool ,
92
96
)
93
97
98
+ mcpServer .AddTool (
99
+ mcp .NewTool ("delete" ,
100
+ mcp .WithDescription ("Deletes a function from the cluster" ),
101
+ mcp .WithString ("name" ,
102
+ mcp .Required (),
103
+ mcp .Description ("Name of the function to be deleted" ),
104
+ ),
105
+ ),
106
+ handleDeleteTool ,
107
+ )
108
+
94
109
mcpServer .AddResource (mcp .NewResource (
95
110
"func://docs" ,
96
111
"Root Help Command" ,
@@ -196,7 +211,16 @@ func handleDeployTool(
196
211
if err != nil {
197
212
return mcp .NewToolResultError (err .Error ()), nil
198
213
}
199
- cmd := exec .Command ("func" , "deploy" , "--registry" , registry , "--builder" , builder )
214
+ remote , err := request .RequireBool ("remote" )
215
+ if err != nil {
216
+ return mcp .NewToolResultError (err .Error ()), nil
217
+ }
218
+ var cmd * exec.Cmd
219
+ if remote {
220
+ cmd = exec .Command ("func" , "deploy" , "--registry" , registry , "--builder" , builder , "--remote" )
221
+ } else {
222
+ cmd = exec .Command ("func" , "deploy" , "--registry" , registry , "--builder" , builder )
223
+ }
200
224
cmd .Dir = cwd
201
225
out , err := cmd .Output ()
202
226
if err != nil {
@@ -245,3 +269,20 @@ func handleBuildTool(
245
269
body := []byte (fmt .Sprintf (`{"result": "%s"}` , out ))
246
270
return mcp .NewToolResultText (string (body )), nil
247
271
}
272
+
273
+ func handleDeleteTool (
274
+ ctx context.Context ,
275
+ request mcp.CallToolRequest ,
276
+ ) (* mcp.CallToolResult , error ) {
277
+ name , err := request .RequireString ("name" )
278
+ if err != nil {
279
+ return mcp .NewToolResultError (err .Error ()), nil
280
+ }
281
+ cmd := exec .Command ("func" , "delete" , name )
282
+ out , err := cmd .Output ()
283
+ if err != nil {
284
+ return mcp .NewToolResultError (err .Error ()), nil
285
+ }
286
+ body := []byte (fmt .Sprintf (`{"result": "%s"}` , out ))
287
+ return mcp .NewToolResultText (string (body )), nil
288
+ }
0 commit comments