GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者による説明(英語の原文)
Governed Docker and Kubernetes operations for AI agents: scoped keys, guardrails, human approvals.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
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/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"whiskers": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/lupusmalusdeviant/whiskers:0.15.0"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"whiskers": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/lupusmalusdeviant/whiskers:0.15.0"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント LupusMalusDeviant で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.15.0)がレジストリに届いたのは11 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにDockerも必要です。
同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
*"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.
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 server | Whiskers control plane | |
|---|---|---|
| Access | Raw docker.sock or kubeconfig in the agent's process | The 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 |
| Reach | stdio, one host | Agent ↔ Whiskers over Streamable HTTP; Whiskers ↔ many hosts over mesh + mTLS — no standing SSH key once a host is onboarded |
| Permissions | Everything the socket allows | Per key: Read, Write or Admin scope, optionally narrowed to an explicit tool list — checked on every call |
| Risky actions | Executed as requested | Guardrails (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) |
| Afterwards | Usually no record | Hash-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:
execute_command is guardrail-checked and audited.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.
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
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.
VER=X.Y.Z # a release from https://github.com/LupusMalusDeviant/Whiskers/releases
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
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.
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.
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).
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
冒頭だけを表示しています。続きはリポジトリで読めます