Repository navigation
This release fixes the idle-CPU drain reported in #1724, closes the round-2 TPA red-team findings, speeds up tool discovery across many servers, and ships several fixes for Docker isolation, OAuth and the desktop app.
New Features
retrieve_toolscan be scoped to one upstream: pass"server": "<name>"to search a single server's tools; token and profile scopes still apply (#1836)- SkillSpector-informed scanner checks (Spec 122): anti-refusal directives, hidden padding, composite exfiltration, reconstructed payloads and a direct-prohibition cap in the built-in tool scanner (#1818)
- OAuth refresh replay (opt-in,
oauth.refresh_replay_enabled): recover from a lost refresh-token response instead of forcing a new sign-in, for providers that support idempotent replay (#1828) - Argument-error redaction (opt-in, per-upstream
tool_argument_error_mode: "redacted"): hide private details from argument errors while keeping the schema and retry hint (#1798) - Stateless list surfaces for the MCP 2026-07-28 revision (Spec 058 US3):
*/listresults no longer vary per connection (#1691) - Packaged Linux installs (deb/rpm) now point the CLI at the system service and
--systeminstead of silently creating a per-user config (#1800) - Docs: rootless Podman as the isolation backend (#1817, thanks @james-crowley)
Security
- Round-2 TPA red-team findings (R2-1..R2-5): a trusted server's first toolset is baselined only after a clean scan, diacritics-aware name matching, Turkish/Greek corpus, name-squat detection (#1714)
- Byte-identical tool definitions across servers (the same server installed twice) are no longer flagged as a shadowing clone (#1838)
- Approval-locked tools are withheld from the REST index search (#1826)
- Server admission stays human under the default trust tier; only an explicit
trust_mode: "scan"auto-admits (#1802) - Profile pin is enforced on every REST/SSE read door (Spec 118) (#1821)
- Registry-supplied text is escaped in
catalog search/catalog show(#1767) - Whole Bearer credentials and unsigned JWTs are masked in logs (#1792)
- Config-to-secret conversion refuses values that embed a reference (#1782)
- Connect writes
X-API-Keyheaders for Codex and the generic client instead of?apikey=(#1820)
Performance
- Idle CPU drain fixed (#1724): the per-tool change-gate scan inspects only the scanned server's tools and keeps peers as index context, instead of re-scanning the whole fleet for every held tool on every discovery pass (#1812)
- Tools are listed from servers concurrently during discovery (#1814); the capture lock is per server (#1813)
Bug Fixes
- Desktop app: launch over a dead core's socket without the 60-second wait (#1815)
- Docker isolation: env values passed via the environment rather than
-e KEY=VALUEargv (#1811);--cidfileplaced afterrunfordocker.exeshell commands (#1773);docker.exeand backslash paths recognised as a directdocker run(#1777); Windows launchers with an.exe/.cmdsuffix detected (#1778) - Scanner: synchronous and batch scans honour
-o json|yaml; scan reports keep their real completion time across reads (#1830) - Search: qualified tool ids (
server:tool) resolve (#1825) - Upstream:
init_timeoutabove 30 s is honoured on supervisor and reload connects (#1819) - Clients: Codex CLI (
codex-mcp-client) and Claude Desktop via mcp-remote are credited as their client instead ofother:rows (#1799) - OAuth: the legacy metadata discovery URL no longer carries the query string (#1757)
- REST:
DELETE /secrets/{name}percent-decodes the name (#1775) - Telemetry:
mcpproxy feedbacksends install ref and diagnostics so reports can be followed up (#1744) - Web UI: mobile drawer closes after navigation; Tools refresh control has an accessible name (#1830)
- Runtime: management service swapped atomically (Windows data race) (#1822)
Download Installers
| Platform | Download | Notes |
|---|---|---|
| macOS (Apple Silicon) | Download DMG | Signed & Notarized - Recommended for M1/M2/M3/M4 |
| macOS (Intel) | Download DMG | Signed & Notarized |
| Windows (64-bit) | Download Setup | Setup wizard |
| Windows (ARM64) | Download Setup | For ARM Windows devices |
| Linux Debian/Ubuntu (AMD64) | Download .deb | sudo apt install ./mcpproxy_*.deb |
| Linux Debian/Ubuntu (ARM64) | Download .deb | For ARM64 (Raspberry Pi etc.) |
| Linux Fedora/RHEL (AMD64) | Download .rpm | sudo dnf install ./mcpproxy-*.rpm |
| Linux Fedora/RHEL (ARM64) | Download .rpm | For ARM64 |
| Linux (AMD64) — tarball | Download tar.gz | Binary only |
| Linux (ARM64) — tarball | Download tar.gz | Binary only |
Homebrew (macOS/Linux):
brew install smart-mcp-proxy/mcpproxy/mcpproxy