# ocm-mcp-server

Даёт агенту доступ к нескольким кластерам Kubernetes через хаб Open Cluster Management. Чтение свободное, записи проходят проверку политикой и одобрение человека.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 17
- Автор: ocm-mcp-server
- Лицензия: Apache-2.0 · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/ocm-mcp-server/ocm-mcp-server
- Обновлён: 2026-10-10
- HTML: https://affpapa.org/nevibecode/mcp/ocm-mcp-server

## Что делает

Сервер ставит между моделью и кластерами прослойку: агент обращается к хабу Open Cluster Management, своих учётных данных у него нет. Запросы на изменение проверяются политикой Kyverno, требуют подписи человека и пишутся в журнал аудита. Так модель может разобрать инцидент и предложить правку, не получая прав на удаление чего угодно.

Для запуска нужен Python 3.11+ и установленный пакет `ocm-mcp-server` — можно через `pip`, а можно сразу `uvx`. Через переменные окружения передаются `KUBECONFIG`, контекст хаба `OCM_MCP_HUB_CONTEXT` и флаг `OCM_MCP_READ_ONLY`. Последний стоит включить, если агенту пока хватает диагностики: тогда записи отсекаются на входе, а не после проверки.

Имя хаба задаётся контекстом в kubeconfig — без него сервер не поймёт, к какому кластеру OCM обращаться. И вся схема держится на настроенной политике: если в хабе нет нужных правил, проверка записей превратится в формальность.

## Требования
- Нужно: Python и uv (команды через uvx)
- Переменные окружения: `KUBECONFIG`, `OCM_MCP_HUB_CONTEXT`, `OCM_MCP_READ_ONLY` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env KUBECONFIG=<KUBECONFIG> --env OCM_MCP_HUB_CONTEXT=<OCM_MCP_HUB_CONTEXT> --env OCM_MCP_READ_ONLY=<OCM_MCP_READ_ONLY> --transport stdio ocm-mcp-server -- uvx ocm-mcp-server
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from ocm-mcp-server <команда>

### Codex

**Командой платформы**
```bash
codex mcp add ocm-mcp-server --env KUBECONFIG=<KUBECONFIG> --env OCM_MCP_HUB_CONTEXT=<OCM_MCP_HUB_CONTEXT> --env OCM_MCP_READ_ONLY=<OCM_MCP_READ_ONLY> -- uvx ocm-mcp-server
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from ocm-mcp-server <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "ocm-mcp-server": {
            "command": "uvx",
            "args": [
                "ocm-mcp-server"
            ],
            "env": {
                "KUBECONFIG": "<KUBECONFIG>",
                "OCM_MCP_HUB_CONTEXT": "<OCM_MCP_HUB_CONTEXT>",
                "OCM_MCP_READ_ONLY": "<OCM_MCP_READ_ONLY>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from ocm-mcp-server <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "ocm-mcp-server": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "ocm-mcp-server"
            ],
            "env": {
                "KUBECONFIG": "<KUBECONFIG>",
                "OCM_MCP_HUB_CONTEXT": "<OCM_MCP_HUB_CONTEXT>",
                "OCM_MCP_READ_ONLY": "<OCM_MCP_READ_ONLY>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from ocm-mcp-server <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e KUBECONFIG=<KUBECONFIG> -e OCM_MCP_HUB_CONTEXT=<OCM_MCP_HUB_CONTEXT> -e OCM_MCP_READ_ONLY=<OCM_MCP_READ_ONLY> ocm-mcp-server uvx ocm-mcp-server
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from ocm-mcp-server <команда>

## Когда брать
- разобрать деградацию нагрузки сразу в нескольких кластерах
- предложить правку через ManifestWork и дождаться одобрения
- посмотреть состояние флота, не выдавая модели kubeconfig
- записать ход инцидента по журналу аудита
- проверить запись агента политикой Kyverno до применения

## Примеры запросов агенту
- Покажи, какие нагрузки деградируют в кластерах флота, и предложи исправление
- Подготовь ManifestWork с правкой лимитов и дождись моего токена на применение
- Включи режим только для чтения и собери отчёт о состоянии хаба

## Похожие
- [GitHub](https://affpapa.org/nevibecode/mcp/github.md) — MCP-сервер · ★ 33918
- [Netdata](https://affpapa.org/nevibecode/mcp/netdata.md) — MCP-сервер · ★ 81115
- [Oh My Posh Validator](https://affpapa.org/nevibecode/mcp/oh-my-posh-validator.md) — MCP-сервер · ★ 23643
- [Keploy](https://affpapa.org/nevibecode/mcp/keploy.md) — MCP-сервер · ★ 18727
- [Coder](https://affpapa.org/nevibecode/mcp/coder.md) — MCP-сервер · ★ 17160
- [mcp](https://affpapa.org/nevibecode/mcp/kubeshark-mcp.md) — MCP-сервер · ★ 12109

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
