MCP server by TrackLine
mcp-remnawave
MCP Server for Remnawave Panel
MCP server (Model Context Protocol) providing LLM clients (Claude Desktop, Cursor, Windsurf, etc.) with tools to manage a Remnawave VPN panel.
Features
- 51 tools — full management of users, nodes, hosts, subscriptions, squads, HWID devices, and system
- 3 resources — real-time panel stats, node status, health checks
- 5 prompts — guided workflows for common tasks
- Type-safe — built on @remnawave/backend-contract for API route validation
- stdio transport — works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible client
Requirements
- Node.js >= 22
- Remnawave panel with API token (Settings > API Tokens)
Installation
git clone https://github.com/TrackLine/mcp-remnawave.git
cd mcp-remnawave
npm install
npm run build
Configuration
Create a .env file or pass environment variables:
REMNAWAVE_BASE_URL=https://vpn.example.com
REMNAWAVE_API_TOKEN=your-api-token-here
Usage with Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"remnawave": {
"command": "node",
"args": ["/absolute/path/to/remnawave-mcp/dist/index.js"],
"env": {
"REMNAWAVE_BASE_URL": "https://vpn.example.com",
"REMNAWAVE_API_TOKEN": "your-api-token-here"
}
}
}
}
Usage with Cursor / Windsurf
Add to .cursor/mcp.json or .windsurf/mcp.json in your project:
{
"mcpServers": {
"remnawave": {
"command": "node",
"args": ["/absolute/path/to/remnawave-mcp/dist/index.js"],
"env": {
"REMNAWAVE_BASE_URL": "https://vpn.example.com",
"REMNAWAVE_API_TOKEN": "your-api-token-here"
}
}
}
}
Docker
npm run build
docker compose up -d
Environment variables are passed via .env file or docker-compose.yml.
Available Tools
Users (11 tools)
| Tool | Description |
|------|-------------|
| users_list | List all users with pagination |
| users_get | Get user by UUID |
| users_get_by_username | Get user by username |
| users_get_by_short_uuid | Get user by short UUID |
| users_create | Create a new user |
| users_update | Update user settings |
| users_delete | Delete a user |
| users_enable | Enable a disabled user |
| users_disable | Disable a user |
| users_revoke_subscription | Revoke subscription (regenerate link) |
| users_reset_traffic | Reset traffic counter |
Nodes (11 tools)
| Tool | Description |
|------|-------------|
| nodes_list | List all nodes |
| nodes_get | Get node by UUID |
| nodes_create | Create a new node |
| nodes_update | Update node settings |
| nodes_delete | Delete a node |
| nodes_enable | Enable a node |
| nodes_disable | Disable a node |
| nodes_restart | Restart a specific node |
| nodes_restart_all | Restart all nodes |
| nodes_reset_traffic | Reset node traffic counter |
| nodes_reorder | Reorder nodes |
Hosts (5 tools)
| Tool | Description |
|------|-------------|
| hosts_list | List all hosts |
| hosts_get | Get host by UUID |
| hosts_create | Create a new host |
| hosts_update | Update host settings |
| hosts_delete | Delete a host |
System (8 tools)
| Tool | Description |
|------|-------------|
| system_stats | Panel statistics (users, nodes, traffic, CPU, memory) |
| system_bandwidth_stats | Bandwidth statistics |
| system_nodes_metrics | Node metrics |
| system_nodes_statistics | Node statistics |
| system_health | Panel health check |
| system_metadata | Panel version and metadata |
| system_generate_x25519 | Generate X25519 key pair |
| auth_status | Check authentication status |
Subscriptions (5 tools)
| Tool | Description |
|------|-------------|
| subscriptions_list | List all subscriptions |
| subscriptions_get_by_uuid | Get subscription by UUID |
| subscriptions_get_by_username | Get subscription by username |
| subscriptions_get_by_short_uuid | Get subscription by short UUID |
| subscription_info | Get subscription info |
Config Profiles & Inbounds (2 tools)
| Tool | Description |
|------|-------------|
| config_profiles_list | List config profiles |
| inbounds_list | List all inbounds |
Internal Squads (6 tools)
| Tool | Description |
|------|-------------|
| squads_list | List all squads |
| squads_create | Create a squad |
| squads_update | Update a squad |
| squads_delete | Delete a squad |
| squads_add_users | Add users to a squad |
| squads_remove_users | Remove users from a squad |
HWID Devices (3 tools)
| Tool | Description |
|------|-------------|
| hwid_devices_list | List user's HWID devices |
| hwid_device_delete | Delete a specific device |
| hwid_devices_delete_all | Delete all user's devices |
Resources
| URI | Description |
|-----|-------------|
| remnawave://stats | Current panel statistics |
| remnawave://nodes | All nodes status |
| remnawave://health | Panel health status |
| remnawave://users/{uuid} | Specific user details |
Prompts
| Prompt | Description |
|--------|-------------|
| create_user_wizard | Step-by-step user creation guide |
| node_diagnostics | Node troubleshooting |
| traffic_report | Traffic usage report |
| user_audit | Complete user audit |
| bulk_user_cleanup | Find and manage expired users |
Example Queries
"Show me all users with expired subscriptions"
"Create user vasya with 50 GB limit for one month"
"Restart node amsterdam-01"
"Give me a traffic report for the last week"
"Disable users who exceeded their traffic limit"
"Which nodes are offline right now?"
Project Structure
src/
├── index.ts # Entry point (stdio transport)
├── server.ts # McpServer setup
├── config.ts # Environment config
├── client/
│ └── index.ts # Remnawave HTTP client
├── tools/
│ ├── helpers.ts # Result formatting helpers
│ ├── index.ts # Tool registration
│ ├── users.ts # User management
│ ├── nodes.ts # Node management
│ ├── hosts.ts # Host management
│ ├── system.ts # System & auth
│ ├── subscriptions.ts # Subscriptions
│ ├── inbounds.ts # Config profiles & inbounds
│ ├── squads.ts # Internal squads
│ └── hwid.ts # HWID devices
├── resources/
│ └── index.ts # MCP resources
└── prompts/
└── index.ts # MCP prompts
License
MIT
MCP-сервер для Remnawave Panel
MCP-сервер (Model Context Protocol), предоставляющий LLM-клиентам (Claude Desktop, Cursor, Windsurf и др.) инструменты для управления VPN-панелью Remnawave.
Возможности
- 51 инструмент — полное управление пользователями, нодами, хостами, подписками, группами, HWID-устройствами и системой
- 3 ресурса — статистика панели, статус нод, проверка здоровья в реальном времени
- 5 промптов — пошаговые сценарии для типичных задач
- Type-safe — построен на @remnawave/backend-contract для валидации API-маршрутов
- stdio транспорт — работает с Claude Desktop, Cursor, Windsurf и любым MCP-совместимым клиентом
Требования
- Node.js >= 22
- Remnawave панель с API-токеном (Настройки > API Tokens)
Установка
git clone https://github.com/TrackLine/mcp-remnawave.git
cd mcp-remnawave
npm install
npm run build
Конфигурация
Создайте файл .env или передайте переменные окружения:
REMNAWAVE_BASE_URL=https://vpn.example.com
REMNAWAVE_API_TOKEN=ваш-api-токен
Использование с Claude Desktop
Добавьте в конфигурацию Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json на macOS):
{
"mcpServers": {
"remnawave": {
"command": "node",
"args": ["/абсолютный/путь/к/remnawave-mcp/dist/index.js"],
"env": {
"REMNAWAVE_BASE_URL": "https://vpn.example.com",
"REMNAWAVE_API_TOKEN": "ваш-api-токен"
}
}
}
}
Использование с Cursor / Windsurf
Добавьте в .cursor/mcp.json или .windsurf/mcp.json вашего проекта:
{
"mcpServers": {
"remnawave": {
"command": "node",
"args": ["/абсолютный/путь/к/remnawave-mcp/dist/index.js"],
"env": {
"REMNAWAVE_BASE_URL": "https://vpn.example.com",
"REMNAWAVE_API_TOKEN": "ваш-api-токен"
}
}
}
}
Docker
npm run build
docker compose up -d
Переменные окружения передаются через .env файл или docker-compose.yml.
Доступные инструменты
Пользователи (11 инструментов)
| Инструмент | Описание |
|------------|----------|
| users_list | Список пользователей с пагинацией |
| users_get | Получить пользователя по UUID |
| users_get_by_username | Получить пользователя по username |
| users_get_by_short_uuid | Получить пользователя по short UUID |
| users_create | Создать нового пользователя |
| users_update | Обновить настройки пользователя |
| users_delete | Удалить пользователя |
| users_enable | Включить пользователя |
| users_disable | Отключить пользователя |
| users_revoke_subscription | Отозвать подписку (перегенерировать ссылку) |
| users_reset_traffic | Сбросить счётчик трафика |
Ноды (11 инструментов)
| Инструмент | Описание |
|------------|----------|
| nodes_list | Список всех нод |
| nodes_get | Получить ноду по UUID |
| nodes_create | Создать новую ноду |
| nodes_update | Обновить настройки ноды |
| nodes_delete | Удалить ноду |
| nodes_enable | Включить ноду |
| nodes_disable | Отключить ноду |
| nodes_restart | Перезапустить ноду |
| nodes_restart_all | Перезапустить все ноды |
| nodes_reset_traffic | Сбросить трафик ноды |
| nodes_reorder | Переупорядочить ноды |
Хосты (5 инструментов)
| Инструмент | Описание |
|------------|----------|
| hosts_list | Список всех хостов |
| hosts_get | Получить хост по UUID |
| hosts_create | Создать новый хост |
| hosts_update | Обновить настройки хоста |
| hosts_delete | Удалить хост |
Система (8 инструментов)
| Инструмент | Описание |
|------------|----------|
| system_stats | Статистика панели (пользователи, ноды, трафик, CPU, память) |
| system_bandwidth_stats | Статистика пропускной способности |
| system_nodes_metrics | Метрики нод |
| system_nodes_statistics | Статистика нод |
| system_health | Проверка здоровья панели |
| system_metadata | Версия и метаданные панели |
| system_generate_x25519 | Генерация пары ключей X25519 |
| auth_status | Проверка статуса аутентификации |
Подписки (5 инструментов)
| Инструмент | Описание |
|------------|----------|
| subscriptions_list | Список всех подписок |
| subscriptions_get_by_uuid | Подписка по UUID |
| subscriptions_get_by_username | Подписка по username |
| subscriptions_get_by_short_uuid | Подписка по short UUID |
| subscription_info | Информация о подписке |
Конфиг-профили и Inbounds (2 инструмента)
| Инструмент | Описание |
|------------|----------|
| config_profiles_list | Список конфиг-профилей |
| inbounds_list | Список всех inbounds |
Внутренние группы (6 инструментов)
| Инструмент | Описание |
|------------|----------|
| squads_list | Список групп |
| squads_create | Создать группу |
| squads_update | Обновить группу |
| squads_delete | Удалить группу |
| squads_add_users | Добавить пользователей в группу |
| squads_remove_users | Убрать пользователей из группы |
HWID-устройства (3 инструмента)
| Инструмент | Описание |
|------------|----------|
| hwid_devices_list | Список устройств пользователя |
| hwid_device_delete | Удалить конкретное устройство |
| hwid_devices_delete_all | Удалить все устройства пользователя |
Ресурсы
| URI | Описание |
|-----|----------|
| remnawave://stats | Текущая статистика панели |
| remnawave://nodes | Статус всех нод |
| remnawave://health | Состояние здоровья панели |
| remnawave://users/{uuid} | Данные конкретного пользователя |
Промпты
| Промпт | Описание |
|--------|----------|
| create_user_wizard | Пошаговое создание пользователя |
| node_diagnostics | Диагностика ноды |
| traffic_report | Отчёт по трафику |
| user_audit | Полный аудит пользователя |
| bulk_user_cleanup | Поиск и управление просроченными пользователями |
Примеры запросов
«Покажи мне всех пользователей с истёкшей подпиской»
«Создай пользователя vasya с лимитом 50 ГБ на месяц»
«Перезапусти ноду amsterdam-01»
«Дай отчёт по трафику за последнюю неделю»
«Отключи пользователей, которые превысили лимит трафика»
«Какие ноды сейчас офлайн?»
Структура проекта
src/
├── index.ts # Точка входа (stdio транспорт)
├── server.ts # Настройка McpServer
├── config.ts # Конфигурация окружения
├── client/
│ └── index.ts # HTTP-клиент Remnawave
├── tools/
│ ├── helpers.ts # Хелперы форматирования
│ ├── index.ts # Регистрация инструментов
│ ├── users.ts # Управление пользователями
│ ├── nodes.ts # Управление нодами
│ ├── hosts.ts # Управление хостами
│ ├── system.ts # Система и авторизация
│ ├── subscriptions.ts # Подписки
│ ├── inbounds.ts # Конфиг-профили и inbounds
│ ├── squads.ts # Внутренние группы
│ └── hwid.ts # HWID-устройства
├── resources/
│ └── index.ts # MCP-ресурсы
└── prompts/
└── index.ts # MCP-промпты
Лицензия
MIT