프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

OpenWrt MCP

제작자: stanislav-testhub버전 1.3.0i★ –i–
레지스트리 이름io.github.stanislav-testhub/openwrt-mcp

설치

개요

제작자가 쓴 설명(영어 원문)

MCP server that runs on an OpenWrt router: deny-by-default policy, audit log, rollback-armed changes

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: –
  • 전송 방식:
  • 카테고리: 기타

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 레지스트리에 입력해야 할 키가 나와 있지 않아요.

제작자가 레지스트리에 설치 정보를 올리지 않았어요. 아래 제작자의 README를 확인하세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 stanislav-testhub 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

기타 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 32680개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 32680개 중 57%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 32680개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

OpenWrt MCP, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.3.0)은 30일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, EmbeddedCI BenchPod

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Spec Driven Development

제작자: formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

내 컴퓨터에서 실행★ 440MIT14개월 전 업데이트
설치

Remote Desktop Commander

제작자: desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

클라우드에서 실행★ 211그저께 업데이트
설치

EmbeddedCI BenchPod

제작자: embeddedci-com

Drive a BenchPod hardware-in-the-loop bench: power, flash, UART, I2C, CAN, analog and logic.

내 컴퓨터에서 실행오늘 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

openwrt-mcp -- an MCP server for OpenWrt 24.10 and 25.12

English · Русский · 简体中文

An MCP server that runs on an OpenWrt router, so Claude Code (or any MCP client) can inspect and change it -- behind deny-by-default policies, an audit log, and an automatic rollback for configuration changes.

Local and private. The server makes no outbound connections of its own and sends no telemetry; it listens on loopback and on a root-only socket, and talks to your client over an SSH session you set up. The tools that can make the router itself reach out (net_diag, pkg_query with refresh, pkg_change, sysupgrade check, the uci_apply probes, ubus_call, exec) say so in their MCP annotations (openWorldHint), and each needs a grant from you. Secret values are masked in tool output by default, and a new WireGuard key never enters the conversation unless you ask for it.

Footprint. One static binary with no dependencies: 9.1 to 11.3 MB for the router architectures (9.6 MB on arm64, about 3.7 MB compressed in the release archive), about 10 MB resident on a GL-MT6000 right after start, and 23 tools in about 22 KB of tool descriptions. Every release file is checksummed and carries a build attestation.

Based on [GlassOnTin/openwrt-mcp](https://github.com/GlassOnTin/openwrt-mcp) by Ian

Williams, which targets GL.iNet firmware 4.x (OpenWrt 21.02, opkg). This is a port to

stock OpenWrt 25.12 (apk, fw4/nftables, procd, netifd, LuCI JS). The security core is

upstream's; see Credits for what came from where.

Requirements

  • Router: stock OpenWrt 25.12 (apk) or 24.10 (opkg), both with fw4/nftables. Nothing to install on the router beforehand. The package tools pick the manager from the binaries on the router (apk first, then opkg); system_status says which one and which firewall it found.
  • What differs on 24.10: pkg_query has no policy and no audit (opkg has neither; the tool says so). pkg_change simulates with opkg --noaction. New package defaults arrive as -opkg instead of .apk-new, and pkg_config_diff / pkg_config_resolve handle both (the old copy is kept as .pre-opkg-new; for /etc/config/NAME as the hidden .NAME.pre-opkg-new, which reload_config skips). Adding or removing a WireGuard peer re-runs ifup for the interface (24.10's handler cannot sync peers in place), so every tunnel's sessions restart for a moment. world lists the packages opkg marks "user installed". system_status mode=doctor reports opkg-new-pending; mode=audit skips the package audit and says why.
  • fw3 (OpenWrt 21.02 and older, or firmware built on it): best effort. firewall_show answers ruleset (iptables-save, IPv4) and rendered (fw3 -q print); check, table and chain are refused; a firewall apply is not pre-checked.
  • Tested on: 25.12.5 on a GL-MT6000 (hardware); the unit tests run both managers on fakes; CI runs the package and uci tools in the openwrt/rootfs container of 24.10 and 25.12 (no ubus or netifd there, so network, wireless and firewall paths are not covered). Firmware derived from OpenWrt (GL.iNet, ImmortalWrt) is best effort.
  • Your PC: OpenSSH (Windows 10 and later, macOS and Linux have it). Installing from a release needs nothing else. Building from source needs Go 1.26+, ssh and tar (Linux, macOS, or Git Bash on Windows).
  • Any CPU OpenWrt and Go share: the release has a binary for each (arm64, armv5/v7, mips/mipsle softfloat, mips64/mips64le, x86, x86-64, riscv64); install.sh reads the router's DISTRIB_ARCH and picks it, or cross-compiles when you build from source.

Tested on a GL.iNet GL-MT6000 (mediatek/filogic, aarch64_cortex-a53) with OpenWrt 25.12.5. Nothing in the code is specific to that board.


How it differs from other OpenWrt MCP servers

From each project's own README on 2026-10-07; "not stated" means the README does not say. Corrections are welcome.

this projectopenwrt_ssh_mcppaulomac1000/openwrt-mcpopenwrt-luci-mcp
Runs onthe routera PC, in Dockera PC, in Docker or Pythona PC, in Node.js
Reaches the router bySSH to a key-bound forced command, or loopback HTTPSSHSSHLuCI's HTTP /ubus
Changes configurationyes, through one tool that checks first and arms a rollbackyes, including packages and a firmware flashread-only unless ENABLE_WRITE_OPERATIONS=1no
Automatic rollback of a bad changeyes, and it survives a rebootnot statednot statednot applicable
Access control and auditper-client grants with scopes, expiry and a rate limit, audit log, optional TOTPcommand whitelist, audit logaudit logsecrets hidden, no audit log
Package managerapk (25.12) or opkg (24.10)opkgopkglists installed and available
Flashing firmwareneveryesnot statedno
Needs on the routerthe binarySSHSSHuhttpd-mod-ubus, rpcd

What changed from upstream

upstream 0.5 (21.02 / GL.iNet)this port (25.12)
Packaging.ipk for opkginstall.sh file install + keep.d (25.12's apk has no mkpkg; see below)
Web UIGL.iNet oui-httpd pageLuCI page, *Services -> MCP Server*: status, and approve or deny requests
TransportHTTP over an ssh -L tunnelsame, plus stdio over SSH via a key-bound forced command -- no tunnel to keep alive
Rollback snapshot/tmp (lost on reboot)on flash; an unconfirmed change is rolled back at the next start, including after a power cycle
uci_applyset / create / delete+ `add_list`, `del_list`, `set_list`, `dry_run`, shows the staged uci changes, strict name validation. A dry run ends with advice, warnings from this change.
Reloadubus call uci reload_config (async)/sbin/reload_config, plus explicit config.change events when it has no checksums (first run after boot)
WireGuardGL wireguard_server / gl_ddnsstock network. + wireguard_ peers, DDNS from ddns, CGNAT warning, PSK, list and remove
Packages--pkg_query, pkg_change (simulate first), .apk-new review with a settings-level diff
Firewall--firewall_show: nft ruleset, fw4 print, fw4 check
Services--service_list / service_control via rpcd rc
Scope globs[0] was a character classbrackets are literal: firewall.@rule[3].* means what it says
Presets--`openwrt-mcp allow @readonly@operator `

Tools

ToolScope
system_statustoolModel, release, uptime, load, memory, storage, temperatures, conntrack, every interface (state, addresses, default route, errors), radios/SSIDs, and what is outstanding. Call first. mode=doctor returns ranked health findings (radio down, interface without an address, enabled service that died, conntrack and storage nearly full, pending .apk-new, NTP or an unset clock, a newer kernel installed than running). mode=audit returns ranked security findings (what the firewall lets in from the internet, SSH and LuCI exposure, password logins, UPnP, WPS, open or weak Wi-Fi, an empty root password, modified package files, stale WireGuard peers). Both are advisory, each finding names a next read-only call and an OpenWrt wiki page, and both list what they could not check. They are separate scopes: openwrt-mcp allow system_status doctor.
logreadtoolWhole log buffer filtered (substring, RE2, last N minutes) *before* the line limit; offset pages back from the newest line. mode=summary collapses it to distinct messages (numbers, addresses and ids become placeholders) with count, first and last time and worst severity. baseline=save returns a token; baseline= shows only the messages that were not in the log then. Baselines hold fingerprints, not log text, and live in memory.
network_clientstoolDHCP leases + static hosts + neighbour table + every AP's association list, joined by MAC: name, IP, SSID, signal, rates, connected time, each client's share of its radio's airtime (from hostapd), lease; 100 rows a page, offset for the next.
firewall_showtoolnft list ruleset, fw4 print, fw4 check, one table or chain.
net_diag [. ]ping / traceroute / nslookup (optionally from a given interface), routes, policy rules, neighbours. wifi_survey reports, per radio, how busy the channel it stays on has been (busy, rx and tx airtime, noise); other channels are unmeasured, so it never recommends one. traffic samples interface rates for a few seconds and ranks the conntrack table by source. usage reads nlbwmon's totals per device for an accounting period (a month by default). All three only read.
uci_get [. [. ]]; refs for a name searchuci show, optionally with stable cfgXXXXXX ids. Ends with the config's revision. history=list / diff: shows the kept versions from before each confirmed change. refs=NAME finds what defines and uses a name across configs.
uci_apply . [. ] per change; for restore; probe. . per probeStage, check, commit, reload, rollback armed. dry_run shows exactly what would change and what the service's own checker says. expected_revisions refuses if a config moved meanwhile, probe checks the router afterwards, restore= puts a past version back. After the commit the config is read back; a change the router did not keep is NOT_APPLIED and nothing is reloaded.
uci_confirm / uci_rollbacktoolMake a pending change permanent / undo it now.
service_list / service_controltool, .detail / . procd services; service_list detail=NAME returns an installed add-on's own status (tailscale, AdGuard Home, podkop; the plain list names the ones installed here); stopping or disabling dropbear, network, rpcd or openwrt-mcp is refused. service_control waits for the state to settle (wait) and says if it did not; a final state that contradicts the action is NOT_APPLIED.
pkg_querytoolinstalled, upgradable, search, info, files, owner, policy, apk audit, world; 200 lines a page, offset for the next.
pkg_change . / upgradeapk add/del/upgrade; simulates unless `commit=true`; reports new .apk-new files; checks /etc/apk/world afterwards.
pkg_config_difftoolEvery .apk-new as a diff against the live file -- for /etc/config/* by setting (uci show), so quoting/indentation noise disappears.
pkg_config_resolvelive pathkeep_current (drop the new default) or use_new (install it; rollback-armed for UCI configs).

| sysupgrade | | list (preserved files), test (validate an image in /tmp), check (owut), backup (mode 0600; the previous archive this tool made is re

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기