6. Q CLI 기반 MCP 구성하기 3
update : 2025.06.04
Amazon EKS MCP Server
Amazon EKS MCP Server는 AI 코드 어시스턴트가 EKS 클러스터를 생성, 운영, 문제 해결할 수 있도록 지원하는 리소스 관리 및 상태 가시화 서버입니다.
이 MCP 서버는 LLM 기반 어시스턴트에게 컨텍스트 인식 기능과 실시간 오퍼레이션 제어 기능을 제공하여, 클러스터 셋업부터 배포, 디버깅에 이르는 전 과정을 자연어 기반으로 안내할 수 있도록 도와줍니다.
1. 주요 효과
클러스터 생성, 배포, 운영, 디버깅까지 전체 워크플로우를 단순화
LLM 기반 AI 코드 어시스턴트의 실시간 리소스 관리 능력 향상
자연어 요청만으로 클러스터 설정 및 운영을 자동화
2. 핵심 기능
1. 클러스터 생성 자동화
전용 VPC, 네트워킹, EKS Auto Mode 노드풀 등을 포함한 EKS 클러스터를 생성
사용자의 자연어 요청을 AWS CloudFormation 액션으로 변환
2. 애플리케이션 배포 지원
기존 Kubernetes YAML 파일을 적용하거나,
사용자 입력에 따라 Deployment 및 Service 매니페스트를 자동 생성
3. Kubernetes 리소스 라이프사이클 관리
Pod, Service, Deployment 등의 리소스에 대해 생성(Create), 조회(Read), 수정(Update), 패치(Patch), 삭제(Delete) 지원
4. 리소스 상태 정보 조회
네임스페이스, 라벨, 필드 기준으로 Kubernetes 리소스를 필터링하여 조회 가능
EKS 인프라 및 애플리케이션 상태 파악을 간소화
5. 운영 및 디버깅 지원
특정 Pod 또는 컨테이너의 로그 조회
관련된 Kubernetes 이벤트를 추출하여 원인 분석 지원
6. 문제 해결 자동화
EKS 클러스터에서 발생하는 이슈에 대한 진단 및 해결을 위한 디버깅 툴 내장
LLM이 상황을 파악하고 적절한 해결 절차를 안내
아래는 GitBook 스타일로 재구성한 Prerequisites & Setup 문서입니다. 문단 구분과 계층적 구조, 설명을 모두 포함하여 실습 전에 필요한 모든 요소를 명확히 정리했습니다.
Prerequisites & Setup
Amazon EKS MCP Server를 사용하기 위해서는 다음과 같은 사전 준비가 필요합니다.
3. Prerequisites
1-1. Python 환경 구성
Python 3.10 이상을 설치합니다.
python3 --version
1-2. uv 패키지 매니저 설치
uv는 Python 프로젝트의 빠른 패키지 설치를 위한 도구입니다.
설치 방법:
curl -Ls https://astral.sh/uv/install.sh | sh
1-3. AWS CLI 설치 및 설정
AWS CLI를 설치하고 자격 증명을 구성합니다.
aws configure
Access Key / Secret Key / Region / Output Format 입력
EKS 클러스터 리소스를 제어하는 IAM 사용자 또는 역할로 설정
4. IAM Policy 설정
EKS MCP Server를 통해 EKS 리소스를 읽거나 제어하기 위해서는 IAM 권한 설정이 필요합니다.
2-1. Read-Only Operations Policy
클러스터 상태 조회 및 리소스 읽기 작업을 위한 최소 권한입니다:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"eks:DescribeCluster",
"eks:ListClusters",
"eks:AccessKubernetesApi",
"iam:ListRoles",
"cloudformation:DescribeStacks",
"cloudformation:ListStacks",
"ec2:DescribeSubnets",
"ec2:DescribeVpcs",
"ec2:DescribeSecurityGroups"
],
"Resource": "*"
}
]
}
위 정책은 MCP Server가 클러스터 정보, 네트워크 구성, IAM 역할 등을 읽을 수 있도록 해줍니다.
다음은 GitBook 문서 스타일로 정리한 Write Operations Policy 및 Kubernetes API Access Requirements 섹션입니다. 보안 주의사항도 강조해 포함하였습니다.
Write Operations Policy
EKS MCP Server를 통해 EKS 클러스터를 CloudFormation 템플릿(/awslabs/eks_mcp_server/templates/eks-templates/eks-with-vpc.yaml) 기반으로 생성 및 배포하려면 다음 IAM 정책이 필요합니다.
5.권장 IAM 정책
1. IAMFullAccess
클러스터 운영에 필요한 IAM 역할 및 정책을 생성하고 관리할 수 있도록 허용
2. AmazonVPCFullAccess
서브넷, 라우팅 테이블, IGW, NAT Gateway 등 VPC 리소스를 생성 및 구성 가능
3. AWSCloudFormationFullAccess
CloudFormation 스택을 생성, 업데이트, 삭제할 수 있도록 허용
4. EKS Full Access
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "eks:*",
"Resource": "*"
}
]
}
위 정책은 EKS 클러스터, 노드 그룹, 애드온 등 전반적인 클러스터 리소스를 생성 및 제어할 수 있게 합니다.
6. ⚠️ Important Security Note
--allow-write
또는--allow-sensitive-data-access
플래그를 사용할 경우, MCP 서버에 매우 강력한 권한이 부여됩니다.신뢰할 수 있는 환경에서만 이 기능을 활성화해야 하며, 프로덕션 환경에서는 제한된 Custom Policy 사용을 권장합니다.
보안 원칙: 최소 권한(Least Privilege) 기반의 정책 설계를 고려하세요.
Kubernetes API Access Requirements
EKS MCP Server가 Kubernetes API(예: Pod 생성, 로그 조회 등)를 사용하기 위해서는 다음 중 하나의 조건을 충족해야 합니다.
조건 1: 클러스터 생성자
해당 EKS 클러스터를 생성한 IAM 주체(IAM Role 또는 User)가 API를 호출하는 경우
조건 2: Access Entry 구성
API 호출 대상 클러스터에 대해 EKS Access Entry가 해당 사용자 또는 역할에 대해 명시적으로 구성되어 있어야 함
# 예시: EKS Access Entry 구성 확인
aws eks describe-access-entry --cluster-name <your-cluster> --principal-arn <your-iam-role-arn>
⚠️ Kubernetes API 호출 시 authorization error가 발생하면 위 조건을 만족하는지 확인하세요.
Quickstart: Amazon EKS MCP Server
이 가이드는 Amazon EKS MCP Server를 Cursor IDE와 Amazon Q Developer CLI에서 활용할 수 있도록 설정하는 과정을 안내합니다. 설정을 완료하면, EKS 클러스터 및 Kubernetes 리소스를 자연어 기반 명령으로 손쉽게 관리할 수 있습니다.
7. Cursor IDE 설정
1-1. MCP 서버 추가
Cursor를 실행합니다.
오른쪽 상단의 ⚙️ 설정 아이콘을 클릭합니다.
좌측 메뉴에서 MCP > Add new global MCP server 클릭
아래와 같이 EKS MCP 서버 정의를 붙여넣습니다:
{
"mcpServers": {
"awslabs.eks-mcp-server": {
"autoApprove": [],
"disabled": false,
"command": "uvx",
"args": [
"awslabs.eks-mcp-server@latest",
"--allow-write"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"transportType": "stdio"
}
}
}
✅ --allow-write 플래그는 리소스 생성/수정/삭제 기능을 허용합니다. 신뢰된 환경에서만 사용하세요.
수 분 내에 MCP 서버가 정상 등록되면 녹색 표시(Green indicator)가 나타납니다.
1-2. 프롬프트 실행
Ctrl + L (또는 ⌘ + L)을 눌러 Cursor의 채팅 패널을 엽니다.
다음과 같은 프롬프트를 입력해보세요:
‘ap-northeast-2’ 리전에 Kubernetes 버전 1.31을 사용하여 이름이 ‘my-test-cluster’인 새로운 EKS 클러스터를 생성하세요.
8. Amazon Q Developer CLI 설정
2-1. Q CLI 설치
공식 문서 또는 npm, brew 등으로 Amazon Q Developer CLI를 설치합니다. (앞선 실습에서 이미 설치했습니다.)
2-2. MCP 서버 구성
MCP 설정 파일 mcp.json을 엽니다 (예: ~/.aws/amazonq/mcp.json).
아래 내용을 추가합니다:
{
"mcpServers": {
"awslabs.eks-mcp-server": {
"command": "uvx",
"args": ["awslabs.eks-mcp-server@latest"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"autoApprove": [],
"disabled": false
}
}
}
아래는 실습에서 사용되는 mcp 3개를 합친 JSON 입니다.
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"]
},
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--headless",
"--executable-path",
"/usr/bin/google-chrome-stable"
]
},
"awslabs.eks-mcp-server": {
"command": "uvx",
"args": ["awslabs.eks-mcp-server@latest"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"autoApprove": [],
"disabled": false
}
}
}
설정을 저장하고, 다음 명령으로 MCP 도구 목록을 확인합니다:
/tools
다음은 GitBook 스타일로 구성한 Amazon EKS MCP Server 설정 가이드 - Configurations 섹션입니다. 각 설정 요소에 대해 설명과 예제를 함께 제공합니다.
Configurations
Amazon EKS MCP Server는 실행 시 다양한 인자(arguments)와 환경 변수(environment variables)를 통해 동작 방식을 설정할 수 있습니다. 이 섹션에서는 args 및 env 필드를 사용하는 방법을 다룹니다.
9. Arguments
args 필드는 MCP 서버 실행 시 전달되는 명령줄 인자를 정의합니다. 각 인자는 MCP 서버의 기능 활성화 및 동작 모드에 영향을 줍니다.
✅ 예시
{
"mcpServers": {
"awslabs.eks-mcp-server": {
"command": "uvx",
"args": [
"awslabs.eks-mcp-server@latest",
"--allow-write",
"--allow-sensitive-data-access"
],
"env": {
"AWS_PROFILE": "your-profile",
"AWS_REGION": "us-east-1"
}
}
}
}
🔹 필수 인자
awslabs.eks-mcp-server@latest
MCP 클라이언트의 최신 패키지/버전 지정자입니다.
MCP 서버를 실행하고 도구를 등록하는 데 사용됩니다.
🔹 선택 인자
--allow-write
Kubernetes 리소스에 대해 생성/수정/삭제(mutate) 작업을 허용합니다.
대상 도구: apply_yaml, generate_app_manifest, manage_k8s_resource, manage_eks_stacks, add_inline_policy 등
기본값: false (기본은 읽기 전용 모드)
예시:
"args": ["awslabs.eks-mcp-server@latest", "--allow-write"]
--allow-sensitive-data-access
로그, 이벤트, Kubernetes Secrets 등의 민감한 데이터 접근을 허용합니다.
기본값: false (기본적으로 민감 데이터는 비활성화)
예시:
"args": ["awslabs.eks-mcp-server@latest", "--allow-sensitive-data-access"]
아래는 GitBook 스타일로 정리한 Amazon EKS MCP Server의 Tools 소개 섹션입니다. 각 도구는 기능별로 분류되어 있으며, 주요 기능(Features)과 사용 가능한 파라미터(Parameters)를 함께 제공합니다.
Tools
Amazon EKS MCP Server는 EKS 클러스터와 Kubernetes 리소스를 효율적으로 관리하기 위한 다양한 도구를 제공합니다. 각 도구는 특정 작업을 자동화하며, AI 코드 어시스턴트 또는 CLI를 통해 호출할 수 있습니다.
10. EKS Cluster Management
🔧 manage_eks_stacks
CloudFormation 기반으로 EKS 클러스터와 관련 인프라를 생성, 설명, 삭제하는 도구입니다.
Features
지정한 클러스터 이름을 포함한 CloudFormation 템플릿 생성
VPC, Subnet, NAT Gateway, IAM Role, 노드 풀 등을 포함한 클러스터 배포
기존 스택 상세 조회 (상태, 출력 값, 생성 시간 등)
스택 삭제 및 자원 정리 (단, 이 도구로 생성한 스택만 대상으로 함)
Parameters
operation (generate, deploy, describe, delete)
template_file
cluster_name
11. Kubernetes Resource Management
🔧 manage_k8s_resource
개별 Kubernetes 리소스를 생성, 수정, 삭제, 조회하는 도구입니다.
Features
create, replace, patch, delete, read 등 Kubernetes 리소스 조작
Namespace가 필요한 리소스 및 불필요한 리소스 모두 처리 가능
Parameters
operation, cluster_name, kind, api_version, name, namespace(optional), body
🔧 apply_yaml
YAML 매니페스트를 클러스터에 적용하는 도구입니다.
Features
multi-document YAML 파일 지원
전체 매니페스트를 지정된 namespace에 적용
force: true로 기존 리소스 덮어쓰기 가능
Parameters
yaml_path, cluster_name, namespace, force
🔧 list_k8s_resources
지정된 리소스 종류(Kubernetes kind)의 목록을 반환합니다.
Features
메타데이터 요약 포함
namespace, label, field 기반 필터링 지원
Parameters
cluster_name, kind, api_version, namespace, label_selector, field_selector
🔧 list_api_versions
클러스터에서 사용 가능한 모든 API 버전을 나열합니다.
Features
core API (v1) 및 group API (apps/v1, networking.k8s.io/v1) 포함
Parameters
cluster_name
12. Application Support
🔧 generate_app_manifest
애플리케이션 배포용 Deployment 및 Service 매니페스트를 생성합니다.
Features
로드 밸런서 구성, 리소스 요청/제한 설정 지원
지정한 디렉토리로 YAML 출력
Parameters
app_name, image_uri, output_dir, port, replicas, cpu, memory, namespace, load_balancer_scheme
🔧 get_pod_logs
Pod의 로그를 조회합니다.
Features
시간, 라인 수, 바이트 수 기준 필터링
컨테이너별 로그 선택 가능
--allow-sensitive-data-access 필요
Parameters
cluster_name, pod_name, namespace, container_name, since_seconds, tail_lines, limit_bytes
🔧 get_k8s_events
특정 리소스에 대한 Kubernetes 이벤트를 조회합니다.
Features
이벤트 시간, 메시지, 이유, 횟수 등의 상세 정보 제공
namespaced/비-namespaced 모두 지원
--allow-sensitive-data-access 필요
Parameters
cluster_name, kind, name, namespace
13. CloudWatch Integration
🔧 get_cloudwatch_logs
EKS 클러스터 내 자원에 대한 CloudWatch 로그를 조회합니다.
Features
로그 타입(application, host 등)과 자원 종류(pod, node 등) 기반 조회
시간 범위, 필터 패턴, 출력 필드 등 지정 가능
--allow-sensitive-data-access 필요
Parameters
cluster_name, log_type, resource_type, resource_name, minutes, start_time, end_time, limit, filter_pattern, fields
🔧 get_cloudwatch_metrics
CloudWatch 지표를 조회합니다.
Features
자원별 메트릭, namespace, 통계(stat), 기간 설정 가능
Custom dimension으로 세밀한 쿼리 구성 가능
Parameters
cluster_name, metric_name, resource_type, resource_name, namespace, k8s_namespace, minutes, start_time, end_time, limit, stat, period, custom_dimensions
14. IAM Integration
🔧 get_policies_for_role
지정한 IAM 역할에 연결된 정책을 조회합니다.
Features
Assume role 정책 문서, 연결된 관리형 정책 및 인라인 정책 모두 반환
Parameters
role_name
🔧 add_inline_policy
새로운 인라인 정책을 IAM 역할에 추가합니다. 기존 정책은 수정하지 않습니다.
Features
기존 정책 이름과 충돌 시 요청 거부
JSON 객체 또는 배열 형태로 권한 정의
--allow-write 필요
Parameters
policy_name, role_name, permissions (JSON object or array)
15. Troubleshooting
🔧 search_eks_troubleshoot_guide
기능 : EKS 운영 중 발생할 수 있는 오류나 이슈에 대해 AWS 공식 가이드 기반의 해결책을 제공합니다.
주요 사례
EKS Auto Mode 노드 생성 실패
Bootstrap 오류
Controller 장애 등
출력 내용
증상 설명 (Symptoms)
단기 해결책 (Short-term Fixes)
장기 해결책 (Long-term Fixes)
파라미터
query: 해결하고자 하는 문제에 대한 키워드
Security & Permissions
16. 보안 기능
AWS 인증: 환경 변수에서 AWS 자격 증명을 불러와 사용
Kubernetes 인증: Kubernetes API를 위한 임시 자격 증명 생성
SSL 검증: 모든 Kubernetes API 호출 시 SSL 인증 필수
리소스 태깅: 생성된 모든 리소스에 태그 추가
최소 권한 원칙: 필요한 권한만 갖는 IAM Role을 사용
스택 보호: 해당 MCP 툴로 생성된 스택만 수정/삭제 가능
클라이언트 캐싱: TTL 기반의 클라이언트 보안 캐시 적용
17.고려 사항
EKS 리소스를 조작할 수 있는 AWS 자격 증명 필요
Kubernetes API 접근을 위한 임시 권한 자동 생성
VPC 및 보안 그룹 설정 필요
RBAC 설정을 통한 Kubernetes 자원 접근 제어
Kubernetes Secrets에 민감 정보 암호화 저장
EKS 클러스터의 로깅 및 모니터링 활성화 권장
18. 운영 모드별 권한 비교
모드
사용 가능 도구
Read-only (기본값)
manage_eks_stacks(describe), manage_k8s_resource(read), list_k8s_resources, get_pod_logs, get_k8s_events, get_cloudwatch_logs, get_cloudwatch_metrics, get_policies_for_role, search_eks_troubleshoot_guide, list_api_versions
Write-access (--allow-write 필요)
manage_eks_stacks(generate, deploy, delete), manage_k8s_resource(create, replace, patch, delete), apply_yaml, generate_app_manifest, add_inline_policy
✅ Auto Approve 설정 (Optional)
autoApprove 필드는 사용자의 승인 없이 지정된 MCP 도구를 자동 실행할 수 있도록 설정합니다.
"autoApprove": [
"manage_eks_stacks",
"manage_k8s_resource",
"list_k8s_resources",
"get_pod_logs",
"get_k8s_events",
"get_cloudwatch_logs",
"get_cloudwatch_metrics",
"get_policies_for_role",
"search_eks_troubleshoot_guide",
"list_api_versions"
]
19. IAM Permissions Management
🔧 add_inline_policy
기능
누락된 권한을 자동으로 부여할 수 있는 인라인 정책 생성 도구
기존 정책 수정은 불가 (새로 추가만 허용)
주의
--allow-write 활성화 필요
권한 과다 부여 방지를 위해 사전 정의된 IAM Role 사용 권장
20. Role Scoping Recommendations
전용 IAM Role을 생성하여 EKS MCP Server에서만 사용
읽기 전용 / 쓰기 전용 Role 분리
CloudTrail로 모든 API 호출 감사
정기 권한 리뷰 및 IAM Access Analyzer 활용
리소스 태깅 기반 제한 정책 적용
21. 민감 정보 처리 주의사항
❗ 중요: MCP 서버를 통해 민감 정보를 직접 전달하지 마세요
허용되지 않는 민감 정보 전달 방식
apply_yaml로 Secrets 포함 YAML 적용
프롬프트에 비밀번호, 키 등을 직접 입력
CloudFormation 템플릿에 민감 정보 포함
권장 방식
AWS Secrets Manager 또는 Parameter Store 사용
IRSA (IAM Roles for Service Accounts) 활용
적절한 RBAC 설정으로 민감 정보 접근 제한
운영 및 관리 모범 사례
이름 명확화: 클러스터 및 리소스에 의미 있는 이름 부여
네임스페이스 분리: 기능 또는 팀 단위로 리소스 구분
오류 처리: 도구 응답에 오류 포함 시 적절한 예외 처리
자원 정리: 사용하지 않는 리소스는 삭제하여 비용 절감
모니터링: EKS 및 Kubernetes 리소스 상태 주기적 확인
보안: EKS 보안 모범 사례 준수
백업: 중요한 리소스는 정기적으로 백업 수행
일반 문제 해결 팁
증상
확인 사항
Permission Error
AWS 자격 증명이 적절한 권한을 갖고 있는지 확인
CloudFormation Error
CloudFormation 콘솔에서 스택 오류 메시지 확인
Kubernetes API Error
클러스터가 실행 중이고 접근 가능한지 확인
Network Issue
VPC/Subnet/Security Group 구성 점검
MCP Client Error
MCP 서버 구성 또는 포트 확인
로그 부족
로그 레벨을 DEBUG로 설정하여 상세 로그 확보
Last updated