Skip to main content
Glama
remnawave-mcp-server

remnawave-mcp-server

by ssasuoirafen

remnawave-mcp-server

MCP server for Remnawave panel API. Manage VPN users, nodes, hosts, and system stats from Claude Code or any MCP-compatible client.

Tools

Users

Tool

Description

remnawave_list_users

List users with pagination

remnawave_get_user

Get user by UUID, username, telegram ID, or email

remnawave_create_user

Create new user

remnawave_update_user

Update user properties

remnawave_delete_user

Permanently delete user

remnawave_enable_user

Enable disabled user

remnawave_disable_user

Disable user (suspend VPN)

remnawave_revoke_user

Revoke subscription, regenerate credentials

remnawave_reset_user_traffic

Reset traffic counter to zero

Nodes

Tool

Description

remnawave_list_nodes

List all XRay nodes

remnawave_get_node

Get node details by UUID

remnawave_update_node

Update node settings (address, config profile/inbounds, traffic limits, tags, note)

remnawave_enable_node

Enable node

remnawave_disable_node

Disable node

remnawave_restart_node

Restart single node (sends forceRestart; force_cycle=true for disable+enable)

remnawave_restart_all_nodes

Restart all nodes

Note: panel 2.8.0 requires forceRestart in the single-node restart body and honors it (older panels ignored the flag and skipped the restart when the config hash matched). The tool sends forceRestart=true by default. force_cycle=true disables and re-enables the node instead - a heavier fallback that also re-establishes the panel-node connection (briefly drops its connections).

Hosts

Tool

Description

remnawave_list_hosts

List all subscription hosts

remnawave_get_host

Get host details by UUID

remnawave_create_host

Create a host on a config profile inbound

remnawave_update_host

Update host properties

remnawave_delete_host

Permanently delete a host

Squads

Tool

Description

remnawave_list_internal_squads

List inbound groups (with inbound UUIDs)

remnawave_update_internal_squad

Update squad name/inbounds (replaces the inbound set)

remnawave_list_external_squads

List tariff plans

Config Profiles

Tool

Description

remnawave_list_config_profiles

List XRay config profiles with inbound UUIDs

remnawave_get_config_profile

Full raw XRay config JSON + inbounds + attached nodes

remnawave_update_config_profile

Replace a profile's XRay config and/or rename it

Subscriptions

Tool

Description

remnawave_get_subscription_settings

View global subscription settings

System

Tool

Description

remnawave_get_system_stats

User counts, traffic, server resources

remnawave_get_system_health

Panel process health (runtime metrics per process)

remnawave_get_bandwidth_stats

Per-node bandwidth over a date range

remnawave_get_node_users_usage

Per-user traffic on one node over a date range

remnawave_get_node_metrics

Real-time node metrics

remnawave_get_keygen

Node provisioning SECRET_KEY (sensitive)

Related MCP server: mcp-impresario

Configuration

Claude Code (.mcp.json)

{
  "mcpServers": {
    "remnawave-mcp": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/ssasuoirafen/remnawave-mcp-server", "remnawave-mcp"],
      "env": {
        "REMNAWAVE_API_URL": "https://panel.example.com",
        "REMNAWAVE_API_USERNAME": "your-username",
        "REMNAWAVE_API_PASSWORD": "your-password"
      }
    }
  }
}

Variable

Description

REMNAWAVE_API_URL

Panel root URL, no /api suffix - the server prefixes /api/... on every request (e.g. https://panel.example.com)

REMNAWAVE_API_USERNAME

Admin username

REMNAWAVE_API_PASSWORD

Admin password

REMNAWAVE_TLS_VERIFY

Optional. Set to false for panels with self-signed certificates (TLS verification is on by default)

Targets Remnawave panel 2.8.x and carries forward-compat guards for known 2.9.0 changes (bodyless DELETE responses, removal of the by-telegram-id/by-email user endpoints, the keygen pubKey → secretKey rename).

Development

git clone https://github.com/ssasuoirafen/remnawave-mcp-server.git
cd remnawave-mcp-server
uv sync

License

MIT

Available Tools

34 tools
remnawave_create_hostA

Create a subscription host (MUTATES PROD: enabled hosts appear in user subscriptions immediately). Requires the config profile + inbound pair the host points at (UUIDs via remnawave_list_config_profiles).

Inputs: params (required). Returns: result

remnawave_create_userA

Create a new VPN user. Requires username and expiration date. Returns created user details including subscription URL.

Inputs: params (required). Returns: result

remnawave_delete_hostA
Destructive

Permanently delete a host (MUTATES PROD: it disappears from user subscriptions). Cannot be undone.

Inputs: params (required). Returns: result

remnawave_delete_userB
Destructive

Permanently delete a user by UUID. This action cannot be undone.

Inputs: params (required). Returns: result

remnawave_disable_nodeA
Idempotent

Disable a node, stopping it from accepting new connections.

Inputs: params (required). Returns: result

remnawave_disable_userB
Idempotent

Disable a user account, suspending VPN access. Can be re-enabled later.

Inputs: params (required). Returns: result

remnawave_enable_nodeB
Idempotent

Enable a disabled node, allowing it to accept connections.

Inputs: params (required). Returns: result

remnawave_enable_userA
Idempotent

Enable a disabled user account, restoring VPN access.

Inputs: params (required). Returns: result

remnawave_get_bandwidth_statsA
Read-onlyIdempotent

Get historical bandwidth for all nodes over a date range: per-node totals, peak days, and the fleet-wide total.

Inputs: params (required). Returns: result

remnawave_get_config_profileA
Read-onlyIdempotent

Get one config profile with its FULL raw XRay config JSON (inbounds/outbounds/ routing), registered inbounds with UUIDs, and attached nodes.

Inputs: params (required). Returns: result

remnawave_get_hostA
Read-onlyIdempotent

Get detailed info about a single host by UUID.

Inputs: params (required). Returns: result

remnawave_get_keygenA
Read-onlyIdempotent

Get the panel's node provisioning key (SECRET_KEY env for remnanode). SENSITIVE: anyone holding this key can connect a node to the panel. Handles both field names: pubKey (<=2.8.x) and secretKey (2.9.0+).

Inputs: no named parameters. Returns: result

remnawave_get_nodeA
Read-onlyIdempotent

Get detailed info about a single node by UUID.

Inputs: params (required). Returns: result

remnawave_get_node_metricsA
Read-onlyIdempotent

Get real-time metrics for all nodes: users online, traffic per inbound (upload/download).

Inputs: no named parameters. Returns: result

remnawave_get_node_users_usageA
Read-onlyIdempotent

Historical per-user traffic on ONE node over a date range (daily totals + top users). Complements remnawave_get_bandwidth_stats (all nodes) and remnawave_get_node_metrics (realtime).

Inputs: params (required). Returns: result

remnawave_get_subscription_settingsA
Read-onlyIdempotent

Get global subscription settings: profile title, update interval, support link, Happ routing, custom headers.

Inputs: no named parameters. Returns: result

remnawave_get_system_healthA
Read-onlyIdempotent

Check panel health. Shows Node.js runtime metrics (RSS, heap, event loop lag, uptime) per panel process (api/scheduler/processor).

Inputs: no named parameters. Returns: result

remnawave_get_system_statsA
Read-onlyIdempotent

Get system-wide statistics: user counts by status, online stats, node count, total traffic, server CPU/memory.

Inputs: no named parameters. Returns: result

remnawave_get_userA
Read-onlyIdempotent

Get a single user by UUID, shortUuid, username, telegram ID, or email. Specify exactly one identifier.

Inputs: params (required). Returns: result

remnawave_list_config_profilesA
Read-onlyIdempotent

List all XRay config profiles with their inbounds (protocol, transport, port).

Inputs: no named parameters. Returns: result

remnawave_list_external_squadsA
Read-onlyIdempotent

List all external squads (tariff plans). Shows name and user count.

Inputs: no named parameters. Returns: result

remnawave_list_hostsA
Read-onlyIdempotent

List all subscription hosts with addresses, SNI, security settings, and assigned nodes.

Inputs: no named parameters. Returns: result

remnawave_list_internal_squadsA
Read-onlyIdempotent

List all internal squads (inbound groups). Shows name, user count, and inbound count.

Inputs: no named parameters. Returns: result

remnawave_list_nodesA
Read-onlyIdempotent

List all XRay nodes with connection status, traffic, version info, and hardware specs.

Inputs: no named parameters. Returns: result

remnawave_list_usersA
Read-onlyIdempotent

List all VPN users with pagination. Returns username, status, traffic usage, expiration date, and squads.

Inputs: params (required). Returns: result

remnawave_reset_user_trafficA
Idempotent

Reset a user's traffic counter to zero.

Inputs: params (required). Returns: result

remnawave_restart_all_nodesA
Idempotent

Restart XRay on ALL enabled nodes. By default sends forceRestart=true so the panel skips its config-hash check; pass force=false to use the panel's hash-based decision (which often skips the restart).

Inputs: params. Returns: result

remnawave_restart_nodeA
Idempotent

Restart XRay on one node (MUTATES PROD: interrupts the node briefly). Default mode sends forceRestart (panel 2.8.0+ requires it in the body); force=true skips the config-hash check like the UI's restart-all. force_cycle=true disables and re-enables the node instead - heavier, also re-establishes the panel-node link.

Inputs: params (required). Returns: result

remnawave_revoke_userA
Destructive

Revoke a user's subscription, regenerating their credentials. Old subscription links stop working.

Inputs: params (required). Returns: result

remnawave_update_config_profileA
DestructiveIdempotent

Update a config profile (MUTATES PROD: replaces the XRay config that nodes run; a bad config can take user traffic down). config overwrites the whole document. Nodes apply it on their next config sync/restart.

Inputs: params (required). Returns: result

remnawave_update_hostA
Idempotent

Update a host (MUTATES PROD: changes flow into user subscriptions). Only provided fields change; tags/nodes replace their whole set.

Inputs: params (required). Returns: result

remnawave_update_internal_squadA
Idempotent

Update an internal squad (MUTATES PROD: changes which inbounds its members get). inbounds replaces the full set.

Inputs: params (required). Returns: result

remnawave_update_nodeA
Idempotent

Update node settings (MUTATES PROD). Changing the config profile / inbounds re-syncs what the node serves. Only provided fields change.

Inputs: params (required). Returns: result

remnawave_update_userA
Idempotent

Update an existing user. Identify by UUID (preferred) or username. Only provided fields will be changed.

Inputs: params (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 34 tools

    Disambiguation5/5

    Each tool targets a distinct resource and action combination (e.g., create_user, delete_host, get_node_metrics). Descriptions clearly differentiate overlapping functions like bandwidth stats vs node metrics vs user usage. No ambiguity exists.

    Naming Consistency5/5

    All tools follow a consistent 'remnawave_verb_noun' pattern with snake_case. Verbs are action-oriented (create, delete, get, list, enable, etc.) and nouns are descriptive (user, host, node, config_profile). No deviations or mixed styles.

    Tool Count3/5

    34 tools is high for most domains, but the Remnawave panel's scope (user, node, host, profile, squad, and system management) justifies a larger surface. However, it exceeds the typical 3-15 range for a well-scoped server, making it borderline heavy.

    Completeness2/5

    The tool set covers many operations but has notable gaps: no create/delete for nodes or config profiles, and only list/update for squads (no create/delete). These missing CRUD operations will cause agent failures when full lifecycle management is needed.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers