Skip to main content
Glama
romati88

Yandex Cloud MCP Server

by romati88
README.md
# Yandex Cloud MCP Server

🚀 НЕ официальный **MCP сервер** для управления ресурсами Yandex Cloud с поддержкой **cloud/organization уровня**.

Предоставляет функционал только для чтения (read-only API) следующих ресурсов Yandex Cloud: VMs, сети, диски, образы, зоны доступности, IP адреса и многое другое.

## Возможности

📚 **Полное покрытие API** - все операции чтения Compute, VPC и Disks/Snapshots  
🏗️ **Многоуровневый доступ** - folder/cloud/organization уровни  
🧠 **Умная навигация** - автоматическое определение scope и подсказки  
🔐 **Гибкая аутентификация** - через переменные окружения или интерактивно в Claude  

## Установка и настройка

### Вариант 1: Запуск через uv (для разработки)

```bash
# Установка зависимостей
uv sync

# Настройка аутентификации
export YC_TOKEN="your_iam_token_here"
export YC_FOLDER_ID="your_folder_id_here"

# Запуск сервера
uv run mcp_server.py
```

### Вариант 2: Запуск через Podman (для продакшена)

```bash
# Сборка образа
podman build -t yandex-cloud-mcp .

# Запуск контейнера
podman run -i --rm \
  -e YC_TOKEN="your_iam_token_here" \
  -e YC_FOLDER_ID="your_folder_id_here" \
  yandex-cloud-mcp
```

## Подключение к Claude AI Desktop

Добавьте в `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "yandex-cloud": {
      "command": "podman",
      "args": [
        "run", "-i", "--rm",
        "-e", "YC_TOKEN=your_token",
        "-e", "YC_FOLDER_ID=your_folder",
        "yandex-cloud-mcp"
      ]
    }
  }
}
```

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

```
# Настройка учетных данных (опционально - можно в переменных окружения)
Настрой учетные данные для Yandex Cloud: IAM токен t1.xxx... и folder ID b1gxxx...

# Основные операции
Покажи список всех виртуальных машин
Покажи все сети и подсети
Покажи контекст организации со всеми облаками
Посоветуй scope для запроса дисков
```

## Получение учетных данных

**IAM токен:**
```bash
yc iam create-token
```

**Folder ID:**
```bash
yc config list
```

## Тестирование

```bash
export YC_TOKEN="your_token"
export YC_FOLDER_ID="your_folder_id"
uv run test_server.py
```

## Архитектура

```
src/yandex_cloud_mcp/
├── server.py          # Основной MCP сервер
├── credentials.py     # Управление учетными данными
├── compute.py         # ВМ, образы, зоны, типы дисков
├── network.py         # Сети, подсети, маршруты, IP, шлюзы
├── storage.py         # Диски и снапшоты
├── resource_manager.py # Cloud/Organization уровень
└── config.py          # Конфигурация
```

## Полный перечень функций

### 🔐 Управление учетными данными
- `setup_credentials(iam_token, folder_id)` - настройка учетных данных
- `get_credentials_status()` - проверка статуса учетных данных  
- `clear_credentials()` - очистка учетных данных

### 🏢 Cloud/Organization уровень
- `list_yandex_clouds(organization_id)` - список облаков в организации
- `get_cloud_details_info(cloud_id)` - детальная информация об облаке
- `list_yandex_folders(cloud_id)` - список папок (с автоопределением cloud_id)
- `get_folder_details_info(folder_id)` - детальная информация о папке
- `get_yandex_organization_context()` - полная иерархия организации
- `suggest_query_scope(resource_type)` - рекомендации по выбору scope

### 💻 Compute ресурсы
**Виртуальные машины:**
- `list_virtual_machines(folder_id)` - список ВМ
- `get_virtual_machine_config(instance_id)` - конфигурация ВМ

**Образы и инфраструктура:**
- `list_compute_images(folder_id)` - список образов
- `get_image_configuration(image_id)` - конфигурация образа
- `list_availability_zones()` - список зон доступности
- `get_zone_configuration(zone_id)` - конфигурация зоны
- `list_compute_disk_types(zone_id)` - типы дисков
- `get_disk_type_configuration(disk_type_id)` - конфигурация типа диска

### 🌐 VPC сетевые ресурсы
**Основные сети:**
- `list_vpc_networks(folder_id)` - список сетей
- `get_network_configuration(network_id)` - конфигурация сети
- `list_vpc_subnets(folder_id)` - список подсетей  
- `get_subnet_configuration(subnet_id)` - конфигурация подсети

**Безопасность и маршрутизация:**
- `list_vpc_security_groups(folder_id)` - список групп безопасности
- `get_security_group_details(security_group_id)` - конфигурация группы с правилами
- `list_vpc_route_tables(folder_id)` - список таблиц маршрутизации
- `get_route_table_configuration(route_table_id)` - конфигурация таблицы маршрутов

**IP адреса и шлюзы:**
- `list_vpc_addresses(folder_id)` - список статических IP адресов
- `get_address_configuration(address_id)` - конфигурация IP адреса
- `list_vpc_gateways(folder_id)` - список шлюзов
- `get_gateway_configuration(gateway_id)` - конфигурация шлюза

### 💾 Storage ресурсы
- `list_storage_disks(folder_id)` - список дисков
- `get_disk_details(disk_id)` - конфигурация диска
- `list_disk_snapshots(folder_id)` - список снапшотов
- `get_snapshot_details(snapshot_id)` - конфигурация снапшота

TDQS

B3/5.0

Scored across 33 tools

Disambiguation5/5

Every tool targets a distinct resource type with a clear list/get distinction, so there is no overlap. Credential tools are also clearly separated by action.

Naming Consistency5/5

All tools use consistent snake_case with verb_noun patterns (list_*, get_*, setup_*, clear_*), making the action and resource immediately obvious.

Tool Count2/5

With 33 tools, the server exceeds the recommended range and feels bloated. Many list/get pairs could be consolidated or served via parameters.

Completeness2/5

The tool surface is entirely read-only, covering only list and get operations. There are no create, update, or delete operations, leaving significant gaps for actual cloud management.

Maintenance

ActivityInactive
ResponsivenessNo issues