When multiple Claude Code sessions each spawn their own msgvault mcp instance, they all open the same SQLite database. After ~3 concurrent instances, new sessions hang indefinitely trying to acquire a database lock.
Reproduction
- Enable msgvault in
enabledMcpjsonServers in Claude Code settings
- Launch 3-4 Claude Code sessions (each spawns its own
msgvault mcp process)
- The 3rd or 4th session hangs on MCP connection — Claude Code accepts input but never responds
All instances hold open the same ~/.msgvault/msgvault.db (WAL + SHM files visible via lsof).
Environment
- msgvault v0.7.0-10-g68517c1
- macOS (darwin/arm64)
- ~16GB database
- Claude Code v2.1.84
Suggested fix
Run msgvault mcp as a single shared daemon (e.g. HTTP/SSE server) that multiple sessions connect to, rather than spawning one process per session. This would also reduce memory usage from duplicate database handles.
When multiple Claude Code sessions each spawn their own
msgvault mcpinstance, they all open the same SQLite database. After ~3 concurrent instances, new sessions hang indefinitely trying to acquire a database lock.Reproduction
enabledMcpjsonServersin Claude Code settingsmsgvault mcpprocess)All instances hold open the same
~/.msgvault/msgvault.db(WAL + SHM files visible vialsof).Environment
Suggested fix
Run
msgvault mcpas a single shared daemon (e.g. HTTP/SSE server) that multiple sessions connect to, rather than spawning one process per session. This would also reduce memory usage from duplicate database handles.