Skip to content

Releases: graph-memory/process-mcp

v0.2.0

24 Apr 13:17

Choose a tag to compare

chore: bump version to 0.2.0

Bumps package.json and in-code version strings (McpServer, commander)
to 0.2.0 to pick up the proc_stdin feature added since 0.1.0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v0.1.0

24 Apr 13:05

Choose a tag to compare

feat: initial process-mcp supervisor implementation

HTTP MCP server that supervises long-running dev processes. Runs in its
own process so state survives Claude Code restarts.

Tools (10):
  proc_start, proc_stop, proc_restart, proc_list, proc_remove,
  proc_logs, proc_wait_ready, proc_port_who, proc_exec, proc_signal

Features:
- In-memory log ring per process, O(1) push, filter backward-scan
- JSON log enrichment (pino/bunyan/winston/structlog level normalization)
  and structured `where` DSL over parsed JSON fields
- Pretty-render (two-line pino-style) + raw/json output modes
- Cross-platform tree-kill (POSIX process groups, Windows taskkill /T)
- `proc_wait_ready` with URL probe + regex log pattern, early-death
  fast-fail with tail of stderr
- `proc_exec` with tree-kill timeout, stdin input, bounded output
- Idle TTL per process (opt-in) and grave TTL for exited entries
- TTL sweeper also enforces global log memory cap
- Resource caps: max sessions (100), max processes (200), total log mem
  (200 MB), per-line size (10 KB), per-tool string length limits

Security:
- Refuse-to-start on non-loopback bind without API key
- CSRF defense: Content-Type application/json required, Origin allowlist
- API key compared with crypto.timingSafeEqual
- Per-name lock serializes start/stop/restart/remove (no orphan races)
- No shell invoked; cmd strings parsed by execa splitter only
- PROC_MCP_* env filtered from spawned children (extendEnv:false)
- Non-root Docker user (node) + tini as PID 1

Crash recovery:
- State file in \$TMPDIR/process-mcp-<uid>/<port>.json records all
  running child PIDs (debounced writes)
- Startup reaper tree-kills orphans left by a previous supervisor crash,
  refuses to reap if the prev supervisor is still alive

Platform: macOS, Linux, Windows. CI runs on all three × node 24.
Docker image: multi-arch (amd64/arm64), binds 0.0.0.0, requires API key.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>