Amazon EKS
Give the agent read-only access to your EKS clusters, CloudWatch logs and metrics, and EKS troubleshooting knowledge.
Amazon's EKS MCP server reads Kubernetes resources, pod logs and events, CloudWatch logs and metrics, and EKS insights, and searches the EKS troubleshooting guide. It signs in with AWS IAM, so its access is whatever its IAM role allows.
There are two ways to run it. Both sit behind Supergateway, which turns them into a Streamable HTTP endpoint with an API key.
| AWS-hosted server (preview) | Open-source server | |
|---|---|---|
| Runs | AWS hosts it; you run a small signing proxy | You run awslabs.eks-mcp-server |
| Read-only by | The IAM policy AmazonEKSMCPReadOnlyAccess | The server's default mode, plus an IAM policy |
| Transport / auth in sremcp | Streamable HTTP / Bearer token | Streamable HTTP / Bearer token |
For plain Kubernetes reads without AWS extras, the Kubernetes server also works on EKS.
1. Create a read-only IAM role
Create an IAM role for the proxy or server, assumable where it will run (EKS Pod Identity, IRSA, or an ECS task role).
- AWS-hosted server: attach the managed policy AmazonEKSMCPReadOnlyAccess. It allows starting the server and
calling its read-only tools. Write tools need
eks-mcp:CallPrivilegedTool, which this policy doesn't grant. - Open-source server: attach a policy with the read actions it needs:
eks:DescribeCluster,eks:DescribeInsight,eks:ListInsights,ec2:DescribeVpcs,ec2:DescribeSubnets,ec2:DescribeRouteTables,cloudformation:DescribeStacks,cloudwatch:GetMetricData,logs:StartQuery,logs:GetQueryResults,eks-mcpserver:QueryKnowledgeBase, and for its IAM toolsiam:GetRole,iam:GetRolePolicy,iam:ListRolePolicies,iam:ListAttachedRolePolicies,iam:GetPolicyandiam:GetPolicyVersion.
2. Let the role read the cluster
Kubernetes reads (pods, logs, events) go through the cluster's own access control. Give the role an EKS access entry with the read-only AmazonEKSViewPolicy, which can't read Secrets:
ROLE=arn:aws:iam::123456789012:role/sremcp-eks-mcp
aws eks create-access-entry --cluster-name prod --principal-arn "$ROLE"
aws eks associate-access-policy --cluster-name prod --principal-arn "$ROLE" \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy \
--access-scope type=cluster3. Run it behind Supergateway
Run one of these with the role's credentials: as a pod using the role through EKS Pod Identity or IRSA, as an ECS
task with the role, or elsewhere with AWS_* credential variables. The examples use Docker for brevity. The
supergateway:uvx image includes uv.
The MCP Proxy for AWS signs each request with SigV4 and forwards it to AWS's endpoint for your region:
docker run -d -p 8000:8000 -e AWS_REGION=us-east-1 \
-e SUPERGATEWAY_API_KEY="$MCP_API_KEY" \
supercorp/supergateway:uvx \
--stdio "uvx mcp-proxy-for-aws@latest https://eks-mcp.us-east-1.api.aws/mcp --service eks-mcp --region us-east-1" \
--outputTransport streamableHttp --port 8000The AWS-hosted server is in preview, and AWS may change its tools.
Then expose it over https. See Expose a self-hosted server.
4. Onboard in sremcp
| Field | Value |
|---|---|
| Display name / Slug | EKS (prod) / eks-prod |
| Endpoint URL | https://mcp-eks.example.com/mcp |
| Transport | Streamable HTTP |
| Authentication | Bearer token, Secret = MCP_API_KEY |
5. Approve tools
Read tools, for example: list_k8s_resources, get_pod_logs, get_k8s_events, get_cloudwatch_logs,
get_cloudwatch_metrics, get_eks_insights, get_eks_vpc_config, search_eks_troubleshoot_guide.
Don't approve manage_k8s_resource, apply_yaml, generate_app_manifest, manage_eks_stacks or
add_inline_policy. With sensitive-data access on, manage_k8s_resource can also read Secrets where the cluster
allows it.
Try it
- Are there any EKS insights or upgrade blockers on the prod cluster?
- Why are pods in the orders namespace pending? Check events and node capacity.
- Show CloudWatch error logs for the payments service in the last hour.