Skip to main content
Glama

mcp-remnawave

Remnawave VPN 패널용 MCP 서버 — Remnawave 3.x에 맞게 업데이트됨

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

English · Русский


MCP 클라이언트(Claude Code, Claude Desktop, Cursor 또는 다른 어떤 것이든)가 패널의 REST API를 통해 사용자, 노드, 호스트, 구성 프로파일, 스쿼드, 구독 템플릿, 청구 및 HWID 기기를 읽고 관리할 수 있게 해줍니다.

TrackLine/mcp-remnawave v1.2.0의 관리되는 포크이며, Remnawave 3.x에 맞추어(실제 구동 중인 3.3.x 패널에서 검증) 도구 스키마가 패널 API와 어긋날 수 없도록 재작업되었습니다.

✨ 주요 특징

🔢 숫자형 사용자 id

Remnawave 3.0부터 사용자 uuid가 제거되었습니다. 모든 users_* 도구는 숫자형 id를 사용하며, 사라진 by-* 라우트는 users_list 필터로 대체되었습니다.

📜 컨트랙트 기반 스키마

쓰기 도구는 입력 스키마를 @remnawave/backend-contract에서 직접 가져옵니다. 일부만 골라 낸 것이 아니라 API 전체를 제공합니다.

🧾 실제 오류 메시지

검증 오류는 단순한 Validation failed 대신 필드 단위 상세 정보와 함께 반환됩니다.

🗂 한 번 설치, 여러 패널

패널 구성은 현재 프로젝트에서 먼저 찾습니다. 즉, 활성 패널은 현재 작업 중인 프로젝트를 기준으로 결정됩니다.

🔒 기본 읽기 전용

REMNAWAVE_READONLY=true이면 쓰기 도구가 아예 등록되지 않습니다.

Related MCP server: remnawave-mcp-server

🚀 빠른 시작

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"

그게 전부입니다. 클라이언트에게 system_metadata를 요청해 보세요. 패널 버전으로 답해 줍니다.

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

stdio MCP 클라이언트라면 무엇이든 동작합니다. node dist/index.js를 가리키고 아래 표의 환경 변수를 전달하면 됩니다(또는 설정 파일 탐색 기능을 사용해도 됩니다).

⚙️ 설정

변수

필수 여부

설명

REMNAWAVE_BASE_URL

패널 URL(예: https://panel.example.com)

REMNAWAVE_API_TOKEN

API 토큰(Bearer) — 패널 → API 토큰

REMNAWAVE_READONLY

true = 읽기 도구만 등록됨 (권장 기본값)

REMNAWAVE_API_KEY

Caddy의 커스텀 경로 설정용 X-Api-Key

REMNAWAVE_ENV_FILE

구성 파일의 명시적 경로

설정 파일 위치

서버는 REMNAWAVE_BASE_URLREMNAWAVE_API_TOKEN을 제공하는 첫 번째 파일을 그대로 사용합니다.

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

MCP 클라이언트는 stdio 서버를 실행할 때 cwd를 프로젝트 루트로 지정합니다. 그래서 전역에 한 번만 설치해 두면 활성 패널은 현재 작업 중인 프로젝트의 것입니다. 관련된 패널을 사용하려면 해당 프로젝트에 .remnawave.env만 넣으면 됩니다. 서버 쪽에서 바꿀 것은 없습니다. 이미 환경에 들어 있는 변수를 절대 덮어쓰지 않으므로, 클라이언트 등록으로 전달한 env 설정이 항상 우선합니다.

읽기 전용 모드

REMNAWAVE_READONLY=true로 시작하세요. 이 모드에서는 쓰기 도구(create / update / delete / enable / disable / bulk)가 아예 등록되지 않으므로 클라이언트조차 시도할 수 없습니다. 실제 쓰기가 필요할 때만 false로 바꾸고 서버를 다시 시작하세요.

🧰 도구

약 150개의 도구이며 패널 API처럼 그룹으로 분류되어 있습니다. 읽기 도구는 항상 사용 가능하고, 쓰기 도구는 읽기 전용 모드가 꺼져 있을 때만 사용할 수 있습니다.

Read

Write

users_list (filters · sorting), 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_*

  • telegramId / email / tag / status로 검색하려면 users_listfilters: [{"id": "telegramId", "value": 123456789}]와 함께 사용합니다. (filterModes, sorting는 선택). 이 방식은 3.x에서 제거된 by-* 라우트를 대체합니다.

  • users_resolveid, shortUuid, username정확히 하나 만 받습니다.

  • 일괄 도구는 userIds: number[](1–500)를 받습니다. users_bulk_update는 변경할 필드를 fields 아래에 넣습니다.

  • users_createvlessUuid / ssPassword / trojanPassword / shortUuid를 명시적으로 받을 수 있습니다. 서비스 계정에 유용합니다.

Group

Read

Write

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 profiles

config_profiles_list / get, config_profiles_get_inbounds, config_profiles_get_computed_config, inbounds_list

config_profiles_create / update / delete / reorder

  • config_profiles_updateconfig와 함께 사용하면 해당 프로파일의 xray 구성 전체를 교체합니다. 읽어서 수정하고 다시 저장하는 방식으로 사용하세요.

  • hosts_create를 사용하려면 inbound: { configProfileUuid, configProfileInboundUuid }가 필요합니다.

그룹

Readable

Write

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

Templates & pages

subscription_templates_list / get, sub_page_configs_list / get

subscription_templates_update, sub_page_configs_*

분류

Readable

Writeable

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

Billing

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_*

Misc

api_tokens_list, snippets_list, metadata_*_get, ip_control_*

api_tokens_*, snippets_*, metadata_*_upsert

api_tokens_listsettings_*는 해당 권한을 가진 API 토큰이 필요합니다. 그렇지 않으면 패널이 Forbidden으로 응답합니다.

🔧 업스트림 대비 변경 사항

  • 숫자 사용자 ID를 모든 곳에서 사용. users_get_by_telegram_id / _by_email / _by_tag / _by_subscription_uuidsubscriptions_get_by_uuid 제거됨(해당 라우트는 더 이상 존재하지 않음).

  • contractTool() — 쓰기 도구는 계약의 RequestSchema.shape로 등록됩니다. 이전에는 23개 쓰기 도구 중 20개가 필드의 일부만 노출했고, MCP SDK는 나머지를 조용히 버렸습니다.

  • users_*는 여전히 수동으로 작성됩니다. 설치된 계약은 사용자에 대해 여전히 uuid를 선언합니다.

  • 새로 추가됨: users_extend_expiration, users_accessible_nodes, subscriptions_get_by_user_id, subscription_templates_list / get / update; config_profiles_updateconfig를 받습니다.

  • 클라이언트: 전체 API 오류 본문, 대량 작업 시 빈 2xx 본문 처리, 3.x 전용 라우트에 대한 후행 슬래시에 안전한 수동 경로.

  • 계약에서 가져온 열거형(RESET_PERIODSMONTH_ROLLING, USERS_STATUS 포함).

  • 다중 패널 구성 조회; 기본값은 읽기 전용 권장; 버전을 2.0.0으로 상향 조정.

🛠 개발

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

🐳 Docker

docker compose up -d

docker-compose.yml을 참조하고 동일한 환경 변수를 전달하세요.

📄 라이선스

MIT. 업스트림 저자: 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