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

Whiskers

제작자: LupusMalusDeviant버전 0.15.0i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.LupusMalusDeviant/whiskers

설치

개요

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

Governed Docker and Kubernetes operations for AI agents: scoped keys, guardrails, human approvals.

PopNx MCP의 세 기둥

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

할 수 있는 일

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

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: Streamable HTTP
  • 카테고리: 개발자 도구

설치

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

설치하기 전에

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

필요한 것

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "whiskers": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/lupusmalusdeviant/whiskers:0.15.0"
      ]
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add whiskers -- docker run -i --rm ghcr.io/lupusmalusdeviant/whiskers:0.15.0

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "whiskers": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/lupusmalusdeviant/whiskers:0.15.0"
      ]
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "whiskers": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/lupusmalusdeviant/whiskers:0.15.0"
      ]
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

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

기본 점검i

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

  • ✓ 통과

    제작자와 저장소 일치

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

  • … 아직 점검 안 함

    계속 관리되고 있음

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

  • … 아직 점검 안 함

    라이선스 있음

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

  • – 해당 없음

    엔드포인트 응답

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

  • – 해당 없음

    OAuth로 로그인

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

  • … 아직 점검 안 함

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

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

개발자 도구 카테고리의 다른 서버와 비교i

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

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

자주 묻는 질문

Whiskers, 안전한가요?

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

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

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

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

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

아직 관리되고 있나요?

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

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Docker도 있어야 해요.

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

같은 카테고리에는: GitHub, Desktop Commander, Cloudflare MCP

대안

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

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

GitHub

제작자: github

Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

컴퓨터 또는 클라우드★ 34,245MIT3일 전 업데이트
설치

Desktop Commander

제작자: wonderwhy-er

MCP server for terminal commands, file operations, and process management

내 컴퓨터에서 실행★ 10,225MIT15일 전 업데이트
설치

Cloudflare MCP

제작자: cloudflare

Cloudflare MCP servers

클라우드에서 실행★ 4,446Apache-2.014개월 전 업데이트
설치

제작자의 README

README 열기

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

Whiskers — Zero-Trust MCP Control Plane for Docker & Kubernetes

*"In the dark, predators don't rely on sight. They rely on their whiskers to sense the slightest vibration in the

air before striking — or stepping into a trap. Whiskers is the tactile sensory layer and zero-trust execution

mesh between hallucinating AI agents and your production infrastructure."*

Controlled infrastructure operations for humans and AI agents.

Whiskers is a self-hosted, zero-trust MCP control plane for Docker hosts and Kubernetes workloads. Instead of handing operators or AI agents unrestricted SSH access, it exposes explicit tools governed by permissions, code-enforced guardrails, approvals and a complete action history.

*Bootstrap a host once, then operate over mesh + mTLS without a standing private SSH key.*

⚠️ Beta. Whiskers is under active development and not yet API-stable.

Run it on a trusted network, review the security policy, and expect breaking

changes before 1.0.


Why Whiskers

The common pattern for a Docker or Kubernetes MCP server is to run it over stdio next to the agent and give it the raw /var/run/docker.sock or a kubeconfig. Whatever the model hallucinates, the socket executes. Whiskers is the antidote:

Typical Docker/K8s MCP serverWhiskers control plane
AccessRaw docker.sock or kubeconfig in the agent's processThe agent never touches the socket or the kubeconfig (encrypted in the vault) — it calls scoped tools; Kubernetes workloads are operated from the governed UI today, MCP pod tools are on the roadmap
Reachstdio, one hostAgent ↔ Whiskers over Streamable HTTP; Whiskers ↔ many hosts over mesh + mTLS — no standing SSH key once a host is onboarded
PermissionsEverything the socket allowsPer key: Read, Write or Admin scope, optionally narrowed to an explicit tool list — checked on every call
Risky actionsExecuted as requestedGuardrails (core, always on) allow, deny or pause for human approval; blast-radius and update-risk assessment tools available before an update (get_blast_radius, assess_update_risk; the plan_safe_update prompt chains them)
AfterwardsUsually no recordHash-chained audit trail (checkpoints signed, and the trail tamper-evident, when VAULT_KEY is set) plus Agent History

Zero-trust here means: no caller is trusted by default — every call is authenticated (API key or signed-in user), scope-checked and guardrail-evaluated in code, and every onboarded Docker host is reached over a private WireGuard mesh, with the Docker and host-control planes on mTLS (client certificate, CN-pinned). The opt-in Auth:Disabled LAN mode switches authentication off.

AI agents can operate infrastructure — but the usual way to let them is to hand over an SSH key or a shell, which grants far more power than any single task needs. Whiskers puts a governed layer in between:

  • Limit what an operator or agent can do. API keys, roles and explicit tool access define the available capability set — no arbitrary shell below Admin scope; the Admin-only execute_command is guardrail-checked and audited.
  • Require approval before impact. Code-enforced guardrails allow, block, or pause sensitive operations for human confirmation.
  • Know exactly what happened. Agent History and the Audit Log record actor, decision, target, parameters (secrets redacted) and result.

The same control plane reaches Docker, Kubernetes, logs, deployments, services and CVE context — but that reach is evidence of coverage, not the headline. The headline is governed, accountable operations. See docs/product/POSITIONING.md for the full positioning.

How governance works
flowchart LR

H[Human operator] A[AI agent] CP[Whiskers control plane] AUTH[Authentication & permissions] GR[Code-enforced guardrails] AP[Human approval] TOOLS[Explicit infrastructure tools] INFRA[Docker / Kubernetes / hosts] AUDIT[Agent history & audit log]

H --> CP A --> CP CP --> AUTH AUTH --> GR GR -->|allow| TOOLS GR -->|confirm| AP AP -->|approved| TOOLS GR -->|block| AUDIT TOOLS --> INFRA TOOLS --> AUDIT AP --> AUDIT


Table of contents


Quick start

Prebuilt multi-arch images (amd64 / arm64) are published to `ghcr.io/lupusmalusdeviant/whiskers` from v0.12.0. Before that release, use the *From source* path below.

Quick — one command
VER=X.Y.Z   # a release from https://github.com/LupusMalusDeviant/Whiskers/releases

The installer of that release installs exactly that release, generates the vault key, verifies the image signature

if cosign is installed, writes ./whiskers/ and waits until healthy:

curl -fsSLO "https://github.com/LupusMalusDeviant/Whiskers/releases/download/v${VER}/install.sh" curl -fsSLO "https://github.com/LupusMalusDeviant/Whiskers/releases/download/v${VER}/checksums.txt" sha256sum --check --ignore-missing checksums.txt && bash install.sh # the checksum catches a broken download; the

signature check inside the installer protects the image

...or a bare docker run (no vault key — set VAULT_KEY_FILE before you store secrets):

docker run -d --name whiskers -p 127.0.0.1:5100:8080 \ -v whiskers-data:/app/data -v /var/run/docker.sock:/var/run/docker.sock \ "ghcr.io/lupusmalusdeviant/whiskers:${VER}"

Open http://127.0.0.1:5100. The installer accepts --version, --port, --bind, --data, --verify, --yes (install.sh --help); it never installs latest (installers attached to releases up to 0.15.0 still default to latest; this applies from the next release on). It prints where the vault key is and what to back up — keep the key and the backups apart, off the host. Re-running it with a newer release upgrades in place (only the image line changes; downgrades are refused). Details: deploy/README.md → Installer.

Standard — Docker Compose

Download docker-compose.yml from the latest release (already pinned to the image), then docker compose up -d. Optional settings go in a .env beside it — everything is optional, Whiskers runs with none (see .env.example).

The app listens on 127.0.0.1:5100 by default (HOST_BIND / HOST_PORT) and never binds publicly unless you change the bind.

First sign-in

On first launch a guided setup wizard in the browser creates the admin account — no .env and no config file required. Because whoever completes the wizard becomes Admin, it first asks for a one-time setup token that only someone with access to the server can read: docker exec whiskers cat /app/data/setup-token.txt (the installer prints it; Helm users kubectl exec the same path, or preset it with WHISKERS_SETUP_TOKEN). From then on you sign in with that local login (email + password; 5 wrong passwords lock the account for 15 minutes, and login attempts are rate-limited per client). Admins add, reset and delete local accounts under *Settings → Local accounts*; everyone changes their own password under *My account*; a forgotten password is recovered with a one-time code (from an Admin, or on the host with --recover-local-account) — see Local accounts. Local accounts have no second factor (MFA) in 1.0: for production, sign in through your identity provider (OIDC) and require MFA there, and keep local accounts as a break-glass fallback. Alternatives: seed the admin unattended with WHISKERS_ADMIN_EMAIL + WHISKERS_ADMIN_PASSWORD_FILE; use Google or generic OIDC (see Configuration); or, for a trial on a trusted network, AUTH_DISABLED=true — every request is then an Admin, so Whiskers only answers clients from private networks, with an IP or localhost as host name and without a foreign Origin (see Configuration).

Connect an MCP client

Whiskers is self-hosted: there is no hosted or cloud endpoint. Your MCP client talks to your own instance at /mcp (Streamable HTTP) with an API key created under *Settings → MCP*:

{

"mcpServers": { "whiskers": { "type": "http", "url": "http://localhost:5100/mcp", "headers": { "Authorization": "Bearer " } } } }

The client snippets below read the key from the environment, so it never lands in a config file — export it first (export WHISKERS_MCP_API_KEY=…, or from your shell profile or secret manager).

Claude Code — the single quotes keep ${WHISKERS_MCP_API_KEY} literal in .mcp.json; Claude Code expands it when it loads the file:

claude mcp add --transport http --scope project whiskers http://localhost:5100/mcp --header 'Authorization: Bearer ${WHISKERS_MCP_API_KEY}'

Crush (charmbracelet/crush) — add this line to ./crushrc (project) or ~/.config/crush/crushrc (global); Crush expands $WHISKERS_MCP_API_KEY when it loads the config:

mcp add whiskers --type http --url "http://localhost:5100/mcp" --header Authorization "Bearer $WHISKERS_MCP_API_KEY"

Still on the legacy JSON config? Th

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

PopNx에게 묻기