metoro-mcp-server

Official
package tools type MetoroTools struct { Name string Description string Handler any } var MetoroToolsList = []MetoroTools{ { Name: "get_environments", Description: "Get Kubernetes environments/clusters. This tool is useful for listing the kubernetes environments/clusters that are monitored by Metoro.", Handler: GetEnvironmentsHandler, }, { Name: "get_services", Description: "Get services running in your Kubernetes cluster. Metoro treats the following Kubernetes resources as a 'service': Deployment, StatefulSet, DaemonSet. This tool is useful for listing the services/workloads running in your Kubernetes cluster.", Handler: GetServicesHandler, }, { Name: "get_namespaces", Description: "Get namespaces in your Kubernetes cluster. This tool is useful for listing the namespaces in your Kubernetes cluster.", Handler: GetNamespacesHandler, }, { Name: "get_logs", Description: `Get individual log lines. Results are limited to 100 logs so try to use filters and regexes to narrow down what you are looking for. Use this tool when you are interested in the contents of the log lines to get more information to answer why/what. If you want to check existence use get_timeseries_data tool with type=logs to get count of logs.`, Handler: GetLogsHandler, }, { Name: "get_traces", Description: `Get individual traces from your cluster. Results are limited to 100 traces so try to use filters to narrow down what you are looking for. Use this tool when you are interested in the trace attributes to get more information to answer why/what. If you would like to check existence use get_timeseries_data tool with type=trace to get count/p50/p90/p95/p99 of traces instead of get_traces tool. `, Handler: GetTracesHandler, }, { Name: "get_timeseries_data", Description: `Get one or more timeseries data for a metric or traces or logs or kubernetes resources. This tool is useful for understanding how the underlying type of data (specific/metric/trace/kubernetes resources/logs) change over time. You can also apply formulas to combine timeseries to calculate rates or ratios or differences etc. How to use this tool: First you need the type of timeseries data you are requesting for. This can be one of metric or traces or logs or kubernetes resources. If it is metrics then you HAVE TO call the get_metric_names tool to get the available metric names which can be used as MetricName argument for this tool. Then YOU HAVE TO call get_attribute_keys tool to retrieve the available attribute keys and get_attribute_values to retrieve values you are interested in to use in Filter/ExcludeFilter keys for this tool. You can also use Splits argument to group/split the metric data by the given metric attribute keys. Only use the attribute keys and values that are available for the MetricName that are returned from get_attribute_keys and get_attribute_values tools. If you are not getting proper results back then you might have forgotten to set the correct attribute keys and values. Try again with the correct attribute keys and values you get from get_attribute_values. Metrics of type counter (or with _total suffix) are cumulative metrics but Metoro querying engine already accounts for rate differences when returning the value so you don't need to calculate the rate/monotonic difference yourself. You can just query those metrics as they are without extra functions. If you are in doubt, use the get_metric_metadata tool to get more information (description, type, unit) about the metric and how to use it. `, Handler: GetMultiMetricHandler, }, { Name: "get_attribute_keys", Description: `Get the possible attribute keys for a specific type of data. This tool is useful for understanding the possible attribute keys that can be used for filtering the data. How to use this tool: First you need the type of data you are requesting for. This can be one of metric or traces or logs or kubernetes resources. Then you can call this tool to get the possible attribute keys for the given type of data.`, Handler: GetAttributeKeysHandler, }, { Name: "get_attribute_values", Description: `"Get the possible values of an attribute key for a given type of data which can be one of metric trace logs or kubernetes_resource. This can be used as a value for a filtering key for filtering data. How to use this tool: First you need the type of data you are requesting for. This can be one of metric or traces or logs or kubernetes resources. Then you need the attribute keys for the given type of data. You can use get_attribute_keys tool to get the available attribute keys for the given type of data. Then you can call this tool to get the possible values for a given attribute key for the given type of data. If you want to get the possible values for a metric attribute key you can use the get_metric_names tool to get the available metric names which can be used as MetricName argument for this tool and then use get_attribute_keys tool to get the available attribute keys and get_attribute_values to get values for the key which can be used as Filter/ExcludeFilter keys for`, Handler: GetAttributeValuesHandler, }, { Name: "get_profiles", Description: "Get cpu profiles of your services running in your Kubernetes cluster. This tool is useful for answering performance related questions for a specific service. It provides information about which functions taking time in the service.", Handler: GetProfilesHandler, }, { Name: "get_k8s_events", Description: `Get the Kubernetes events from your clusters. Kubernetes events are useful for understanding what is happening with regards to your Kubernetes resources. They are emitted by the Kubernetes API server when there is a change in the state of the cluster. How to use this tool: First use get_k8s_events_attributes tool to retrieve the available Kubernetes event attribute keys which can be used as Filter/ExcludeFilter keys for this tool. Then use get_k8s_event_attribute_values_for_individual_attribute tool to get the possible values a Kubernetes event attribute key can be for filtering Kubernetes events. And then you can call this tool (get_k8s_events) to get the specific events you are looking for. e.g. Filter use case: get_k8s_events with filters: {key: [value]} for including specific Kubernetes events.`, Handler: GetK8sEventsHandler, }, { Name: "get_k8s_events_attributes", Description: "Get possible attribute keys for Kubernetes events which can be used for filtering them.", Handler: GetK8sEventsAttributesHandler, }, { Name: "get_k8s_event_attribute_values_for_individual_attribute", Description: "Get possible attribute values for a specific Kubernetes event attribute key. E.g. EventType attribute key might have values like Normal Warning etc.", Handler: GetK8sEventAttributeValuesForIndividualAttributeHandler, }, { Name: "get_k8s_events_volume", Description: "Get the timeseries data for the number of Kubernetes events in your cluster whether its filtered by a specific attribute or not. The volume of events are split by EventType so you can see the breakdown of Warning/Normal events.", Handler: GetK8sEventsVolumeHandler, }, { Name: "get_metric_names", Description: "Get available metric names to query. These metric names can be used as MetricName argument for get_metric, get_metric_metadata and get_timeseries_data and get_attribute_keys tools.", Handler: GetMetricNamesHandler, }, { Name: "get_metric_metadata", Description: "Get metric description and type and unit for a metric. This tool can be used to get detailed information about a metric including its type, unit and description. Use this tool after getting the metric name that you are interested in from the get_metric_names tool and before calling the get_timeseries_data tool to understand the metric better.", Handler: GetMetricMetadata, }, //{ // Name: "get_pods", // Description: "Get the list of pods that are running in your cluster. This tool is useful for getting the name of the pods. You must provide either a ServiceName to get pods for a specific service or a NodeName to get pods running on a specific node.", // Handler: GetPodsHandler, //}, { Name: "get_service_yaml", Description: "Returns environment and YAML of a kubernetes resource/service. This tool is useful for understanding the YAML configuration of a service.", Handler: GetK8sServiceInformationHandler, }, { Name: "get_nodes", Description: "Get the nodes that are running in your cluster. To use this tool, first call get_node_attributes to get the possible node attribute keys and values which can be used for filtering nodes.", Handler: GetNodesHandler, }, { Name: "get_node_attributes", Description: "Get possible node attribute keys and values which can be used for filtering nodes.", Handler: GetNodeAttributesHandler, }, { Name: "get_node_info", Description: "Get detailed node information about a specific node. This tool provides information about the node's capacity, allocatable resources, and usage, yaml, node type, OS and Kernel information.", Handler: GetNodeInfoHandler, }, { Name: "get_service_summaries", Description: "Get summaries of services/workloads running in your Kubernetes cluster. The summary includes the number of requests, errors (5xx and 4xx), P50, p95, p99 latencies. This tool is useful for understanding the performance of your services at a high level for a given relative or abosulute time range.", Handler: GetServiceSummariesHandler, }, { Name: "get_alerts", Description: "Get list of alerts from your Kubernetes cluster. These alerts are configured by the user in Metoro therefore it may not have full coverage for all the issues that might occur in the cluster.", Handler: GetAlertsHandler, }, { Name: "get_alert_fires", Description: "Get list of alert fires from your Kubernetes cluster. Alert fires are the instances when an alert is triggered. This tool provides information about the alert name, the time it was triggered, the time it recovered, the environment, and the service name (if available) and the alert trigger message.", Handler: GetAlertFiresHandler, }, { Name: "create_dashboard", Description: `Create a dashboard with the described metrics. This tool is useful for creating a dashboard with the metrics you are interested in. How to use this tool: First use get_metric_names tool to retrieve the available metric names which can be used as MetricName argument for this tool and then use get_attribute_keys tool to retrieve the available attribute keys and get_attribute_values for getting the values for the attribute key that you are interested in to use in Filter/ExcludeFilter keys or Splits argument for MetricChartWidget argument for this tool. You can also use Splits argument to group the metric data by the given metric attribute keys. Only use the attribute keys and values that are available for the MetricName that are returned from get_attribute_keys and get_attribute_values tools.`, Handler: CreateDashboardHandler, }, { Name: "get_trace_spans", Description: `Get the spans associated with a specific traceId. This allows you to view the entire trace in a tree like structure.`, Handler: GetTraceSpansHandler, }, { Name: "get_source_repository", Description: "Get the source repository URL/path for a specific service. This tool is useful for finding where the code for a service is stored. You need to provide the service name time range and optionally specific environments to search in.", Handler: GetSourceRepositoryHandler, }, }