Files
Markus Fritsche dd987e4c1e contrib: sic companion helpers (lmcp-tool, sicwrite, sicedit)
lmcp-tool drives a host's lmcp (MCP) tools over a stateless tools/call via sic —
list for discovery, key=value args so a model never embeds JSON in a shell (apostrophe-safe).
sicwrite/sicedit pass file content as argv since sicd consumes stdin for the frame.
References the lmcp server project: git.reauktion.de/marfrit/lmcp

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EWpfhDgYNA21tETDP9ueBE
2026-07-19 20:36:05 +02:00

31 lines
1.5 KiB
Markdown

# contrib — companion helpers for driving remote tools through sic
Optional POSIX-sh helpers that pair `sic` with an **[lmcp](https://git.reauktion.de/marfrit/lmcp)**
server (a lightweight Lua MCP server). Install any of them on the hosts you reach with sic and
call them as `sic <host> <helper> ...`. None of these are required by sic itself.
## `lmcp-tool`
Call a host's lmcp (MCP) tools over a single stateless HTTP `tools/call`, with no persistent
MCP session:
```
sic <host> lmcp-tool list # discover the tools this host offers
sic <host> lmcp-tool web_search "query=today's news" # call one, args as key=value
sic <host> lmcp-tool fetch url="https://example.com"
```
The `key=value` form is the important bit: a model never has to embed JSON in a shell string,
so apostrophes (`today's`, `what's`) ride safely inside double quotes and `lmcp-tool` does the
JSON-encoding. Raw JSON (`lmcp-tool <tool> '{"k":"v"}'`) still works. Host/port/token are read
from `$LMCP_HOST/$LMCP_PORT/$LMCP_TOKEN` or the local `lmcp.service` systemd unit. See the
[lmcp project](https://git.reauktion.de/marfrit/lmcp) for the server side.
## `sicwrite` / `sicedit`
`sicd` consumes stdin for the netstring frame, so a remote command can't be fed content via a
pipe. These pass content as **argv** instead (which sic delivers losslessly):
```
sic <host> sicwrite <path> <content> # write a file
sic <host> sicedit <path> <old> <new> # replace one exact occurrence
```