lmcp: 1.1.1 -> 1.2.1 (tools.d plugin scan + LMCP_HOST/LMCP_CONF env) #25

Merged
marfrit merged 1 commits from claude-noether/marfrit-packages:noether/lmcp-1.2.1 into main 2026-05-17 23:37:19 +00:00
Contributor

Tracks upstream lmcp v1.2.1 (commits e05438f + c5375b8). Combined release closing lmcp#22 structurally.

What's new

tools.d/ plugin scan — packaged server.lua now scans LMCP_TOOLS_DIR (default /opt/lmcp/tools.d on POSIX) for *.lua files and invokes each as a function receiving (server, run). Hosts can register custom tools via plain plugin files without forking server.lua.

LMCP_HOST + LMCP_CONF env vars — packaged server.lua now threads these into lmcp.new(opts.host, opts.conf). Hosts that need single-interface binding (e.g. hertz on 192.168.88.18) or a conf-file-based bearer token (e.g. /opt/herding/etc/hertz-tools.conf) drive the packaged entrypoint directly via systemd env.

Why

The fork-and-drift pattern that bit hertz + ampere (issue lmcp#22) — local /opt/lmcp/server.lua overrides that copy-paste from the upstream and then accumulate hand-merged tools — is now structurally fixable. With v1.2.1, a host's local config is exactly:

  • /etc/systemd/system/lmcp.service — points at packaged /usr/share/lua/5.4/server.lua, sets LMCP_HOST/LMCP_CONF/LMCP_TOOLS_DIR
  • /opt/lmcp/tools.d/<host>.lua — only the genuinely host-specific tools (no copy-paste of packaged generics)

apt upgrade lmcp then delivers packaged improvements automatically; nothing to merge by hand.

Surface

  • Arch: pkgver=1.2.1, new sha256
  • Debian: PKGVER=1.2.1, UPSTREAM_TAG=v1.2.1, changelog entry

Tarball sha256: bf9cce1a84c66b1b74c5aec923c5960d60ae33c221afc8d47ce0d74b8f7ee609

Test plan

  • CI build (arch + debian) succeeds with new sha256
  • After merge + publish, apt install lmcp on hertz → drop /opt/lmcp/server.lua override, install tools.d/hertz.lua plugin, update systemd unit, restart. Verify tools/list shows packaged generics (fetch, web_search, …) + hertz-specifics (fritz, ha_api, lxc_, mqtt_, mediagrab, …).
  • Same for ampere when it's next powered on.
Tracks upstream lmcp **v1.2.1** (commits `e05438f` + `c5375b8`). Combined release closing lmcp#22 structurally. ## What's new **tools.d/ plugin scan** — packaged `server.lua` now scans `LMCP_TOOLS_DIR` (default `/opt/lmcp/tools.d` on POSIX) for `*.lua` files and invokes each as a function receiving `(server, run)`. Hosts can register custom tools via plain plugin files without forking server.lua. **LMCP_HOST + LMCP_CONF env vars** — packaged server.lua now threads these into `lmcp.new(opts.host, opts.conf)`. Hosts that need single-interface binding (e.g. hertz on 192.168.88.18) or a conf-file-based bearer token (e.g. `/opt/herding/etc/hertz-tools.conf`) drive the packaged entrypoint directly via systemd env. ## Why The fork-and-drift pattern that bit hertz + ampere (issue lmcp#22) — local `/opt/lmcp/server.lua` overrides that copy-paste from the upstream and then accumulate hand-merged tools — is now structurally fixable. With v1.2.1, a host's local config is exactly: - `/etc/systemd/system/lmcp.service` — points at packaged `/usr/share/lua/5.4/server.lua`, sets `LMCP_HOST`/`LMCP_CONF`/`LMCP_TOOLS_DIR` - `/opt/lmcp/tools.d/<host>.lua` — only the genuinely host-specific tools (no copy-paste of packaged generics) `apt upgrade lmcp` then delivers packaged improvements automatically; nothing to merge by hand. ## Surface - **Arch:** `pkgver=1.2.1`, new sha256 - **Debian:** `PKGVER=1.2.1`, `UPSTREAM_TAG=v1.2.1`, changelog entry **Tarball sha256:** `bf9cce1a84c66b1b74c5aec923c5960d60ae33c221afc8d47ce0d74b8f7ee609` ## Test plan - [ ] CI build (arch + debian) succeeds with new sha256 - [ ] After merge + publish, `apt install lmcp` on hertz → drop `/opt/lmcp/server.lua` override, install tools.d/hertz.lua plugin, update systemd unit, restart. Verify `tools/list` shows packaged generics (fetch, web_search, …) + hertz-specifics (fritz, ha_api, lxc_*, mqtt_*, mediagrab, …). - [ ] Same for ampere when it's next powered on.
claude-noether added 1 commit 2026-05-17 23:34:08 +00:00
Tracks upstream lmcp v1.2.1 (commits e05438f + c5375b8). Combined
release that lets hosts like hertz/ampere stop maintaining forked
/opt/lmcp/server.lua overrides — packaged server.lua becomes the
canonical entrypoint, host-local tools live in /opt/lmcp/tools.d/
as plugin files, single-interface binding + conf-file auth come via
LMCP_HOST + LMCP_CONF systemd env. Closes lmcp#22 structurally.

New tarball sha256:
  bf9cce1a84c66b1b74c5aec923c5960d60ae33c221afc8d47ce0d74b8f7ee609

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
marfrit merged commit eb1782e86f into main 2026-05-17 23:37:19 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marfrit/marfrit-packages#25