쿠버네티스 MCP 서버
표준화된 인터페이스를 통해 Kubernetes 클러스터와 상호 작용하기 위한 도구를 제공하는 Kubernetes 모델 컨텍스트 프로토콜(MCP) 서버입니다.
특징
API 리소스 검색 : Kubernetes 클러스터에서 사용 가능한 모든 API 리소스를 가져옵니다.
리소스 목록 : 선택적 네임스페이스 및 레이블 필터링을 사용하여 모든 유형의 리소스를 나열합니다.
리소스 세부 정보 : 특정 Kubernetes 리소스에 대한 자세한 정보를 얻으세요
리소스 설명 : Kubernetes 리소스에 대한 포괄적인 설명을 얻으세요
Pod 로그 : 특정 Pod에서 로그 검색
노드 메트릭 : 특정 노드에 대한 리소스 사용 메트릭 가져오기
Pod 메트릭 : 특정 Pod에 대한 CPU 및 메모리 메트릭 가져오기
이벤트 목록 : 네임스페이스 내의 이벤트나 특정 리소스에 대한 이벤트를 나열합니다.
리소스 생성 : 매니페스트에서 새로운 Kubernetes 리소스를 생성합니다.
표준화된 인터페이스 : 일관된 도구 상호 작용을 위해 MCP 프로토콜을 사용합니다.
유연한 구성 : 다양한 Kubernetes 컨텍스트 및 리소스 범위 지원
Related MCP server: MCP Server
필수 조건
1.20 이상으로 가세요
Kubernetes 클러스터에 대한 액세스
적절한 클러스터 액세스로 구성된
kubectl
설치
저장소를 복제합니다.
지엑스피1
종속성 설치:
서버를 빌드하세요:
용법
서버 시작
서버를 실행합니다:
서버가 시작되어 stdin/stdout에서 MCP 프로토콜 메시지를 수신합니다.
사용 가능한 도구
1. getAPIResources
Kubernetes 클러스터에서 사용 가능한 모든 API 리소스를 검색합니다.
매개변수:
includeNamespaceScoped(부울): 네임스페이스 범위 리소스를 포함할지 여부(기본값은 true)includeClusterScoped(부울): 클러스터 범위 리소스를 포함할지 여부(기본값은 true)
예:
2. listResources
특정 리소스 유형의 모든 인스턴스를 나열합니다.
매개변수:
Kind(문자열, 필수): 나열할 리소스 종류(예: "Pod", "Deployment")namespace(문자열): 리소스를 나열할 네임스페이스(생략하면 네임스페이스가 지정된 리소스에 대한 모든 네임스페이스 목록이 나열됨)labelSelector(문자열): 레이블 선택기로 리소스 필터링
예:
3. getResource
특정 리소스에 대한 자세한 정보를 검색합니다.
매개변수:
kind(문자열, 필수): 가져올 리소스 종류(예: "Pod", "Deployment")name(문자열, 필수): 가져올 리소스의 이름namespace(문자열): 리소스의 네임스페이스(네임스페이스가 지정된 리소스인 경우)
예:
4. describeResource
kubectl describe 와 유사하게, 주어진 종류와 이름을 기반으로 Kubernetes 클러스터의 리소스를 설명합니다.
매개변수:
Kind(문자열, 필수): 설명할 리소스 종류(예: "Pod", "Deployment")name(문자열, 필수): 설명할 리소스의 이름namespace(문자열): 리소스의 네임스페이스(네임스페이스가 지정된 리소스인 경우)
예:
5. getPodsLogs
Kubernetes 클러스터의 특정 Pod 로그를 검색합니다.
매개변수:
Name(문자열, 필수): 로그를 가져올 Pod의 이름입니다.namespace(문자열): 포드의 네임스페이스(네임스페이스가 지정된 리소스인 경우)
예:
6. getNodeMetrics
Kubernetes 클러스터의 특정 노드에 대한 리소스 사용 지표를 검색합니다.
매개변수:
Name(문자열, 필수): 메트릭을 가져올 노드의 이름입니다.
예:
7. getPodMetrics
Kubernetes 클러스터의 특정 Pod에 대한 CPU 및 메모리 메트릭을 검색합니다.
매개변수:
namespace(문자열, 필수): Pod의 네임스페이스입니다.podName(문자열, 필수): Pod의 이름입니다.
예:
8. getEvents
Kubernetes 클러스터의 특정 네임스페이스 또는 리소스에 대한 이벤트를 검색합니다.
매개변수:
namespace(문자열): 이벤트를 가져올 네임스페이스입니다. 생략하면 모든 네임스페이스의 이벤트가 고려됩니다(RBAC에서 허용하는 경우).resourceName(문자열): 이벤트를 필터링할 특정 리소스의 이름(예: Pod 이름)입니다.resourceKind(문자열):resourceName제공된 경우 특정 리소스의 종류(예: "Pod")입니다.
예(네임스페이스 이벤트):
예(리소스 이벤트):
9. createorUpdateResource
YAML 또는 JSON 매니페스트에서 Kubernetes 클러스터에 새 리소스를 만듭니다.
매개변수:
manifest(문자열, 필수): 생성할 리소스의 YAML 또는 JSON 매니페스트입니다.namespace(문자열, 선택 사항): 리소스를 생성할 네임스페이스입니다. 매니페스트에 네임스페이스가 포함된 경우, 이 매개변수를 생략하거나 이를 재정의하는 데 사용할 수 있습니다(서버 구현에 따라 동작이 달라질 수 있음).
예:
개발
프로젝트 구조
새로운 도구 추가
새로운 도구를 추가하려면:
handlers/handlers.go에 새 도구 정의 함수(예:MyNewTool() mcp.Tool)를 만듭니다.handlers/handlers.go에 도구 핸들러 함수(예:MyNewHandler(client *k8s.Client) func(...))를 구현합니다.s.AddTool()사용하여main.go에 도구와 해당 핸들러를 등록합니다.
기여하다
참여를 환영합니다! 이 프로젝트에 기여하는 방법에 대한 자세한 내용은 CONTRIBUTING.md를 참조하세요.
특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.