v0.0.9
Highlights
This release hardens VoidMCP's security posture, sharpens the search-first discovery flow, and cleans up the LLM-facing surface based on external reviews (Gemini, Codex) plus internal audits.
Security
- Persisted bearer token is now encrypted at rest with AES-256-GCM (per-setting AAD)
--tokenandVOIDMCP_TOKENenforce a 32-character minimum- New
VOIDMCP_TOKENenv var avoids exposing the token via/proc/cmdline add_mcpno longer acceptsauth_token/auth_header— authenticated and stdio servers are CLI-only to keep credentials out of the LLM context and block prompt-injection exfiltration- HTTP
401/403responses from upstream MCPs surface a clear CLI workaround to the model
Search & discovery
- Search limit raised to 50 with an explicit truncation indicator
- Server names are now matched alongside tool names; empty query or
"*"browses everything - Inferred output schemas are loaded into search results so TypeScript return types reflect the real response shape (not
Promise<any>) - Server and tool names that are not valid JS identifiers (hyphens, etc.) are rendered with bracket notation —
tools["my-server"]["do-thing"](...)— matching the runtime proxy
LLM ergonomics
list_mcpsreturns each server's tool-name array (the description already promised this)execute_codereturns structured JSON (result,logs,tool_calls) instead of free-form text- Tool descriptions reworked to make the search-first workflow obvious
Transport
- HTTP transport automatically re-initializes once on
ErrSessionExpiredinstead of failing the call
Install
go install github.com/voidmind-io/voidmcp/cmd/voidmcp@v0.0.9Or grab a binary from the assets below.
Full Changelog: v0.0.8...v0.0.9