remnawave-mcp

remnawave-mcp

An MCP server that enables LLM clients to manage Remnawave VPN panels through 51 specialized tools for user, node, and subscription administration. It provides real-time access to panel statistics, health checks, and guided workflows for system diagnostics.

Category
Visit Server

README

mcp-remnawave

English | Русский


<a id="english"></a>

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
  • Readonly mode — restrict to read-only operations for safe monitoring
  • Caddy supportX-Api-Key header for panels behind Caddy with custom path
  • 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:

Variable Required Description
REMNAWAVE_BASE_URL Yes Panel URL (e.g. https://vpn.example.com)
REMNAWAVE_API_TOKEN Yes API token from panel settings
REMNAWAVE_API_KEY No API key for Caddy reverse proxy authentication
REMNAWAVE_READONLY No Set to true to enable readonly mode
REMNAWAVE_BASE_URL=https://vpn.example.com
REMNAWAVE_API_TOKEN=your-api-token-here

Caddy with Custom Path

If your Remnawave panel is deployed behind Caddy with a custom path and API key protection, set the base URL to include the custom path and provide the API key:

REMNAWAVE_BASE_URL=https://example.com/your-secret-path/api
REMNAWAVE_API_KEY=your-caddy-api-key

The X-Api-Key header will be added to every request automatically.

Readonly Mode

Set REMNAWAVE_READONLY=true to disable all write operations (create, update, delete, enable, disable, restart, revoke, reset). Only read/list tools will be registered.

Useful for monitoring dashboards or shared environments where you want to prevent accidental changes.

In readonly mode, the available tools are reduced from 51 to 21:

Category Available tools
Users users_list, users_get, users_get_by_username, users_get_by_short_uuid
Nodes nodes_list, nodes_get
Hosts hosts_list, hosts_get
System all 8 tools (read-only by nature)
Subscriptions all 5 tools (read-only by nature)
Config Profiles all 2 tools (read-only by nature)
Squads squads_list
HWID hwid_devices_list

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",
        "REMNAWAVE_API_KEY": "your-caddy-api-key",
        "REMNAWAVE_READONLY": "false"
      }
    }
  }
}

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",
        "REMNAWAVE_API_KEY": "your-caddy-api-key",
        "REMNAWAVE_READONLY": "false"
      }
    }
  }
}

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 Mode
users_list List all users with pagination read
users_get Get user by UUID read
users_get_by_username Get user by username read
users_get_by_short_uuid Get user by short UUID read
users_create Create a new user write
users_update Update user settings write
users_delete Delete a user write
users_enable Enable a disabled user write
users_disable Disable a user write
users_revoke_subscription Revoke subscription (regenerate link) write
users_reset_traffic Reset traffic counter write

Nodes (11 tools)

Tool Description Mode
nodes_list List all nodes read
nodes_get Get node by UUID read
nodes_create Create a new node write
nodes_update Update node settings write
nodes_delete Delete a node write
nodes_enable Enable a node write
nodes_disable Disable a node write
nodes_restart Restart a specific node write
nodes_restart_all Restart all nodes write
nodes_reset_traffic Reset node traffic counter write
nodes_reorder Reorder nodes write

Hosts (5 tools)

Tool Description Mode
hosts_list List all hosts read
hosts_get Get host by UUID read
hosts_create Create a new host write
hosts_update Update host settings write
hosts_delete Delete a host write

System (8 tools)

Tool Description Mode
system_stats Panel statistics (users, nodes, traffic, CPU, memory) read
system_bandwidth_stats Bandwidth statistics read
system_nodes_metrics Node metrics read
system_nodes_statistics Node statistics read
system_health Panel health check read
system_metadata Panel version and metadata read
system_generate_x25519 Generate X25519 key pair read
auth_status Check authentication status read

Subscriptions (5 tools)

Tool Description Mode
subscriptions_list List all subscriptions read
subscriptions_get_by_uuid Get subscription by UUID read
subscriptions_get_by_username Get subscription by username read
subscriptions_get_by_short_uuid Get subscription by short UUID read
subscription_info Get subscription info read

Config Profiles & Inbounds (2 tools)

Tool Description Mode
config_profiles_list List config profiles read
inbounds_list List all inbounds read

Internal Squads (6 tools)

Tool Description Mode
squads_list List all squads read
squads_create Create a squad write
squads_update Update a squad write
squads_delete Delete a squad write
squads_add_users Add users to a squad write
squads_remove_users Remove users from a squad write

HWID Devices (3 tools)

Tool Description Mode
hwid_devices_list List user's HWID devices read
hwid_device_delete Delete a specific device write
hwid_devices_delete_all Delete all user's devices write

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


<a id="русский"></a>

MCP-сервер для Remnawave Panel

MCP-сервер (Model Context Protocol), предоставляющий LLM-клиентам (Claude Desktop, Cursor, Windsurf и др.) инструменты для управления VPN-панелью Remnawave.

Возможности

  • 51 инструмент — полное управление пользователями, нодами, хостами, подписками, группами, HWID-устройствами и системой
  • 3 ресурса — статистика панели, статус нод, проверка здоровья в реальном времени
  • 5 промптов — пошаговые сценарии для типичных задач
  • Readonly-режим — ограничение только чтением для безопасного мониторинга
  • Поддержка Caddy — заголовок X-Api-Key для панелей за Caddy с кастомным путём
  • 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 Да URL панели (например https://vpn.example.com)
REMNAWAVE_API_TOKEN Да API-токен из настроек панели
REMNAWAVE_API_KEY Нет API-ключ для аутентификации через Caddy reverse proxy
REMNAWAVE_READONLY Нет true для включения режима только чтения
REMNAWAVE_BASE_URL=https://vpn.example.com
REMNAWAVE_API_TOKEN=ваш-api-токен

Caddy с кастомным путём

Если ваша панель Remnawave развёрнута за Caddy с кастомным путём и защитой API-ключом, укажите полный путь в base URL и предоставьте API-ключ:

REMNAWAVE_BASE_URL=https://example.com/your-secret-path/api
REMNAWAVE_API_KEY=ваш-caddy-api-ключ

Заголовок X-Api-Key будет автоматически добавляться к каждому запросу.

Режим Readonly

Установите REMNAWAVE_READONLY=true, чтобы отключить все операции записи (создание, обновление, удаление, включение, отключение, перезапуск, отзыв, сброс). Будут зарегистрированы только инструменты чтения.

Полезно для мониторинговых дашбордов или общих окружений, где нужно исключить случайные изменения.

В readonly-режиме количество доступных инструментов сокращается с 51 до 21:

Категория Доступные инструменты
Пользователи users_list, users_get, users_get_by_username, users_get_by_short_uuid
Ноды nodes_list, nodes_get
Хосты hosts_list, hosts_get
Система все 8 инструментов (только чтение по своей природе)
Подписки все 5 инструментов (только чтение по своей природе)
Конфиг-профили все 2 инструмента (только чтение по своей природе)
Группы squads_list
HWID hwid_devices_list

Использование с 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-токен",
        "REMNAWAVE_API_KEY": "ваш-caddy-api-ключ",
        "REMNAWAVE_READONLY": "false"
      }
    }
  }
}

Использование с 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-токен",
        "REMNAWAVE_API_KEY": "ваш-caddy-api-ключ",
        "REMNAWAVE_READONLY": "false"
      }
    }
  }
}

Docker

npm run build
docker compose up -d

Переменные окружения передаются через .env файл или docker-compose.yml.

Доступные инструменты

Пользователи (11 инструментов)

Инструмент Описание Режим
users_list Список пользователей с пагинацией read
users_get Получить пользователя по UUID read
users_get_by_username Получить пользователя по username read
users_get_by_short_uuid Получить пользователя по short UUID read
users_create Создать нового пользователя write
users_update Обновить настройки пользователя write
users_delete Удалить пользователя write
users_enable Включить пользователя write
users_disable Отключить пользователя write
users_revoke_subscription Отозвать подписку (перегенерировать ссылку) write
users_reset_traffic Сбросить счётчик трафика write

Ноды (11 инструментов)

Инструмент Описание Режим
nodes_list Список всех нод read
nodes_get Получить ноду по UUID read
nodes_create Создать новую ноду write
nodes_update Обновить настройки ноды write
nodes_delete Удалить ноду write
nodes_enable Включить ноду write
nodes_disable Отключить ноду write
nodes_restart Перезапустить ноду write
nodes_restart_all Перезапустить все ноды write
nodes_reset_traffic Сбросить трафик ноды write
nodes_reorder Переупорядочить ноды write

Хосты (5 инструментов)

Инструмент Описание Режим
hosts_list Список всех хостов read
hosts_get Получить хост по UUID read
hosts_create Создать новый хост write
hosts_update Обновить настройки хоста write
hosts_delete Удалить хост write

Система (8 инструментов)

Инструмент Описание Режим
system_stats Статистика панели (пользователи, ноды, трафик, CPU, память) read
system_bandwidth_stats Статистика пропускной способности read
system_nodes_metrics Метрики нод read
system_nodes_statistics Статистика нод read
system_health Проверка здоровья панели read
system_metadata Версия и метаданные панели read
system_generate_x25519 Генерация пары ключей X25519 read
auth_status Проверка статуса аутентификации read

Подписки (5 инструментов)

Инструмент Описание Режим
subscriptions_list Список всех подписок read
subscriptions_get_by_uuid Подписка по UUID read
subscriptions_get_by_username Подписка по username read
subscriptions_get_by_short_uuid Подписка по short UUID read
subscription_info Информация о подписке read

Конфиг-профили и Inbounds (2 инструмента)

Инструмент Описание Режим
config_profiles_list Список конфиг-профилей read
inbounds_list Список всех inbounds read

Внутренние группы (6 инструментов)

Инструмент Описание Режим
squads_list Список групп read
squads_create Создать группу write
squads_update Обновить группу write
squads_delete Удалить группу write
squads_add_users Добавить пользователей в группу write
squads_remove_users Убрать пользователей из группы write

HWID-устройства (3 инструмента)

Инструмент Описание Режим
hwid_devices_list Список устройств пользователя read
hwid_device_delete Удалить конкретное устройство write
hwid_devices_delete_all Удалить все устройства пользователя write

Ресурсы

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured