k8s-mcp-server

Integrations

  • Provides a comprehensive interface for managing Kubernetes clusters, including resource discovery, listing, detailed inspection, log retrieval, metrics collection, event tracking, and resource creation through a standardized MCP protocol.

  • Supports creation of Kubernetes resources from YAML manifests, enabling deployment of complex resources through the createorUpdateResource tool.

쿠버네티스 MCP 서버

표준화된 인터페이스를 통해 Kubernetes 클러스터와 상호 작용하기 위한 도구를 제공하는 Kubernetes 모델 컨텍스트 프로토콜(MCP) 서버입니다.

특징

  • API 리소스 검색 : Kubernetes 클러스터에서 사용 가능한 모든 API 리소스를 가져옵니다.
  • 리소스 목록 : 선택적 네임스페이스 및 레이블 필터링을 사용하여 모든 유형의 리소스를 나열합니다.
  • 리소스 세부 정보 : 특정 Kubernetes 리소스에 대한 자세한 정보를 얻으세요
  • 리소스 설명 : Kubernetes 리소스에 대한 포괄적인 설명을 얻으세요
  • Pod 로그 : 특정 Pod에서 로그 검색
  • 노드 메트릭 : 특정 노드에 대한 리소스 사용 메트릭 가져오기
  • Pod 메트릭 : 특정 Pod에 대한 CPU 및 메모리 메트릭 가져오기
  • 이벤트 목록 : 네임스페이스 내의 이벤트나 특정 리소스에 대한 이벤트를 나열합니다.
  • 리소스 생성 : 매니페스트에서 새로운 Kubernetes 리소스를 생성합니다.
  • 표준화된 인터페이스 : 일관된 도구 상호 작용을 위해 MCP 프로토콜을 사용합니다.
  • 유연한 구성 : 다양한 Kubernetes 컨텍스트 및 리소스 범위 지원

필수 조건

  • 1.20 이상으로 가세요
  • Kubernetes 클러스터에 대한 액세스
  • 적절한 클러스터 액세스로 구성된 kubectl

설치

  1. 저장소를 복제합니다.

지엑스피1

  1. 종속성 설치:
go mod download
  1. 서버를 빌드하세요:
go build -o k8s-mcp-server main.go

용법

서버 시작

서버를 실행합니다:

./k8s-mcp-server

서버가 시작되어 stdin/stdout에서 MCP 프로토콜 메시지를 수신합니다.

사용 가능한 도구

1. getAPIResources

Kubernetes 클러스터에서 사용 가능한 모든 API 리소스를 검색합니다.

매개변수:

  • includeNamespaceScoped (부울): 네임스페이스 범위 리소스를 포함할지 여부(기본값은 true)
  • includeClusterScoped (부울): 클러스터 범위 리소스를 포함할지 여부(기본값은 true)

예:

{ "jsonrpc": "2.0", "id": 1, "method": "getAPIResources", "params": { "arguments": { "includeNamespaceScoped": true, "includeClusterScoped": true } } }
2. listResources

특정 리소스 유형의 모든 인스턴스를 나열합니다.

매개변수:

  • Kind (문자열, 필수): 나열할 리소스 종류(예: "Pod", "Deployment")
  • namespace (문자열): 리소스를 나열할 네임스페이스(생략하면 네임스페이스가 지정된 리소스에 대한 모든 네임스페이스 목록이 나열됨)
  • labelSelector (문자열): 레이블 선택기로 리소스 필터링

예:

{ "jsonrpc": "2.0", "id": 1, "method": "listResources", "params": { "arguments": { "Kind": "Pod", "namespace": "default", "labelSelector": "app=nginx" } } }
3. getResource

특정 리소스에 대한 자세한 정보를 검색합니다.

매개변수:

  • kind (문자열, 필수): 가져올 리소스 종류(예: "Pod", "Deployment")
  • name (문자열, 필수): 가져올 리소스의 이름
  • namespace (문자열): 리소스의 네임스페이스(네임스페이스가 지정된 리소스인 경우)

예:

{ "jsonrpc": "2.0", "id": 1, "method": "getResource", "params": { "arguments": { "kind": "Pod", "name": "nginx-pod", "namespace": "default" } } }
4. describeResource

kubectl describe 와 유사하게, 주어진 종류와 이름을 기반으로 Kubernetes 클러스터의 리소스를 설명합니다.

매개변수:

  • Kind (문자열, 필수): 설명할 리소스 종류(예: "Pod", "Deployment")
  • name (문자열, 필수): 설명할 리소스의 이름
  • namespace (문자열): 리소스의 네임스페이스(네임스페이스가 지정된 리소스인 경우)

예:

{ "jsonrpc": "2.0", "id": 1, "method": "describeResource", "params": { "arguments": { "Kind": "Pod", "name": "nginx-pod", "namespace": "default" } } }
5. getPodsLogs

Kubernetes 클러스터의 특정 Pod 로그를 검색합니다.

매개변수:

  • Name (문자열, 필수): 로그를 가져올 Pod의 이름입니다.
  • namespace (문자열): 포드의 네임스페이스(네임스페이스가 지정된 리소스인 경우)

예:

{ "jsonrpc": "2.0", "id": 1, "method": "getPodsLogs", "params": { "arguments": { "Name": "my-app-pod-12345", "namespace": "production" } } }
6. getNodeMetrics

Kubernetes 클러스터의 특정 노드에 대한 리소스 사용 지표를 검색합니다.

매개변수:

  • Name (문자열, 필수): 메트릭을 가져올 노드의 이름입니다.

예:

{ "jsonrpc": "2.0", "id": 1, "method": "getNodeMetrics", "params": { "arguments": { "Name": "worker-node-1" } } }
7. getPodMetrics

Kubernetes 클러스터의 특정 Pod에 대한 CPU 및 메모리 메트릭을 검색합니다.

매개변수:

  • namespace (문자열, 필수): Pod의 네임스페이스입니다.
  • podName (문자열, 필수): Pod의 이름입니다.

예:

{ "jsonrpc": "2.0", "id": 1, "method": "getPodMetrics", "params": { "arguments": { "namespace": "default", "podName": "my-app-pod-67890" } } }
8. getEvents

Kubernetes 클러스터의 특정 네임스페이스 또는 리소스에 대한 이벤트를 검색합니다.

매개변수:

  • namespace (문자열): 이벤트를 가져올 네임스페이스입니다. 생략하면 모든 네임스페이스의 이벤트가 고려됩니다(RBAC에서 허용하는 경우).
  • resourceName (문자열): 이벤트를 필터링할 특정 리소스의 이름(예: Pod 이름)입니다.
  • resourceKind (문자열): resourceName 제공된 경우 특정 리소스의 종류(예: "Pod")입니다.

예(네임스페이스 이벤트):

{ "jsonrpc": "2.0", "id": 1, "method": "getEvents", "params": { "arguments": { "namespace": "default" } } }

예(리소스 이벤트):

{ "jsonrpc": "2.0", "id": 1, "method": "getEvents", "params": { "arguments": { "namespace": "production", "resourceName": "my-app-pod-12345", "resourceKind": "Pod" } } }
9. createorUpdateResource

YAML 또는 JSON 매니페스트에서 Kubernetes 클러스터에 새 리소스를 만듭니다.

매개변수:

  • manifest (문자열, 필수): 생성할 리소스의 YAML 또는 JSON 매니페스트입니다.
  • namespace (문자열, 선택 사항): 리소스를 생성할 네임스페이스입니다. 매니페스트에 네임스페이스가 포함된 경우, 이 매개변수를 생략하거나 이를 재정의하는 데 사용할 수 있습니다(서버 구현에 따라 동작이 달라질 수 있음).

예:

{ "jsonrpc": "2.0", "id": 1, "method": "createResource", "params": { "arguments": { "namespace": "default", "manifest": "apiVersion: v1\nkind: Pod\nmetadata:\n name: my-new-pod\nspec:\n containers:\n - name: nginx\n image: nginx:latest" } } }

개발

프로젝트 구조

. ├── handlers/ # Tool handlers │ └── handlers.go # Implementation of MCP tools ├── pkg/ # Internal packages │ └── k8s/ # Kubernetes client implementation ├── main.go # Server entry point ├── go.mod # Go module definition └── go.sum # Go module checksums

새로운 도구 추가

새로운 도구를 추가하려면:

  1. handlers/handlers.go 에 새 도구 정의 함수(예: MyNewTool() mcp.Tool )를 만듭니다.
  2. handlers/handlers.go 에 도구 핸들러 함수(예: MyNewHandler(client *k8s.Client) func(...) )를 구현합니다.
  3. s.AddTool() 사용하여 main.go 에 도구와 해당 핸들러를 등록합니다.

기여하다

참여를 환영합니다! 이 프로젝트에 기여하는 방법에 대한 자세한 내용은 CONTRIBUTING.md를 참조하세요.

특허

gholizade.net@gmail.com

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

-
security - not tested
A
license - permissive license
-
quality - not tested

local-only server

The server can only run on the client's local machine because it depends on local resources.

표준화된 인터페이스를 통해 Kubernetes 클러스터와 상호 작용하기 위한 도구를 제공하는 Kubernetes 모델 컨텍스트 프로토콜(MCP) 서버입니다.

  1. 특징
    1. 필수 조건
      1. 설치
        1. 용법
          1. 서버 시작
          2. 사용 가능한 도구
        2. 개발
          1. 프로젝트 구조
          2. 새로운 도구 추가
        3. 기여하다
          1. 특허

            Related MCP Servers

            • -
              security
              A
              license
              -
              quality
              This project is intended as a both MCP server connecting to Kubernetes and a library to build more servers for any custom resources in Kubernetes.
              Last updated -
              267
              Go
              MIT License
              • Linux
              • Apple

            View all related MCP servers

            ID: 3a39wbpiwp