GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者による説明(英語の原文)
RAM-only HTTP debugging proxy and MCP server in Go. AI agents see salted tags, never secrets.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
作者はレジストリにインストール情報を載せていません。下にある作者のREADMEをご覧ください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント VoxNode-ux で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(1.0.2)がレジストリに届いたのは9 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。
同じカテゴリには: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、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A zero-dependency, RAM-only network inspector that lets your AI assistant debug HTTP, HTTPS and WebSocket traffic, with every secret scrubbed before the model ever sees it.
Quick start · How it works · What gets redacted · MCP tools · Configuration · CLI reference · Security model
Your AI assistant is great at debugging an API call, until the request it needs to read carries an Authorization header, a session cookie, a database URL or a customer's email. Pasting raw traffic into a chat means pasting your secrets with it.
NullWire sits between your app and the network. It records what passes through, scrubs every secret out of the recorded copy, and hands that clean copy to your assistant through the Model Context Protocol. Your app keeps working exactly as before, because the live traffic is never touched.
your app ──► NullWire (127.0.0.1) ──► the real server
│ ├─ forwards every byte, unmodified └─ keeps a scrubbed copy in RAM ──► your AI assistant (MCP)
| 🪶 Zero dependencies | Go standard library only. One static binary, nothing to install. |
| 🧠 RAM only | The last 50 flows live in memory. The server never writes a file, and a stop signal wipes the buffer. (install edits your MCP client configs, but only when you run it.) |
| 🔒 Loopback only | The proxy binds to 127.0.0.1. A DNS-rebinding guard answers only loopback Host headers. |
| 🧽 Layered redaction | Private keys, JSON/XML/query secrets, JWTs, 50+ vendor key formats, IPs, secrets hiding in base64, and a randomness detector for keys nobody has seen before. |
| 🛡️ Fail-closed shields | Bodies that can't be inspected are refused or flagged, never silently passed to the model. |
| 🔌 HTTP, HTTPS and WebSocket | Plain proxying, blind CONNECT tunnels, a reverse gateway for full HTTPS visibility, and WebSocket text capture in both directions. |
| 🔁 Safe replay | Export any captured request as a curl command with secrets swapped for environment variables. |
| 🔎 Secret scanner | scan and protect look for secrets in your MCP configs, .env, TOML, YAML and ZIP files before they leak. |
| 📱 Runs anywhere | Linux, macOS, Windows, Docker and Termux on Android. |
Pick whichever fits your machine. Every method checks the download against the release's SHA256SUMS.txt and installs nothing if it doesn't match. Release binaries also carry signed GitHub build provenance, and each release includes a CycloneDX SBOM (nullwire-sbom.cdx.json).
With Node.js (no install step): npx
npx -y nullwire-mcp install --client all
Nothing to download by hand: the launcher fetches and verifies the binary on first run and keeps it in a cache folder. Your MCP clients are then set to run npx -y nullwire-mcp.
macOS, Linux and Termux: install script
curl -fsSL https://raw.githubusercontent.com/VoxNode-ux/nullwire-mcp/main/scripts/install.sh | sh -s -- --setup
Installs to ~/.local/bin (or $PREFIX/bin on Termux). --setup also registers NullWire with your MCP clients. Drop it to install only. --uninstall removes everything again.
Windows: install script
irm https://raw.githubusercontent.com/VoxNode-ux/nullwire-mcp/main/scripts/install.ps1 | iex
nullwire-mcp install --client all
Installs to `%LOCALAPPDATA%\Programs\nullwire-mcp` and adds it to your user PATH. To pass options, run it as `& ([scriptblock]::Create((irm https://raw.githubusercontent.com/VoxNode-ux/nullwire-mcp/main/scripts/install.ps1))) -Setup`.
Homebrew and Scoop
brew install VoxNode-ux/nullwire/nullwire-mcp # macOS, Linux
scoop bucket add nullwire https://github.com/VoxNode-ux/scoop-nullwire # Windows scoop install nullwire-mcp
Both packages are generated from the templates in [`packaging/`](packaging/README.md).
Download a release by hand
| Platform | File |
|---|---|
| Linux x86-64 / ARM64 (Raspberry Pi 4+, Termux) | nullwire-linux-amd64 / nullwire-linux-arm64 |
| Linux ARMv7 (older Raspberry Pi) / RISC-V 64 | nullwire-linux-armv7 / nullwire-linux-riscv64 |
| macOS Intel / Apple Silicon | nullwire-darwin-amd64 / nullwire-darwin-arm64 |
| Windows x86-64 / ARM64 | nullwire-windows-amd64.exe / nullwire-windows-arm64.exe |
| FreeBSD x86-64 | nullwire-freebsd-amd64 |
chmod +x nullwire-linux-amd64
sha256sum -c SHA256SUMS.txt --ignore-missing # verify the download (macOS: shasum -a 256 -c) gh attestation verify nullwire-linux-amd64 --repo VoxNode-ux/nullwire-mcp # optional: verify signed build provenance
</details>
Build from source
go install github.com/VoxNode-ux/nullwire-mcp@latest
git clone https://github.com/VoxNode-ux/nullwire-mcp && cd nullwire-mcp CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o nullwire-mcp .
Go 1.26 or newer. There is nothing to `go get`: the module has no dependencies.
Docker
docker run -i --rm ghcr.io/voxnode-ux/nullwire-mcp
The server speaks MCP over stdio, so run it with -i. The proxy listens on the container's own loopback by design, so a published port (-p) cannot reach it. On Linux, add --network host to use it from the host's 127.0.0.1.
One command registers NullWire with every supported client it finds on your machine:
nullwire-mcp install --client all --dry-run # look first: nothing is written
nullwire-mcp install --client all # then do it, and restart the client
It covers Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Cline, Roo Code, Gemini CLI and Codex CLI. See Connect your MCP clients for details, or add it by hand:
# Claude Code
claude mcp add nullwire -- /path/to/nullwire-mcp
// Claude Desktop, Cursor, Windsurf, Cline and other JSON-configured clients
{ "mcpServers": { "nullwire": { "command": "/path/to/nullwire-mcp", "args": ["-port", "8080"] } } }
The client starts NullWire, and NullWire starts the proxy in the same process. A live status bar on stderr shows what is happening:
⚡ [NullWire-MCP] Proxy 127.0.0.1:8080 | RAM Ring: 3/50 | Scrubbed: 7 Tokens, 2 Cookies, 1 IPs | Disk: 0B
# Plain HTTP through the proxy
curl -x http://127.0.0.1:8080 http://httpbin.org/headers
curl -x http://127.0.0.1:8080 https://example.com
nullwire-mcp -target https://api.example.com curl http://127.0.0.1:8080/v1/things -H "Authorization: Bearer sk-live-..."
*"Use
inspect_trafficto show my last 5 requests and tell me why the third one returned 401."*
flowchart LR
A[Your app or curl] -->|HTTP_PROXY / base URL| P[NullWire proxy 127.0.0.1:8080] P -->|unmodified bytes| S[(Real server)] S -->|unmodified bytes| P P --> C[Capture copy] C --> R[Redaction layers] R --> B[(RAM ring 50 flows)] B -->|MCP over stdio| M[AI assistant]
The key idea: the model reads a scrubbed copy, your app talks to the real server. Nothing the proxy forwards is rewritten, so debugging never changes the behaviour you are debugging.
| Mode | How you use it | What the assistant sees |
|---|---|---|
| Forward proxy | HTTP_PROXY=http://127.0.0.1:8080 and http:// URLs | Full request and response, scrubbed |
| HTTPS tunnel | HTTPS_PROXY=http://127.0.0.1:8080 (CONNECT) | Only the target host:port, timing and byte counts. The encrypted payload is never opened. |
| Reverse gateway | Point your app's base URL at http://127.0.0.1:8080 and start with -target https://… (or send an X-Target-URL header) | Full HTTPS request and response, scrubbed. NullWire makes the TLS connection to the real server. |
| WebSocket | Any Upgrade: websocket request through either proxy mode | Text messages in both directions, scrubbed, as one flow recorded when the connection closes. Frames are forwarded unmodified. |
Why no HTTPS interception? Reading HTTPS from a forward proxy would require a custom root certificate installed on your machine. That is key material and a trust-store change, the opposite of a zero-footprint tool. The reverse gateway gets you the same visibility with no certificate games.
Give each upstream a name. The first path segment picks the upstream and is removed before forwarding:
nullwire-mcp -target openai=https://api.openai.com,anthropic=https://api.anthropic.com
export OPENAI_BASE_URL=http://127.0.0.1:8080/openai/v1 # → https://api.openai.com/v1 export ANTHROPIC_BASE_URL=http://127.0.0.1:8080/anthropic # → https://api.anthropic.com
Names are letters, digits, ., _ and - (up to 32 characters, case-insensitive). One unnamed URL may be added as the default for paths that match no name. An X-Target-URL header overrides everything for a single request.
NullWire exposes three tools over stdio. It speaks MCP protocol versions 2026-07-28, 2025-11-25 and 2024-11-05, and accepts JSON-RPC batches.
| Tool | What it does | Arguments |
|---|---|---|
inspect_traffic | Returns recent scrubbed flows. | limit (1 to 50, default 10), method, url_filter |
export_sanitized_curl | Rebuilds a captured request as a curl command. Redacted values become environment variables you fill in yourself. | flow_id (required) |
clear_ram_buffer | Wipes all 50 slots and resets the counters. | none |
A flow looks like this (illustrative):
{
"id": 7, "timestamp": "2026-10-31T09:14:02Z", "method": "POST", "url": "https://api.example.com/v1/charge", "request_headers": { "Authorization": "[REDACTED_TOKEN#a1b2c3]", "Content-Type": "application/json" }, "request_body": "{\"card_token\":\"[REDACTED_TOKEN#9f3e21]\",\"amount\":4200}", "status_code": 401, "response_body": "{\"error\":\"invalid_api_key\"}", "latency_ms": 143, "redaction_count": 2 }
Tags are stable and correlatable. [REDACTED_TOKEN#a1b2c3] is a short salted hash, so the same secret gets the same tag everywhere in one run. Your assistant can see that two requests used the *same* token without learning it. The salt is random per run, so tags can't be compared across restarts or reversed.
Tag kinds: TOKEN, COOKIE, IP and KEY (private key
冒頭だけを表示しています。続きはリポジトリで読めます