Patch release. Two changes to cmd/server, both motivated by running the
service behind a unix socket on a reverse-proxied host: the binary now
inherits a systemd-passed listener when present, and the healthz handler
moves under the same path prefix as the MCP endpoint so a single proxy
location forwards both. Bundled with two repository-hygiene changes.
cmd/server:
- chooseListener (new) — picks a listener at startup. When systemd has
passed a LISTEN_FDS fd via github.com/coreos/go-systemd/v22/activation,
the binary uses the inherited listener; otherwise it binds TCP at -addr
as before. The startup log records "mode":"socket-activated" or
"mode":"tcp" so operators can confirm which path is live. Same binary
works for local dev and for systemd-managed deployment with no flags
or env vars to toggle.
- Health probe path is now derived from -path. With the default -path /mcp
the probe is served at /mcp/healthz; the legacy /healthz route is no
longer registered. A reverse proxy can now route the whole MCP service
through a single "/mcp" location prefix instead of maintaining a second
forward for /healthz. Consumers of v0.1.0 that hit /healthz directly
must switch to /mcp/healthz.
Dependencies:
- github.com/coreos/go-systemd/v22 v22.7.0 — listener inheritance via
LISTEN_FDS. Loaded only by cmd/server.
Docs:
- README.md "Deployment" section rewritten to be hosting-agnostic. The
v0.1.0 draft prescribed a specific systemd-on-HestiaCP layout; the new
text points at the Dockerfile and at systemd socket activation as a
supported binary mode without dictating one operator's setup. Adds an
explicit note that any reverse proxy must disable response buffering on
the /mcp location — streamable MCP delivers tool results via Server-Sent
Events and default proxy buffering breaks the stream.
Repository hygiene:
- /deploy/ is now .gitignored. Local deployment artefacts (systemd units,
reverse-proxy templates, per-release scripts) are operator-specific by
design and live outside the public repository. The Dockerfile at the
module root remains the only portable, public-facing build artefact.
No tool surface, no validation rules, no index schema, and no behaviour of
the indexer changed. Operators upgrading from v0.1.0 must update their
health-probe URL to /mcp/healthz (or whichever path matches their -path
flag); MCP-protocol clients (Claude, Cursor, Zed, etc.) need no changes.