MentisDB 0.9.2 introduces a smarter stdio MCP mode that makes connecting Claude Desktop, Cursor, and other MCP-spawning clients effortless. The stdio process now auto-detects a running daemon, proxies to it if found, or launches one in the background if not. Zero configuration, shared live state.
Previously, mentisdbd --mode stdio created its own independent
MentisDbService instance every time it started. This worked fine
as a standalone process, but meant:
The mcp-remote bridge works, but it's an extra dependency chain: Node.js ≥ 20,
npm install, TLS self-signed cert handling, NODE_TLS_REJECT_UNAUTHORIZED.
For a tool that runs on localhost, that's a lot of friction.
When mentisdbd --mode stdio starts, it follows a three-step flow:
The stdio process hits http://127.0.0.1:9471/health with a 500ms
timeout. If it gets a 200 response, a daemon is already running.
If no daemon responds, the stdio process launches one in the background:
nohup mentisdbd & — the daemon outlives the stdio processstart /B mentisdbd — detached background processIt then polls the health endpoint for up to 10 seconds, waiting for the daemon to become responsive.
Once a daemon is confirmed, the stdio process acts as a lightweight JSON-RPC proxy:
| Stdio Method | Proxy Behavior |
|---|---|
initialize | Handled locally — returns protocol version and capabilities |
ping | Handled locally — returns empty result |
tools/list | Forwarded to daemon's POST /tools/list |
tools/call | Forwarded to daemon's POST /tools/execute |
resources/list | Handled locally — returns mentisdb://skill/core |
resources/read | Handled locally — returns embedded skill markdown |
Static methods (initialize, ping, resources) are served from the stdio process itself. Dynamic methods (tools/list, tools/call) are forwarded to the daemon's HTTP MCP endpoints. This minimizes latency for handshake operations while ensuring all tool execution hits the live daemon state.
If daemon launch fails (e.g., binary not found, permission denied), the stdio
process falls back to the original local mode — creating its own
MentisDbService with state shared only via disk files. This
ensures Claude Desktop still works even when the daemon can't start.
The entire Claude Desktop config is now three lines:
{
"mcpServers": {
"mentisdb": {
"command": "mentisdbd",
"args": ["--mode", "stdio"]
}
}
}
That's it. No Node.js. No mcp-remote. No TLS config. No daemon pre-start.
Just point Claude Desktop at the mentisdbd binary and go.
You can also run the setup wizard to write this automatically:
mentisdbd setup claude-desktop
Any MCP client that spawns stdio subprocesses benefits from this:
mentisdbd --mode stdio as an MCP command
HTTP-based clients (Claude Code, Codex, Qwen Code) continue to use the
streamable HTTP MCP endpoint at http://127.0.0.1:9471 as before.
The stdio mode is specifically for clients that spawn subprocesses.
The proxy approach solves several problems at once:
cargo install mentisdb --force
Then update your Claude Desktop config to use stdio mode. If you were previously using mcp-remote, you can remove the Node.js and mcp-remote dependencies entirely.
The stdio proxy respects the same environment variables as the daemon:
MENTISDB_BIND_HOST — the host to check for a running daemon (default: 127.0.0.1)MENTISDB_MCP_PORT — the port to check (default: 9471)MENTISDB_DIR — used when falling back to local modeIf you run the daemon on a non-standard port, the stdio process will detect and proxy to it automatically.