📉 If your config.db has grown large, this release needs one manual step
A user reported ~/.mcpproxy/config.db reaching 940MB (#1173). This release fixes both causes and adds a command to reclaim the space — but the space is not reclaimed automatically, because BBolt never returns freed pages to the operating system.
Check whether you are affected
ls -lh ~/.mcpproxy/config.dbA few MB is normal. Hundreds of MB is not.
Reclaim the space
Compaction needs exclusive access, so stop mcpproxy first (quit the tray app, or stop mcpproxy serve). Then:
mcpproxy db stats # how much is reclaimable
mcpproxy db compact # rewrite the filedb compact keeps the pre-compaction database as config.db.bak by default. That backup holds the old file, so nothing is freed on disk until you delete it. The command says so in its output. Start mcpproxy, confirm your servers and history are intact, then:
rm ~/.mcpproxy/config.db.bakIf you are already out of disk space, run mcpproxy db compact --keep-backup=false instead — it frees the space immediately, with no rollback.
What was wrong
Activity records were never truncated (#1173) — activity_max_response_size was declared with a 64KB default and never read, so a single 10.75MB response was stored whole.
The per-server tool-call history was unbounded (#1176) — no size cap, no count cap, no age prune, and nothing ever deleted a server's history, even after the server was removed from the config. This was ~432MB of that 940MB. Responses and arguments are now capped per record, each server keeps a bounded recent window, and removing a server drops its history with it.
⚙️ Configuration changes worth knowing
An explicit 0 is no longer silently deleted (#1175). max_result_size_chars, activity_max_size_mb and observability.tracing.sample_rate document 0 as a meaningful value ("disable"), but saving the config erased it and the field reverted to its default. If you set one of these to 0 and it kept coming back, that is why — it now persists.
activity_retention_days: 0 and activity_max_records: 0 changed meaning. They previously fell through to much smaller internal defaults (7 days / 10,000 records) rather than the documented ones. Both now resolve to the documented defaults (90 days / 100,000 records). If you relied on 0 to keep the log small, set the value you actually want.
New settings, both defaulting to what the fix applies anyway:
| Setting | Default | Meaning |
|---|---|---|
tool_call_max_response_size
| 65536
| Cap on the response stored per tool-call record, in bytes |
tool_call_max_records_per_server
| 1000
| Tool calls retained per server |
A record shortened for storage is marked response_truncated / arguments_truncated; the caller always received the full response, and the upstream server always received the full arguments. Replaying a call whose stored arguments were shortened is refused rather than re-sending the placeholder — pass arguments explicitly to replay it.
This release upgrades MCPProxy to MCP Protocol v1.0.0 and improves storage management with bounded tool-call history.
New Features
- MCP Protocol v1.0.0 Support: Upgraded to mcp-go v1.0.0 with pinned inert mode on both protocol hops for enhanced stability
- Benchmark Naming: Added counterfactual naming for code-execution savings metrics to improve benchmark clarity
Bug Fixes
- Tool-Call History Bounds (Both editions): Implemented bounded tool-call history storage to prevent unbounded growth, fixed issue where configured zero values were being erased, and added database compaction
- Activity Response Size Limiting (Both editions): Applied
activity_max_response_sizelimit on the write path to properly enforce response size constraints - Test Stability: Fixed
TestDetectionScansUntruncatedResponsesizing for race detector compatibility
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/mcpproxyOther download options (auto-update URLs, archives)
Auto-update URLs (always points to latest):
Binary archives (this version):
Installation Instructions
Windows
- Download the installer for your architecture
- Run
mcpproxy-setup-*.exe - Follow the installation wizard (requires Administrator privileges)
- Launch "MCPProxy" from Start Menu
macOS
- Download the signed DMG for your Mac
- Double-click the DMG to mount it
- Double-click the PKG installer inside
- Follow the installation wizard
- Launch mcpproxy.app from Applications folder
Linux / Manual Installation
- Download the appropriate archive
- Extract:
tar -xzf mcpproxy-*.tar.gz - Make executable:
chmod +x mcpproxy - Run:
./mcpproxy serve
Platform Support & Usage
Platform Support
- macOS: Full system tray support with menu and icons
- Windows: Full system tray support with menu and icons
- Linux: Headless mode only (CLI)
Usage
GUI (Recommended):
- Launch mcpproxy.app from Applications (auto-starts core server)
- Manages server via system tray menu
CLI:
mcpproxy serve # Start server
mcpproxy serve --listen 127.0.0.1:8081 # Custom port
export MCPPROXY_API_KEY=your-secret-key # Set API key