Programmatic access to Amazon EKS clusters for AI assistants
EKS MCP Server - Setup Guide
Overview
The EKS MCP Server is a Model Context Protocol (MCP) server that provides programmatic access to Amazon EKS (Elastic Kubernetes Service) clusters. It allows you to interact with Kubernetes resources through the MCP interface, enabling integration with AI assistants and other applications.
What is MCP?
The Model Context Protocol (MCP) is a standardized protocol that allows applications to provide context and tools to large language models. This server implements the MCP protocol to expose Kubernetes operations as callable tools.
Prerequisites
Before setting up the EKS MCP server, ensure you have the following installed:
Required Software
Node.js (v18.0.0 or higher)
- Download: https://nodejs.org/
- Verify:
node --version
npm (comes with Node.js)
- Verify:
npm --version
- Verify:
kubectl (Kubernetes command-line tool)
- Installation: https://kubernetes.io/docs/tasks/tools/install-kubectl/
- Verify:
kubectl version --client
AWS CLI (for EKS cluster access)
- Installation: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
- Verify:
aws --version
AWS Configuration
AWS Credentials
- Configure AWS credentials:
aws configure - Provide Access Key ID and Secret Access Key
- Set default region:
ap-northeast-2(or your cluster region)
- Configure AWS credentials:
EKS Cluster Access
- Ensure you have permissions to access the EKS cluster
- Update kubeconfig:
aws eks update-kubeconfig --region ap-northeast-2 --name Shared-cluster
Verify kubectl Access
- List available contexts:
kubectl config get-contexts - Verify cluster connection:
kubectl get nodes
- List available contexts:
Installation
Step 1: Clone or Navigate to Repository
cd c:\Users\ashut\OneDrive\Desktop\Kalyani\Git\eks-mcp-server
Step 2: Install Dependencies
npm install
This will install:
@kubernetes/client-node- Kubernetes client library@modelcontextprotocol/sdk- MCP SDK for Node.js
Step 3: Verify Installation
Verify that all dependencies are installed correctly:
npm list
You should see:
eks-mcp-server@1.0.0
├── @kubernetes/client-node@^1.4.0
└── @modelcontextprotocol/sdk@^1.26.0
Configuration
EKS Cluster Configuration
The server automatically loads your kubeconfig from the default location:
- Linux/macOS:
~/.kube/config - Windows:
%USERPROFILE%\.kube\config
Configure Kubeconfig for EKS
Add EKS cluster to kubeconfig:
aws eks update-kubeconfig --region ap-northeast-2 --name Shared-cluster --profile <your-aws-profile>Verify context:
kubectl config get-contextsSwitch to EKS context (if needed):
kubectl config use-context eks-bastion
MCP Server Configuration
The server is configured in server.js with the following defaults:
- Server Name:
eks-mcp-server - Version:
1.0.0 - Transport: Stdio (standard input/output)
- Capabilities: Tools
Registering with MCP Clients
To use this server with an MCP client (e.g., Claude Desktop), configure it in your MCP client settings:
For Claude Desktop (~/AppData/Roaming/Claude/claude_desktop_config.json):
{
"mcpServers": {
"eks-mcp-server": {
"command": "node",
"args": ["c:\\Users\\ashut\\OneDrive\\Desktop\\Kalyani\\Git\\eks-mcp-server\\server.js"],
"env": {
"KUBECONFIG": "C:\\Users\\ashut\\.kube\\config"
}
}
}
}
Available Tools
1. list_pods
Lists all pods across all namespaces in the cluster.
Input: None
Output: JSON array of pod names
Example:
kubectl --context="eks-bastion" get pods --all-namespaces
Running the Server
Start the Server
node server.js
You should see output indicating the server is running:
[Listening on stdio]
Server will Wait for Commands
Once started, the server listens for MCP protocol commands from clients and executes them based on the requested tool.
Stop the Server
Press Ctrl+C to stop the server.
Demo & Usage Examples
Demo 1: List All Pods in the Cluster
Objective: Get a list of all pods running in the Shared-cluster
Manual kubectl Command:
kubectl --context="eks-bastion" get pods --all-namespaces -o wide
Expected Output (Tabular Format):
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
default nginx-7c5d8bf9f7-7hkz5 1/1 Running 0 2m 12.0.13.64 ip-12-0-13-242.ap-northeast-2.compute.internal
kube-system aws-node-l5rdc 2/2 Running 0 6h53m 12.0.13.242 ip-12-0-13-242.ap-northeast-2.compute.internal
kube-system aws-node-msjfh
Tools (1)
list_podsLists all pods across all namespaces in the cluster.Environment Variables
KUBECONFIGrequiredPath to the Kubernetes configuration fileConfiguration
{"mcpServers": {"eks-mcp-server": {"command": "node", "args": ["path/to/server.js"], "env": {"KUBECONFIG": "/path/to/.kube/config"}}}}