Skip to main content
Glama

MCP-сервер Kubernetes

Сервер протокола контекста модели Kubernetes (MCP), предоставляющий инструменты для взаимодействия с кластерами Kubernetes через стандартизированный интерфейс.

Функции

  • Обнаружение ресурсов API : получите все доступные ресурсы API в вашем кластере Kubernetes.

  • Список ресурсов : список ресурсов любого типа с дополнительной фильтрацией пространств имен и меток.

  • Сведения о ресурсах : получите подробную информацию о конкретных ресурсах Kubernetes.

  • Описание ресурса : получите полное описание ресурсов Kubernetes.

  • Журналы модулей : извлечение журналов из определенных модулей.

  • Метрики узлов : получение метрик использования ресурсов для определенных узлов.

  • Метрики Pod : получение метрик ЦП и памяти для определенных модулей.

  • Список событий : список событий в пространстве имен или для определенного ресурса.

  • Создание ресурсов : создание новых ресурсов Kubernetes из манифеста.

  • Стандартизированный интерфейс : использует протокол MCP для согласованного взаимодействия инструментов.

  • Гибкая конфигурация : поддерживает различные контексты Kubernetes и области действия ресурсов.

Related MCP server: Multi Cluster Kubernetes MCP Server

Предпосылки

  • Перейти к версии 1.20 или более поздней

  • Доступ к кластеру Kubernetes

  • kubectl настроен с соответствующим доступом к кластеру

Установка

  1. Клонируйте репозиторий:

git clone https://github.com/reza-gholizade/k8s-mcp-server.git
cd k8s-mcp-server
  1. Установить зависимости:

go mod download
  1. Сборка сервера:

go build -o k8s-mcp-server main.go

Использование

Запуск сервера

Запустите сервер:

./k8s-mcp-server

Сервер запустится и будет прослушивать stdin/stdout на предмет сообщений протокола MCP.

Доступные инструменты

1. getAPIResources

Извлекает все доступные ресурсы API в кластере Kubernetes.

Параметры:

  • 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

Описывает ресурс в кластере Kubernetes на основе заданного типа и имени, аналогично kubectl describe .

Параметры:

  • Kind (строка, обязательно): тип описываемого ресурса (например, «Pod», «Deployment»).

  • name (строка, обязательно): имя ресурса для описания

  • namespace (строка): пространство имен ресурса (если это ресурс с пространством имен)

Пример:

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

5. getPodsLogs

Извлекает журналы определенного модуля в кластере Kubernetes.

Параметры:

  • Name (строка, обязательно): Имя модуля, из которого необходимо получить журналы.

  • 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.

Параметры:

  • namespace (строка, обязательно): пространство имен модуля.

  • podName (строка, обязательно): Имя модуля.

Пример:

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

8. getEvents

Извлекает события для определенного пространства имен или ресурса в кластере Kubernetes.

Параметры:

  • namespace (string): Пространство имен, из которого нужно получить события. Если не указано, рассматриваются события из всех пространств имен (если разрешено RBAC).

  • resourceName (строка): имя определенного ресурса (например, имя Pod), по которому необходимо фильтровать события.

  • resourceKind (строка): тип конкретного ресурса (например, «Pod»), если указано resourceName .

Пример (события пространства имен):

{
  "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

Создает новый ресурс в кластере Kubernetes из манифеста YAML или JSON.

Параметры:

  • manifest (строка, обязательно): манифест YAML или JSON ресурса, который необходимо создать.

  • namespace (string, необязательно): Пространство имен, в котором создается ресурс. Если манифест содержит пространство имен, этот параметр можно опустить или использовать для его переопределения (поведение может зависеть от реализации сервера).

Пример:

{
  "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. Создайте новую функцию определения инструмента (например, MyNewTool() mcp.Tool ) в handlers/handlers.go

  2. Реализуйте функцию обработчика инструмента (например, MyNewHandler(client *k8s.Client) func(...) ) в handlers/handlers.go

  3. Зарегистрируйте инструмент и его обработчик в main.go с помощью s.AddTool()

Внося вклад

Вклады приветствуются! Подробности о том, как внести вклад в этот проект, см. на сайте CONTRIBUTING.md.

Лицензия

gholizade.net@gmail.com

Данный проект лицензирован по лицензии MIT — подробности см. в файле LICENSE .

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
14hResponse time
5wRelease cycle
9Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with Kubernetes clusters through natural language, supporting core Kubernetes operations, monitoring, security, and diagnostics.
    115
    947
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables interaction with multiple Kubernetes clusters simultaneously, providing comprehensive tools for cluster management, resource operations, and diagnostics across different environments.
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server for Kubernetes that provides full resource coverage and advanced troubleshooting tools via HTTP chunked streaming. It enables users to manage clusters and diagnose complex issues like pod crashloops through specialized prompts and standard kubectl-like operations.
    12,374
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server for generating Kubernetes manifests (deployments, services, configmaps, secrets, ingresses, namespaces) and performing kubectl operations like apply, delete, get, describe, logs, and exec.
    MIT

View all related MCP servers

Related MCP Connectors

  • An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform

  • A MCP server built for developers enabling Git based project management with project and personal…

  • MCP server for InsForge BaaS — database, storage, edge functions, and deployments

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/reza-gholizade/k8s-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server