v0.2.0 — Lifecycle & Transport
The first MCP gateway that learns, hot-reloads, and serves both stdio + HTTP natively.
Highlights
Zero-restart hot-reload
Add, remove, and modify federated MCP servers at runtime — no hub restart required.
```bash
slm-hub server add github --command npx --arg @modelcontextprotocol/server-github
slm-hub server remove old-server
slm-hub server modify github --env GITHUB_TOKEN=...
slm-hub server reload # re-read config.json from disk
slm-hub server list --show-tools
```
Connected MCP clients receive `notifications/tools/list_changed` within ≤1s of any registry change (debounced). Existing connections to unchanged servers (e.g. kite SSE / OAuth sessions) keep their state — only the changed server's connection is drained and replaced.
Native stdio transport
`slm-hub mcp` serves MCP JSON-RPC over stdin/stdout using NDJSON framing, matching the official MCP Python SDK. Enables native Claude Desktop integration without a Node bridge — same federation, just stdin/stdout instead of HTTP.
```bash
slm-hub setup register --client claude-desktop
```
Polished observability
- `slm-hub status --verbose` shows per-server connected/disabled/failed state with last-error message including stderr tail and exit code.
- Cold start fast-retry schedule (0.5s, 1.5s, 4.5s) for transient connection failures.
Fixed
- `notifications/tools/list_changed` is now actually emitted (previously advertised in `initialize` but never sent).
- `disconnect()` no longer raises `ProcessLookupError` when terminating an already-exited child process.
- Reader EOF fails pending futures with a rich diagnostic (exit code + command + stderr tail), instead of hanging forever.
- Child stderr drained to prevent pipe-buffer deadlock under verbose MCPs.
- `asyncio.Lock` added around all `ConnectionManager` mutations.
Backward compatibility
`slm-hub start` HTTP transport continues to work identically. No config schema changes. All v0.1.x clients continue to work without modification.
Install
```bash
pip install --upgrade slm-mcp-hub # Python
npm install -g slm-mcp-hub # Node bin wrapper
```
654 tests pass. AI Reliability Engineering, shipping.