• v0.1.1 e23e86b06c

    Rene Nochebuena released this 2026-05-29 14:09:46 -06:00 | 0 commits to main since this release

    v0.1.1

    code.nochebuena.dev/einherjar/mcp

    Patch release. Two changes to cmd/server make the binary cleaner to run
    behind a unix socket on a reverse-proxied host, plus two repository-hygiene
    changes that follow from the same deployment exercise.


    Changes

    cmd/server

    • Systemd socket activation. The binary now inherits the listener from
      systemd's LISTEN_FDS protocol via
      github.com/coreos/go-systemd/v22/activation
      when present, falling back transparently to TCP -addr binding when not.
      The startup log records "mode":"socket-activated" or "mode":"tcp" so
      operators can confirm which path is live. Same binary, same flags, both
      modes — no env var or flag toggles behaviour.

    • Health probe moves under <path>/healthz. The handler is now
      registered relative to the -path flag. With the default -path /mcp,
      the probe URL becomes /mcp/healthz. The legacy root-level /healthz
      route is no longer registered. This lets a reverse proxy expose the entire
      MCP service through one location prefix instead of needing a second
      forward for the probe.

    Docs

    • Deployment section in README.md rewritten to be hosting-agnostic.
      The v0.1.0 draft prescribed a specific systemd 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;
      default nginx, Envoy, or Caddy 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.

    Upgrade Notes

    If you… Action
    Consume the MCP service from an MCP client (Claude, Cursor, Zed, etc.) None — the /mcp endpoint is unchanged.
    Monitor the service via the healthz probe Update the probe URL from /healthz to /mcp/healthz (or <your -path>/healthz if you have customised the path).
    Run the binary directly (no reverse proxy) None — the legacy -addr flag still binds a TCP listener; activation only kicks in when systemd has passed a listener.
    Run the binary under systemd with a socket unit The same binary now inherits the systemd listener automatically; no recompile, no flags.

    API

    No tool surface, no validation rules, no index schema, and no behaviour of
    the indexer changed. The 10 tools and 8 validation rules listed in
    v0.1.0's release notes remain the public surface. The only
    externally-visible URL change is the move of /healthz to
    <path>/healthz.


    Install

    go install code.nochebuena.dev/einherjar/mcp/cmd/server@v0.1.1
    

    Dependencies

    Module Version Status Role
    github.com/modelcontextprotocol/go-sdk v1.0.0 unchanged from v0.1.0 Official Go MCP SDK — server, streamable-HTTP transport, tool registration
    github.com/coreos/go-systemd/v22 v22.7.0 new in v0.1.1 Inherit listener from systemd via LISTEN_FDS; loaded only by cmd/server
    github.com/google/jsonschema-go v0.3.0 unchanged (indirect) JSON Schema generation for tool input/output validation
    github.com/yosida95/uritemplate/v3 v3.0.2 unchanged (indirect) RFC 6570 URI template support used by the SDK
    Downloads