Metadata-Version: 2.4
Name: keenetic-mcp
Version: 0.1.0
Summary: MCP server for Keenetic routers — manage interfaces, clients, routes and system via Claude
License: MIT
Requires-Python: >=3.11
Requires-Dist: httpx<1.0.0,>=0.27.0
Requires-Dist: mcp[cli]<2.0.0,>=1.0.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# keenetic-mcp

[![CI](https://github.com/Patr56/keenetic-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Patr56/keenetic-mcp/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/keenetic-mcp)](https://pypi.org/project/keenetic-mcp/)
[![Python](https://img.shields.io/pypi/pyversions/keenetic-mcp)](https://pypi.org/project/keenetic-mcp/)

MCP-сервер для роутеров **Keenetic** — управляй интерфейсами, смотри подключённых клиентов, маршруты и текущую скорость через Claude или любой MCP-совместимый клиент.

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

### Система

| Инструмент | Описание |
|---|---|
| `get_system_info` | Модель, версия прошивки, аптайм, использование памяти |

### Интерфейсы

| Инструмент | Описание |
|---|---|
| `get_interfaces` | Все сетевые интерфейсы — состояние, IP, MTU |
| `get_interface` | Детальная информация по одному интерфейсу |

### Клиенты и трафик

| Инструмент | Описание |
|---|---|
| `get_connected_clients` | Все устройства в сети — MAC, IP, hostname, трафик |
| `get_wifi_associations` | Wi-Fi клиенты с уровнем сигнала (RSSI/SNR) |
| `get_speed` | Текущая скорость download/upload по всем клиентам |

### Маршрутизация и WAN

| Инструмент | Описание |
|---|---|
| `get_routes` | Таблица маршрутов |
| `get_wan_status` | Состояние интернет-подключения |

### Управление (safe mode)

| Инструмент | Описание |
|---|---|
| `set_interface_state` | Поднять или опустить интерфейс |
| `reboot` | Перезагрузить роутер |

## Установка

```bash
pip install keenetic-mcp
```

## Настройка

### Переменные окружения

| Переменная | Описание | По умолчанию |
|---|---|---|
| `KEENETIC_HOST` | IP или hostname роутера | обязательно |
| `KEENETIC_USER` | Логин | `admin` |
| `KEENETIC_PASS` | Пароль | обязательно |
| `KEENETIC_SAFE_MODE` | Запретить write-операции (`1`/`true`/`yes`) | `false` |

### Claude Code (CLI)

```bash
claude mcp add keenetic-mcp \
  -e KEENETIC_HOST=192.168.1.1 \
  -e KEENETIC_PASS=your_password \
  -- keenetic-mcp
```

### Claude Desktop

В `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "keenetic": {
      "command": "keenetic-mcp",
      "env": {
        "KEENETIC_HOST": "192.168.1.1",
        "KEENETIC_USER": "admin",
        "KEENETIC_PASS": "your_password"
      }
    }
  }
}
```

## Безопасный режим (Safe Mode)

Запусти с `--safe-mode` чтобы запретить `reboot` и `set_interface_state`:

```bash
keenetic-mcp --safe-mode
# или
KEENETIC_SAFE_MODE=true keenetic-mcp
```

Три уровня приоритета (выше = важнее):

```python
# Программно
from keenetic_mcp.server import configure, mcp
configure(safe_mode=True)
mcp.run()
```

## Примеры

После настройки можно спрашивать Claude:

> «Какие устройства сейчас подключены к роутеру?»
> «Какая скорость на роутере прямо сейчас?»
> «Покажи состояние всех интерфейсов»
> «Есть ли интернет? Через какой провайдер?»
> «Перезагрузи роутер»

## Лицензия

MIT
