@@ -133,6 +133,19 @@ var (
133
133
mcp .WithDescription ("Get overview of Prometheus target discovery" ),
134
134
)
135
135
136
+ targetsMetadataTool = mcp .NewTool ("targets_metadata" ,
137
+ mcp .WithDescription ("Returns metadata about metrics currently scraped by the target " ),
138
+ mcp .WithString ("match_target" ,
139
+ mcp .Description ("[Optional] Label selectors that match targets by their label sets. All targets are selected if left empty." ),
140
+ ),
141
+ mcp .WithString ("metric" ,
142
+ mcp .Description ("[Optional] A metric name to retrieve metadata for. All metric metadata is retrieved if left empty." ),
143
+ ),
144
+ mcp .WithString ("limit" ,
145
+ mcp .Description ("[Optional] Maximum number of targets to match." ),
146
+ ),
147
+ )
148
+
136
149
walReplayTool = mcp .NewTool ("wal_replay_status" ,
137
150
mcp .WithDescription ("Get current WAL replay status" ),
138
151
)
@@ -278,7 +291,6 @@ func labelNamesToolHandler(ctx context.Context, request mcp.CallToolRequest) (*m
278
291
return mcp .NewToolResultText (data ), err
279
292
}
280
293
281
- // LabelValues performs a query for the values of the given label, time range and matchers.
282
294
func labelValuesToolHandler (ctx context.Context , request mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
283
295
arguments := request .Params .Arguments
284
296
label , ok := arguments ["label" ].(string )
@@ -366,6 +378,28 @@ func targetsToolHandler(ctx context.Context, request mcp.CallToolRequest) (*mcp.
366
378
return mcp .NewToolResultText (data ), err
367
379
}
368
380
381
+ func targetsMetadataToolHandler (ctx context.Context , request mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
382
+ arguments := request .Params .Arguments
383
+
384
+ matchTarget := ""
385
+ if argMatchTarget , ok := arguments ["match_target" ].(string ); ok {
386
+ matchTarget = argMatchTarget
387
+ }
388
+
389
+ metric := ""
390
+ if argMetric , ok := arguments ["metric" ].(string ); ok {
391
+ metric = argMetric
392
+ }
393
+
394
+ limit := ""
395
+ if argLimit , ok := arguments ["limit" ].(string ); ok {
396
+ limit = argLimit
397
+ }
398
+
399
+ data , err := targetsMetadataApiCall (ctx , matchTarget , metric , limit )
400
+ return mcp .NewToolResultText (data ), err
401
+ }
402
+
369
403
func walReplayToolHandler (ctx context.Context , request mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
370
404
data , err := walReplayApiCall (ctx )
371
405
return mcp .NewToolResultText (data ), err
0 commit comments