Skip to main content
Glama
README.md
# Hostkey MCP Server (RU)

MCP-сервер для [Hostkey](https://hostkey.ru/) (портал **.ru**, InvAPI `invapi.hostkey.ru`).
Клиент запускает сервер локально по stdio — из Cursor, VS Code и других MCP-клиентов.

| | |
|---|---|
| **Endpoint** | `https://invapi.hostkey.ru` (зашит в код) |
| **Авторизация** | `HOSTKEY_API_KEY` |
| **Инструменты** | 132 типизированных + `call_api_raw` |

Сервер даёт модели доступ к аккаунту Hostkey: серверы, каталог и заказ, питание, переустановка ОС,
сеть, DNS, снапшоты, IPMI/консоль, ISO, S3, Remote Hands, биллинг и API-ключи.

Для портала **.com** — отдельный пакет `hostkey-mcp-server`.

## 1. Получите API-ключ

[InvAPI](https://invapi.hostkey.ru) → управление API-ключами → выпустите ключ.

Лучше отдельный ключ для MCP. Ключ на один сервер ограничивает доступ этим сервером.
Для записи DNS нужны права `pdns/edit`.

## 2. Установка

### Cursor

`.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "hostkey-mcp-server-ru": {
      "command": "npx",
      "args": ["-y", "hostkey-mcp-server-ru"],
      "env": {
        "HOSTKEY_API_KEY": "your-api-key"
      }
    }
  }
}
```

### VS Code

`.vscode/mcp.json`:

```json
{
  "mcp.servers": {
    "hostkey-mcp-server-ru": {
      "command": "npx",
      "args": ["-y", "hostkey-mcp-server-ru"],
      "env": {
        "HOSTKEY_API_KEY": "your-api-key"
      }
    }
  }
}
```

Опционально: `HOSTKEY_TOKEN_TTL`, `HOSTKEY_HTTP_TIMEOUT`, `HOSTKEY_ALLOW_DESTRUCTIVE`
(см. `.env.example`).

Из исходников (Node.js ≥ 20): `npm install && npm run build`.

## 3. Подтверждение опасных операций

Все write-вызовы требуют `confirm=true`. Без него сервер ничего не меняет.

Дополнительно:

- заказ сервера по умолчанию в `dry_run` — реальный заказ только после явного согласия;
- переустановка ОС, PXE и отмена услуг — только при `HOSTKEY_ALLOW_DESTRUCTIVE=1`;
- пароли и токены в ответах маскируются.

Долгие операции (деплой, переустановка) возвращают callback-ключ — статус через `check_task`.

## 4. Инструменты

Группы (полный список виден клиенту в `tools/list`):

| Группа | Примеры |
|---|---|
| Серверы | `get_servers`, `get_server`, `get_power_status` |
| Каталог | `list_presets`, `list_os`, `list_traffic_plans` |
| Питание и заказ | `power_on`, `power_off`, `order_server`, `reinstall_server` |
| PXE | `create_reinstall_task` → … → `clear_pxe_config` |
| Сеть / DNS | порты, PTR, зоны и записи |
| Снапшоты, ISO, S3 | ВМ-снапшоты, образы, бакеты |
| Remote Hands | тикеты дежурной смене (`request_rh_*`, `rhr_*`) |
| Биллинг | счета, платежи, контакты |
| Прочее | `check_task`, `call_api_raw` |

## Промпты

| Промпт | Зачем |
|---|---|
| `order_server_prompt` | заказ сервера по шагам |
| `reinstall_server_prompt` | переустановка ОС |
| `troubleshoot_server_prompt` | диагностика |

Или просто напишите: «покажи мои серверы» / «закажи VPS в NL» — модель выберет нужные инструменты.

TDQS

B3.2/5.0

Scored across 132 tools

Disambiguation3/5

Most tools have distinct verb_noun names and clear descriptions, but with 132 tools there are several closely related pairs (e.g., get_servers vs get_server, s3_get_buckets vs s3_get_buckets_via_queue, create_reinstall_task vs reinstall_server) that could cause misselection. The catch-all call_api_raw also overlaps with many typed tools, increasing ambiguity.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern (get_, list_, create_, delete_, etc.) with domain prefixes like s3_, request_rh_, and pdns_. While there are minor deviations (e.g., port_on vs set_main_ip, or occasional camelCase like add_iso_image), the overall schema is predictable and readable.

Tool Count1/5

132 tools is an extreme count, far exceeding the 50+ threshold considered appropriate. Even for a comprehensive cloud provider API, this volume overwhelms an agent's tool-selection capability and significantly increases the chance of misselection. The server would benefit from consolidation or hierarchical grouping.

Completeness4/5

The tool surface covers CRUD and lifecycle operations across multiple domains: servers, network, DNS, S3, billing, and remote hands. Obvious gaps are rare (e.g., no direct server rename or tag edit tool, but these are edge cases). The presence of a raw API call tool also fills potential holes, so agents can accomplish most tasks.

Maintenance

ActivityMaintained
ResponsivenessNo issues