mcp-remnawave
English | Русский
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