Skip to main content
Glama

mcp-remnawave

MCP-Server für das Remnawave VPN-Panel — aktualisiert für Remnawave 3.x

Remnawave 3.x Node.js 22+ MCP License: MIT Version

English · Русский


Ermöglicht es einem MCP-Client — Claude Code, Claude Desktop, Cursor oder sonst einem — Benutzer, Nodes, Hosts, Konfigurationsprofile, Squads, Subscription-Vorlagen, Abrechnung und HWID-Geräte über die REST-API des Panels zu lesen und zu verwalten.

Gepflegter Fork von TrackLine/mcp-remnawave v1.2.0, an Remnawave 3.x angeglichen (gegen ein Live-3.3.x-Panel verifiziert) und so umgebaut, dass Tool-Schemas nicht mehr von der Panel-API abweichen können.

✨ Highlights

🔢 Numerische Benutzer-IDs

Remnawave 3.0 hat die Benutzer-uuid entfernt; jedes users_*-Tool nutzt die numerischen id, und die entfernten by-*-Routen sind durch users_list-Filter ersetzt

📜 Schemas aus dem Contract

Schreib-Tools beziehen ihr Eingabeschema direkt aus @remnawave/backend-contract — die vollständige API-Oberfl,ete, keine willkürliche Teilmenge

🧾 Echte Fehlermeldungen

Validierungsfehler kommen mit feldbezogenen Details zurück, statt nur mit vRAllidierung fehlgeschlagen

🗂 Eine Installation, viele Panels

Die Panel-Konfiguration wird zuerst im aktuellen Projekt gesucht — das aktive Panel ist das des Projekts, in dem du gerade arbeitest

🔒 Readonly als Standard

Mit REMNAWAVE_READONLY=true werden Schreib-Tools überhaupt nicht registriert

Related MCP server: remnawave-mcp-server

🚀 Schnellstart

git clone https://github.com/Maaagiic/mcp-remnawave.git
cd mcp-remnawave
npm install && npm run build

cp .env.example .env          # set REMNAWAVE_BASE_URL and REMNAWAVE_API_TOKEN

# Claude Code — available in every project:
claude mcp add --scope user remnawave -- node "$PWD/dist/index.js"

Das war's. Bitte deinen Client um system_metadata — er sollte mit der Panel-Version antworten.

{
  "mcpServers": {
    "remnawave": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-remnawave/dist/index.js"]
    }
  }
}

Jeder stdio-MCP-Client funktioniert — zeig ihn auf node dist/index.js und übergib die Umgebungsvariablen aus der Tabelle unten (oder verlass dich auf die Konfigurationsdateisuche).

⚙️ Konfiguration

Variable

Erforderlich

Beschreibung

REMNAWAVE_BASE_URL

Panel-URL, z. B. https://panel.example.com

REMNAWAVE_API_TOKEN

API-Token (Bearer) — Panel -> API-Tokens

REMNAWAVE_READONLY

true = Es werden nur Lese-Tools registriert (empfohlene Standardeinstellung)

REMNAWAVE_API_KEY

X-Api-Key für ein Caddy-Setup mit benutztem Zusatzpfad

REMNAWAVE_ENV_FILE

Expliziter Pfad zu einer Konfigurationsdatei

Woher die Konfiguration stammt

Der Server hält bei der ersten Datei an, die REMNAWAVE_BASE_URL und REMNAWAVE_API_TOKEN liefert:

1. $REMNAWAVE_ENV_FILE          explicit path
2. <cwd>/.remnawave.env         per-project — add it to .gitignore
3. <cwd>/.env
4. <package>/.env               fallback

MCP-Clients starten Stdio-Server mit cwd im Projektroot, sodass bei einer einzigen globalen Installation ** das aktive Panel das Projekt ist, in dem du gerade arbeitest**. Um ein Panel hinzuzufügen, legst du einfach eine .remnawave.env ins Projekt — am Server muss nichts geändert werden. Bereits in der Umgebung vorhandene Variablen werden niemals überschrieben, also gewinnt immer die von der Client-Registrierung übergebene Umgebung.

Readonly-Modus

Starte mit REMNAWAVE_READONLY=true. Schreib-Tools (create / update / delete / enable / disable / bulk) werden in diesem Modus überhaupt nicht eingetragen, sodass der Client es nicht einmal versuchen kann. Setze es auf false und starte den Server neu, sobald du wirklich schreiben musst.

🧰 Tools

Woelle 150 Tools, passend zur Panel-API gruppiert. Lese-Tools gibt es immer; Schreib-Tools nur, wenn der Readonly-Modus aus ist.

Laufen

Schreiben

users_list (filter · sortieren), users_get, users_get_by_username, users_get_by_short_uuid, users_resolve, users_accessible_nodes, users_tags_list

users_create, users_update, users_delete, users_enable / users_disable, users_revoke_subscription, users_reset_traffic, users_extend_expiration, users_bulk_*, users_bulk_all_*

  • Suche per telegramId / E-Mail / Tag / Status: users_list mit filters: [{"id": "telegramId", "value": 123456789}] (+ optional filterModes, sorting). Das ersetzt die in 3.x entfernten by-*-Routen.

  • users_resolve nimmt genau eine der Angaben id, shortUuid, username.

  • Bulk-Tools nehmen userIds: number[] (1–500); users_bulk_update verschachtelt geänderte Felder unter fields.

  • users_create akzeptiert explizit vlessUuid / ssPassword / trojanPassword / shortUuid — gut für Dienstkonten.

Gruppe

Lesen

Schreiben

Nodes

nodes_list, nodes_get, nodes_tags_list

nodes_create / update / delete, nodes_enable / disable, nodes_restart, nodes_restart_all, nodes_reorder, nodes_reset_traffic, nodes_bulk_*

Hosts

hosts_list, hosts_get, hosts_tags_list

hosts_create / update / delete, hosts_bulk_*

Config-Profile

config_profiles_list / get, config_profiles_get_inbounds, config_profiles_get_computed_config, inbounds_list

config_profiles_create / update / delete / reorder

  • config_profiles_update mit config ersetzt die gesamte Xray-Konfiguration des Profils — lesen, patchen, zurückschreiben.

  • hosts_create erfordert inbound: { configProfileUuid, configProfileInboundUuid }.

Gruppe

Laufen

Schreiben

Squads

squads_list, squads_accessible_nodes, external_squads_list / get

squads_create / update / delete, squads_add_users, squads_remove_users, external_squads_*

Subscriptions

subscriptions_list, subscriptions_get_by_username, subscriptions_get_by_short_uuid, subscriptions_get_by_user_id, subscriptions_get_raw_by_short_uuid, subscriptions_get_connection_keys, subscription_info

Vorlagen und Seiten

subscription_templates_list / get, sub_page_configs_list / get

subscription_templates_update, sub_page_configs_*

Gruppe

Laufen

Schreiben

HWID

hwid_devices_list, hwid_devices_list_all, hwid_stats, hwid_top_users

hwid_device_create / delete, hwid_devices_delete_all

System

system_health, system_metadata, system_stats, system_stats_recap, system_bandwidth_stats, system_nodes_metrics, system_nodes_statistics, system_generate_x25519, keygen_get, system_srr_matcher

settings_update

Abrechnung

billing_providers_list / get, billing_nodes_list, billing_history_list

billing_provider_*, billing_node_*, billing_history_*

Node-Plugins

node_plugins_list / get, node_plugins_torrent_*

node_plugins_*

Sonstiges

api_tokens_list, snippets_list, metadata_*_get, ip_control_*

pi_tokens_*, snippets_*, metadata_*_upsert

api_tokens_list und settings_* benötigen einen API-Token mit den passenden Berechtigungen — andernfalls antwortet das Panel mit Forbidden.

🔧 Änderungen gegenüber dem Upstream

  • Numerische Benutzer-IDs überall; users_get_by_telegram_id / _by_email / _by_tag / _by_subscription_uuid und subscriptions_get_by_uuid entfernt (die Routen existieren nicht mehr).

  • contractTool() — Schreib-Tools registrieren sich mit RequestSchema.shape aus dem Vertrag. Vorher: 20 von 23 Schreib-Tools machten eine Teilmenge der Felder verfügbar, und das MCP SDK verwarf den Rest stillschweigend.

  • users_* bleiben handgeschrieben; der installierte Vertrag deklariert für Benutzer weiterhin uuid.

  • Neu: users_extend_expiration, users_accessible_nodes, subscriptions_get_by_user_id, subscription_templates_list / get / update; config_profiles_update akzeptiert config.

  • Client: vollständige API-Fehler-Bodies, leere 2xx-Bodies bei Bulk-Operationen behandelt, handgebaute, trailing-slash-sichere Pfade für Routen, die es nur in 3.x gibt.

  • Enums aus dem Vertrag (RESET_PERIODS inkl. MONTH_ROLLING, USERS_STATUS).

  • Multi-Panel-Konfigurationssuche; read-only standardmäßig empfohlen; Version angehoben auf 2.0.0.

🛠 Entwicklung

npm run dev       # tsup --watch
npm run build     # tsup → dist/index.js
npx tsc --noEmit  # typecheck

🐳 Docker

docker compose up -d

Siehe docker-compose.yml und übergebe dieselben Umgebungsvariablen.

📄 Lizenz

MIT. Urheberschaft des Upstreams: TrackLine/mcp-remnawave.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides AI agents with 220+ tools for building websites, sending email, managing contacts, invoicing, databases, automation, and more through a single secure connection. Features hardware-bound authentication and works with Claude Desktop, Claude Code, Cursor, and other MCP-compatible clients.

View all related MCP servers

Related MCP Connectors

  • A paid remote MCP for ClawManager, built to return verdicts, receipts, usage logs, and audit-ready J

  • A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,

  • Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Maaagiic/mcp-remnawave'

If you have feedback or need assistance with the MCP directory API, please join our Discord server