You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+15-15Lines changed: 15 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -442,8 +442,8 @@ In case multi-cluster support is enabled (default) and you have access to multip
442
442
-**kiali_manage_istio_config_read** - Read-only Istio config: list or get objects. For action 'list', returns an array of objects with {name, namespace, type, validation}. For create, patch, or delete use manage_istio_config.
443
443
-`action` (`string`) **(required)** - Action to perform (read-only)
444
444
-`clusterName` (`string`) - Optional cluster name. Defaults to the cluster name in the Kiali configuration.
445
-
-`group` (`string`) - API group of the Istio object (e.g., 'networking.istio.io', 'gateway.networking.k8s.io'). Required for 'get' action.
446
-
-`kind` (`string`) - Kind of the Istio object (e.g., 'VirtualService', 'DestinationRule'). Required for 'get' action.
445
+
-`group` (`string`) - API group of the Istio object. Required for 'get' action.
446
+
-`kind` (`string`) - Kind of the Istio object. Required for 'get' action.
447
447
-`namespace` (`string`) - Namespace containing the Istio object. For 'list', if not provided, returns objects across all namespaces. For 'get', required.
448
448
-`object` (`string`) - Name of the Istio object. Required for 'get' action.
449
449
-`serviceName` (`string`) - Filter Istio configurations (VirtualServices, DestinationRules, and their referenced Gateways) that affect a specific service. Only applicable for 'list' action
@@ -452,9 +452,8 @@ In case multi-cluster support is enabled (default) and you have access to multip
452
452
-**kiali_manage_istio_config** - Create, patch, or delete Istio config. For list and get (read-only) use manage_istio_config_read.
453
453
-`action` (`string`) **(required)** - Action to perform (write)
454
454
-`clusterName` (`string`) - Optional cluster name. Defaults to the cluster name in the Kiali configuration.
455
-
-`confirmed` (`boolean`) - CRITICAL: If 'true', the destructive action (create/patch/delete) is executed. If 'false' (or omitted) for create/patch, the tool returns a YAML PREVIEW. Display it to the user and ask for confirmation before calling again with confirmed=true.
456
455
-`data` (`string`) - Complete JSON or YAML data to apply or create the object. Required for create and patch actions. You MUST provide a COMPLETE and VALID manifest with ALL required fields for the resource type. Arrays (like servers, http, etc.) are REPLACED entirely, so you must include ALL required fields within each array element.
457
-
-`group` (`string`) **(required)** - API group of the Istio object (e.g., 'networking.istio.io', 'gateway.networking.k8s.io').
456
+
-`group` (`string`) **(required)** - API group of the Istio object
458
457
-`kind` (`string`) **(required)** - Kind of the Istio object (e.g., 'VirtualService', 'DestinationRule').
459
458
-`namespace` (`string`) **(required)** - Namespace containing the Istio object
460
459
-`object` (`string`) **(required)** - Name of the Istio object
@@ -466,6 +465,17 @@ In case multi-cluster support is enabled (default) and you have access to multip
466
465
-`resourceName` (`string`) - Optional. The specific name of the resource. If left empty, the tool returns a list of all resources of the specified type. If provided, the tool returns deep details for this specific resource.
467
466
-`resourceType` (`string`) **(required)** - The type of resource to query.
468
467
468
+
-**kiali_list_traces** - Lists distributed traces for a service in a namespace. Returns a summary (namespace, service, total_found, avg_duration_ms) and a list of traces with id, duration_ms, spans_count, root_op, slowest_service, has_errors. Use get_trace_details with a trace id to get full hierarchy.
469
+
-`clusterName` (`string`) - Optional cluster name. Defaults to the cluster name in the Kiali configuration.
470
+
-`errorOnly` (`boolean`) - If true, only consider traces that contain errors. Default false.
471
+
-`limit` (`integer`) - Maximum number of traces to return. Default 10.
472
+
-`lookbackSeconds` (`integer`) - How far back to search. Default 600 (10m).
473
+
-`namespace` (`string`) **(required)** - Kubernetes namespace of the service.
474
+
-`serviceName` (`string`) **(required)** - Service name to search traces for (required). Returns multiple traces up to limit.
475
+
476
+
-**kiali_get_trace_details** - Fetches a single distributed trace by trace_id and returns its call hierarchy (service tree with duration, status, and nested calls). Use this after list_traces to drill into a specific trace.
477
+
-`traceId` (`string`) **(required)** - Trace ID to fetch and summarize. If provided, namespace/service_name are ignored.
478
+
469
479
-**kiali_get_pod_performance** - Returns a human-readable text summary with current Pod CPU/memory usage (from Prometheus) compared to Kubernetes requests/limits (from the Pod spec). Useful to answer questions like 'Is this workload using too much memory?'
470
480
-`clusterName` (`string`) - Optional. Name of the cluster to get resources from. If not provided, will use the default cluster name in the Kiali KubeConfig
471
481
-`namespace` (`string`) **(required)** - Kubernetes namespace of the Pod.
@@ -474,16 +484,6 @@ In case multi-cluster support is enabled (default) and you have access to multip
474
484
-`timeRange` (`string`) - Time window used to compute CPU rate (Prometheus duration like '5m', '10m', '1h', '1d'). Defaults to '10m'.
475
485
-`workloadName` (`string`) - Kubernetes Workload name (e.g. Deployment/StatefulSet/etc). Tool will look up the workload and pick one of its Pods. If not found, it will fall back to treating this value as a podName.
476
486
477
-
-**kiali_get_traces** - Fetches a distributed trace (Jaeger/Tempo) by trace_id or searches by service_name (optionally only error traces) and summarizes bottlenecks and error spans.
478
-
-`clusterName` (`string`) - Optional cluster name. Defaults to the cluster name in the Kiali configuration.
479
-
-`errorOnly` (`boolean`) - If true, only consider traces that contain errors (e.g. error=true / non-200 status). Default false.
480
-
-`limit` (`integer`) - Max number of traces to consider when searching by service_name. Default 10.
481
-
-`lookbackSeconds` (`integer`) - How far back to search when using service_name. Default 600 (10m).
482
-
-`maxSpans` (`integer`) - Max number of spans to return in each summary section (bottlenecks, errors, roots). Default 7.
483
-
-`namespace` (`string`) - Kubernetes namespace of the service (required when trace_id is not provided).
484
-
-`serviceName` (`string`) - Service name to search traces for (required when trace_id is not provided).
485
-
-`traceId` (`string`) - Trace ID to fetch and summarize. If provided, namespace/service_name are ignored.
486
-
487
487
-**kiali_get_logs** - Get the logs of a Kubernetes Pod (or workload name that will be resolved to a pod) in a namespace. Output is plain text, matching kubernetes-mcp-server pods_log.
488
488
-`clusterName` (`string`) - Optional. Name of the cluster to get the logs from. If not provided, will use the default cluster name in the Kiali KubeConfig
489
489
-`container` (`string`) - Optional. Name of the Pod container to get the logs fro
@@ -495,7 +495,7 @@ In case multi-cluster support is enabled (default) and you have access to multip
495
495
-`tail` (`integer`) - Number of lines to retrieve from the end of the logs (Optional, defaults to 50). Cannot exceed 200 lines.
496
496
-`workload` (`string`) - Optional. Workload name override (used when name lookup fails).
497
497
498
-
-**kiali_get_metrics** - Returns metrics for the given resource type, namespaces and resource name.
498
+
-**kiali_get_metrics** - Returns a compact JSON summary of Istio metrics (latency quantiles, traffic trends, throughput, payload sizes) for the given resource.
499
499
-`byLabels` (`string`) - Comma-separated list of labels to group metrics by (e.g., 'source_workload,destination_service'). Optional
500
500
-`clusterName` (`string`) - Cluster name to get metrics from. Optional, defaults to the cluster name in the Kiali configuration (KubeConfig)
501
501
-`direction` (`string`) - Traffic direction. Optional, defaults to 'outbound'
Kiali-focused MCP tasks live here. Each folder under this directory represents a self-contained scenario that exercises the Kiali toolset (Istio config, topology, observability, troubleshooting).
4
+
5
+
## Adding a New Task
6
+
7
+
1. Create a new subdirectory (e.g., `status-foo/`) and place the scenario YAML plus any helper scripts or artifacts inside it.
8
+
2. Make sure the YAML’s `metadata` block includes `name`, `category`, and `difficulty` so it shows up correctly in the catalog below.
9
+
3. Keep prompts concise and action-oriented; verification commands should rely on Kiali MCP tools whenever possible.
10
+
11
+
## Updating the Catalog
12
+
13
+
After adding or editing tasks, regenerate this README’s catalog with:
14
+
15
+
```bash
16
+
make update_tasks
17
+
```
18
+
19
+
The `update_tasks` target runs `scripts/update_tasks.sh`, which parses every scenario and rewrites the section below automatically. Always run it before committing so the list stays in sync.
20
+
21
+
## Tasks defined
22
+
<!-- TASKS-START -->
23
+
- Configuration Management
24
+
-[easy] istio-list (List and Validate VirtualServices)
25
+
**Prompt:***|*
26
+
-[easy] istio-list-destination-rules (List and Validate DestinationRules)
27
+
**Prompt:***"List all DestinationRules in the 'bookinfo' namespace and report if any of them have validation errors."*
28
+
-[medium] istio-create (Create Istio Gateway)
29
+
**Prompt:***"Create a new Istio Gateway named 'my-gateway' in the 'istio-system' namespace."*
30
+
-[medium] istio-delete (Remove Fault Injection)
31
+
**Prompt:***"The 'bookinfo' namespace seems to have some fault injection configured that's causing issues. Please identify and remove any fault injection from the 'ratings' VirtualService."*
32
+
-[medium] istio-patch (Update Traffic Shifting)
33
+
**Prompt:***"I need to implement a 50/50 traffic split between versions for the 'reviews' service in the 'bookinfo' namespace. Apply the necessary patch to the 'reviews' VirtualService without asking for confirmation."*
description: "Identifies and removes fault injection configurations (aborts/delays) from a VirtualService."
9
+
difficulty: medium
10
+
spec:
11
+
requires:
12
+
- extension: kubernetes
13
+
as: k8s
14
+
setup:
15
+
- k8s.create:
16
+
apiVersion: networking.istio.io/v1
17
+
kind: DestinationRule
18
+
metadata:
19
+
namespace: bookinfo
20
+
name: ratings
21
+
labels:
22
+
gevals.kiali.io/test: gevals-testing
23
+
spec:
24
+
host: ratings.bookinfo.svc.cluster.local
25
+
subsets:
26
+
- name: v1
27
+
labels:
28
+
version: v1
29
+
- k8s.create:
30
+
apiVersion: networking.istio.io/v1
31
+
kind: VirtualService
32
+
metadata:
33
+
namespace: bookinfo
34
+
name: ratings
35
+
labels:
36
+
gevals.kiali.io/test: gevals-testing
37
+
spec:
38
+
hosts:
39
+
- ratings.bookinfo.svc.cluster.local
40
+
http:
41
+
- route:
42
+
- destination:
43
+
host: ratings.bookinfo.svc.cluster.local
44
+
subset: v1
45
+
weight: 100
46
+
fault:
47
+
abort:
48
+
percentage:
49
+
value: 100
50
+
httpStatus: 503
51
+
verify:
52
+
- script:
53
+
file: ./verify.sh
54
+
timeout: 10s
55
+
cleanup:
56
+
- k8s.delete:
57
+
apiVersion: networking.istio.io/v1
58
+
kind: VirtualService
59
+
metadata:
60
+
name: ratings
61
+
namespace: bookinfo
62
+
ignoreNotFound: true
63
+
- k8s.delete:
64
+
apiVersion: networking.istio.io/v1
65
+
kind: DestinationRule
66
+
metadata:
67
+
name: ratings
68
+
namespace: bookinfo
69
+
ignoreNotFound: true
70
+
prompt:
71
+
inline: "The 'bookinfo' namespace seems to have some fault injection configured that's causing issues. Please identify and remove any fault injection from the 'ratings' VirtualService."
0 commit comments