master
h 67 lines 2.47 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #ifndef NETDATA_MCP_TOOLS_LIST_METADATA_H
4 #define NETDATA_MCP_TOOLS_LIST_METADATA_H
5
6 #include "mcp.h"
7 #include "web/api/maps/contexts_options.h"
8 #include "web/api/maps/contexts_alert_statuses.h"
9 #include "database/contexts/rrdcontext.h"
10
11 // Tool output types - what kind of data the tool returns
12 typedef enum {
13 MCP_LIST_OUTPUT_NODES, // Tool returns nodes
14 MCP_LIST_OUTPUT_METRICS, // Tool returns metrics (contexts)
15 MCP_LIST_OUTPUT_FUNCTIONS, // Tool returns functions
16 MCP_LIST_OUTPUT_ALERTS, // Tool returns alerts
17 } MCP_LIST_OUTPUT_TYPE;
18
19 // Configuration structure for unified list tools
20 typedef struct mcp_list_tool_config {
21 const char *name;
22 const char *title;
23 const char *description;
24
25 // What type of output this tool returns
26 MCP_LIST_OUTPUT_TYPE output_type;
27
28 // Mode for rrdcontext_to_json_v2
29 CONTEXTS_V2_MODE mode;
30
31 // Additional options (MCP is always added)
32 CONTEXTS_OPTIONS options;
33
34 // Parameters configuration
35 struct {
36 bool has_q; // Full-text search
37 bool has_metrics; // Metrics pattern
38 bool has_nodes; // Nodes pattern
39 bool has_instances; // Instances pattern
40 bool has_dimensions; // Dimensions pattern
41 bool has_time_range; // Has after/before time parameters
42 bool has_cardinality_limit; // Has cardinality limit parameter
43 bool has_alert_pattern; // Has alert name pattern parameter
44
45 bool metrics_required; // Is metrics parameter required?
46 bool nodes_required; // Is nodes parameter required?
47 bool nodes_as_array; // Should nodes be an array instead of pattern?
48 bool metrics_as_array; // Should metrics be an array instead of pattern?
49 } params;
50
51 // Tool-specific defaults (0 means use global default)
52 struct {
53 size_t cardinality_limit;
54 uint32_t alert_status; // Default alert status filter (CONTEXTS_ALERT_STATUS)
55 } defaults;
56
57 } MCP_LIST_TOOL_CONFIG;
58
59 // Get tool configuration by name
60 const MCP_LIST_TOOL_CONFIG *mcp_get_list_tool_config(const char *name);
61
62 // Unified functions
63 void mcp_unified_list_tool_schema(BUFFER *buffer, const MCP_LIST_TOOL_CONFIG *config);
64 MCP_RETURN_CODE mcp_unified_list_tool_execute(MCP_CLIENT *mcpc, const MCP_LIST_TOOL_CONFIG *config,
65 struct json_object *params, MCP_REQUEST_ID id);
66
67 #endif //NETDATA_MCP_TOOLS_LIST_METADATA_H