Highlights
Hot-reload. The running voidmcp serve process now picks up server add/remove performed by voidmcp add/remove in another terminal — no restart required. Plus sharpened LLM-facing descriptions that push harder for chained execute_code instead of sequential tool calls.
Hot-reload across processes
Before v0.0.10, voidmcp add filesystem ... in a second terminal was invisible to the running serve until you restarted it. Now:
- A background goroutine polls the SQLite store every
--watch-interval(default5s,0disables) - Added / removed server names are applied to the in-memory registry
notifications/tools/list_changedis sent after any diff so compatible clients re-fetch automatically
Design:
- Self-healing: transient
newTransport/ListToolsfailures are not stubbed into memory — the next tick retries automatically - TOCTOU-safe vs the in-process
add_mcptool: watcher re-checks under write lock and drops its own transport ifAddwon the race - Interval clamp:
--watch-intervalbelow1sis rejected (footgun guard) - Panic-safe: the watcher goroutine recovers + logs, never dies mid-run
Name-level diff only — changing an auth token still needs remove + add.
LLM-facing polish
execute_codedescription now carries a STRONG PREFERENCE block telling the model to chain multiple downstream MCP calls inside a single execution instead of making sequential tool calls (one round-trip vs N)- New PATTERNS section shows
Promise.allSettledfan-out and sequentialtry/catchcontinue-on-error examples searchdescription explicitly reminds the model to useexecute_codeafter discovering signatures
Install
go install github.com/voidmind-io/voidmcp/cmd/voidmcp@v0.0.10Full Changelog: v0.0.9...v0.0.10