Skip to content

Releases: voidmind-io/voidmcp

v0.0.10

Choose a tag to compare

@github-actions github-actions released this 13 Apr 23:54

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 (default 5s, 0 disables)
  • Added / removed server names are applied to the in-memory registry
  • notifications/tools/list_changed is sent after any diff so compatible clients re-fetch automatically

Design:

  • Self-healing: transient newTransport / ListTools failures are not stubbed into memory — the next tick retries automatically
  • TOCTOU-safe vs the in-process add_mcp tool: watcher re-checks under write lock and drops its own transport if Add won the race
  • Interval clamp: --watch-interval below 1s is 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_code description 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.allSettled fan-out and sequential try/catch continue-on-error examples
  • search description explicitly reminds the model to use execute_code after discovering signatures

Install

go install github.com/voidmind-io/voidmcp/cmd/voidmcp@v0.0.10

Full Changelog: v0.0.9...v0.0.10

v0.0.9

Choose a tag to compare

@github-actions github-actions released this 13 Apr 22:38

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)
  • --token and VOIDMCP_TOKEN enforce a 32-character minimum
  • New VOIDMCP_TOKEN env var avoids exposing the token via /proc/cmdline
  • add_mcp no longer accepts auth_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 / 403 responses 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_mcps returns each server's tool-name array (the description already promised this)
  • execute_code returns 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 ErrSessionExpired instead of failing the call

Install

go install github.com/voidmind-io/voidmcp/cmd/voidmcp@v0.0.9

Or grab a binary from the assets below.

Full Changelog: v0.0.8...v0.0.9

v0.0.8

Choose a tag to compare

@github-actions github-actions released this 13 Apr 22:07

Full Changelog: v0.0.7...v0.0.8

v0.0.7

Choose a tag to compare

@github-actions github-actions released this 13 Apr 21:42

VoidMCP v0.0.7

Breaking changes

  • --schema-threshold flag removed. Search-first is now the only mode.

Features

  • Search-first default: execute_code no longer inlines TypeScript definitions. The LLM always calls search() first to discover tool signatures, then writes code. This ensures tools from newly added servers are immediately discoverable.
  • Server name matching: search("sqlite") returns all tools from that server. search("*") browses all tools across all servers.
  • Improved tool descriptions: All 5 tools rewritten for LLM clarity with concrete examples, return format descriptions, and workflow guidance.
  • Promise<any> guidance: execute_code description explains that Promise<any> means the tool hasn't been called yet, and suggests using console.log() to inspect the shape.

Fixes

  • v0.0.3: Windows key file permission check
  • v0.0.4: execute_code chaining emphasis
  • v0.0.5: Output schema inference + response unwrapping
  • v0.0.6: notifications/tools/list_changed

Install / Update

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/voidmind-io/voidmcp/main/install.sh | sh

Windows (PowerShell):

irm https://raw.githubusercontent.com/voidmind-io/voidmcp/main/install.ps1 | iex

Known limitation

Claude Code does not yet handle notifications/tools/list_changed (#4118). After adding a new MCP server, use search() to discover its tools immediately - no restart needed. Schema inference results (typed return values) appear after restarting the session.

v0.0.6

Choose a tag to compare

@github-actions github-actions released this 13 Apr 17:26

Full Changelog: v0.0.5...v0.0.6

v0.0.5

Choose a tag to compare

@github-actions github-actions released this 13 Apr 17:13

VoidMCP v0.0.5

Features

  • Output schema inference: VoidMCP learns tool return types on first use. After a tool is called, its TypeScript def changes from Promise<any> to the actual inferred type (e.g. Promise<{ items: Array<{ id: number; title: string }> }>)
  • Response unwrapping: MCP ToolResult wrapper ({content:[{type:"text",text:"..."}]}) is automatically stripped. JS code receives the actual value directly — no more result.content[0].text
  • Schema TTL: inferred schemas refresh after 7 days (configurable via --schema-ttl). Expired schemas stay visible — the LLM never falls back to Promise<any> for a tool that was called at least once

Fixes

  • Windows: key file permission check skipped (no POSIX bits on Windows)
  • Windows: SIGTERM replaced with Kill for child process cleanup
  • execute_code description emphasizes chaining with concrete example
  • Scan errors in schema store no longer silently swallowed
  • unwrapToolResult only matches real MCP ToolResult shapes (not coincidental content fields)
  • Object inference capped at 64 properties (prevents OOM from pathological responses)
  • Schema capture capped at 1 MB per response
  • Empty array items use valid JSON Schema ({} instead of {"type":"any"})

Install / Update

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/voidmind-io/voidmcp/main/install.sh | sh

Windows (PowerShell):

irm https://raw.githubusercontent.com/voidmind-io/voidmcp/main/install.ps1 | iex

v0.0.4

Choose a tag to compare

@github-actions github-actions released this 13 Apr 16:39

Full Changelog: v0.0.3...v0.0.4

v0.0.3

Choose a tag to compare

@github-actions github-actions released this 13 Apr 16:19

VoidMCP v0.0.3

Fixes

  • Windows: key file permission check skipped (Windows has no POSIX permission bits)
  • Windows: replaced SIGTERM with Kill for child process cleanup (SIGTERM unavailable on Windows)

Install / Update

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/voidmind-io/voidmcp/main/install.sh | sh

Windows (PowerShell):

irm https://raw.githubusercontent.com/voidmind-io/voidmcp/main/install.ps1 | iex

If upgrading from v0.0.1/v0.0.2 on Windows, delete ~/.voidmcp/ first to clear the key file that caused the startup error.

v0.0.2

Choose a tag to compare

@github-actions github-actions released this 13 Apr 16:13

VoidMCP v0.0.2

Fixes

  • Windows PowerShell install script: fixed architecture detection ($env:PROCESSOR_ARCHITECTURE instead of .NET RuntimeInformation)
  • .gitignore no longer excludes cmd/voidmcp/ directory

Install

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/voidmind-io/voidmcp/main/install.sh | sh

Windows (PowerShell):

irm https://raw.githubusercontent.com/voidmind-io/voidmcp/main/install.ps1 | iex

Then:

claude mcp add --transport stdio voidmcp -- voidmcp serve --stdio

See README for full documentation.

v0.0.1

Choose a tag to compare

@github-actions github-actions released this 13 Apr 00:00

VoidMCP v0.0.1

One MCP to orchestrate them all.

VoidMCP is a standalone MCP server that gives your AI agent Code Mode - write and execute JavaScript that orchestrates multiple MCP tools in a single WASM-sandboxed execution.

Tools

  • add_mcp - register HTTP MCP servers at runtime (stdio via CLI)
  • remove_mcp - unregister a server
  • list_mcps - show all servers with status and tools
  • search - find tools by keyword across all registered servers
  • execute_code - run JavaScript in a WASM sandbox with access to all tools

Highlights

  • QuickJS in WASM - sandboxed JS execution with no host access
  • HTTP + stdio transport - connect to remote and local MCP servers
  • Tiered schema exposure - full TypeScript defs for small tool sets, search-first for large ones
  • Encrypted credential storage - AES-256-GCM with per-server AAD
  • Localhost-only HTTP with bearer token auth
  • 170 tests, 85%+ coverage

Install

go install github.com/voidmind-io/voidmcp/cmd/voidmcp@latest

Or download a binary below.

Quick start

# Claude Code
claude mcp add --transport stdio voidmcp -- voidmcp serve --stdio

# Claude Desktop - add to config:
{ "mcpServers": { "voidmcp": { "type": "stdio", "command": "voidmcp", "args": ["serve", "--stdio"] } } }

Built by the team behind VoidLLM.