forked from marfrit/marfrit-packages
Compare commits
5 Commits
70c943e948
...
248bef5503
| Author | SHA1 | Date | |
|---|---|---|---|
| 248bef5503 | |||
| 8a49ac6061 | |||
| 4764f5f37f | |||
| dcb1da2f59 | |||
| 238c5cee7e |
+6
-3
@@ -3,15 +3,18 @@
|
||||
# Source of truth: git.reauktion.de/marfrit/lmcp
|
||||
|
||||
pkgname=lmcp
|
||||
pkgver=0.5.4
|
||||
pkgver=1.1.1
|
||||
pkgrel=1
|
||||
pkgdesc="Lightweight MCP (Model Context Protocol) server in pure Lua"
|
||||
arch=('any')
|
||||
url="https://git.reauktion.de/marfrit/lmcp"
|
||||
license=('MIT')
|
||||
depends=('lua' 'lua-socket')
|
||||
source=("${pkgname}-${pkgver}.tar.gz::https://git.reauktion.de/marfrit/lmcp/archive/v${pkgver}.tar.gz")
|
||||
sha256sums=('af72b8c1d88255456b75d2c53cd5c451a8923417e5498ef31858539397e09caf')
|
||||
# The _tag back-translation handles both clean releases (no '_') and
|
||||
# pre-release pkgvers (e.g. 1.2.0_rc1 → v1.2.0-rc1).
|
||||
_tag="v${pkgver//_/-}"
|
||||
source=("${pkgname}-${pkgver}.tar.gz::https://git.reauktion.de/marfrit/lmcp/archive/${_tag}.tar.gz")
|
||||
sha256sums=('80c2e815aa61a2d3baab051c51cd247bdefa9dd03d72c4867b99c49b6eae9cb9')
|
||||
|
||||
package() {
|
||||
cd "${pkgname}"
|
||||
|
||||
Vendored
+4
-3
@@ -7,9 +7,10 @@
|
||||
# package (Architecture: all, depends on lua + lua-socket).
|
||||
set -euo pipefail
|
||||
|
||||
PKGVER=0.5.4
|
||||
PKGVER=1.1.1
|
||||
UPSTREAM_TAG=v1.1.1
|
||||
PKGREL=1
|
||||
LMCP_TARBALL_SHA256=af72b8c1d88255456b75d2c53cd5c451a8923417e5498ef31858539397e09caf
|
||||
LMCP_TARBALL_SHA256=80c2e815aa61a2d3baab051c51cd247bdefa9dd03d72c4867b99c49b6eae9cb9
|
||||
HERE=$(dirname "$(readlink -f "$0")")
|
||||
|
||||
# Reproducible build: pin all file mtimes + ar member timestamps to a fixed
|
||||
@@ -22,7 +23,7 @@ work=$(mktemp -d)
|
||||
trap "rm -rf $work" EXIT
|
||||
|
||||
cd "$work"
|
||||
curl -sSLfo lmcp.tar.gz "https://git.reauktion.de/marfrit/lmcp/archive/v${PKGVER}.tar.gz"
|
||||
curl -sSLfo lmcp.tar.gz "https://git.reauktion.de/marfrit/lmcp/archive/${UPSTREAM_TAG}.tar.gz"
|
||||
echo "$LMCP_TARBALL_SHA256 lmcp.tar.gz" | sha256sum -c
|
||||
tar xzf lmcp.tar.gz
|
||||
|
||||
|
||||
Vendored
+59
@@ -1,3 +1,62 @@
|
||||
lmcp (1.1.1-1) bookworm trixie; urgency=medium
|
||||
|
||||
* Bug fix: omit empty inputSchema.properties at tool registration.
|
||||
The json.lua empty-table-as-array gotcha (same one that bit
|
||||
`ping` in v1.0.0-rc1) was re-surfacing on tool inputSchemas
|
||||
declared with `properties = {}` — spec-strict MCP clients (Zod)
|
||||
rejected the tools/list with "expected: record, received: array".
|
||||
lmcp:tool() now normalises empty properties tables by dropping
|
||||
the key entirely (JSON Schema permits omitting `properties` on
|
||||
`type:object`, meaning "any object — no constraints").
|
||||
Discovered live on a hertz-tools deployment where two custom
|
||||
no-arg tools (lxc_list, network_status) tripped the Zod check
|
||||
and caused Claude Code to mark the entire MCP endpoint as
|
||||
disconnected.
|
||||
|
||||
-- Markus Fritsche <mfritsche@reauktion.de> Mon, 18 May 2026 00:55:00 +0000
|
||||
|
||||
lmcp (1.1.0-1) bookworm trixie; urgency=medium
|
||||
|
||||
* Concurrent handler dispatch (closes #20): tool handlers run in
|
||||
cooperative coroutines. server.lua:run()'s sleep_ms yields to
|
||||
the event loop instead of blocking. Slow shell commands no
|
||||
longer serialise other requests — fast ping during a slow
|
||||
`sleep N` returns in ~10ms (was ~N seconds).
|
||||
* Progress + cancellation notifications (closes #11): tool
|
||||
handler ctx gains progress(p, total?, message?) and cancelled().
|
||||
Client→server notifications/cancelled flips a flag the running
|
||||
handler sees within ~420ms (poll interval capped when ctx
|
||||
present). Cancelled requests get a JSON-RPC -32800 error
|
||||
response (spec wording is "SHOULD NOT respond" but the practical
|
||||
UX wins; see upstream issue for the FD-inheritance trade-off).
|
||||
* Windows MSI build sync (closes #18): windows/sync.sh script
|
||||
refreshes windows/pkg/{lmcp,server,json}.lua from root before
|
||||
WiX is invoked. Closes the drift trap that left the MSI ~6
|
||||
months behind master in April 2026.
|
||||
* Zero handler source-code changes; all existing tools (shell,
|
||||
fetch, web_search, hub remote_*) benefit from concurrency and
|
||||
auto-cancellation transparently via the run() helper.
|
||||
|
||||
-- Markus Fritsche <mfritsche@reauktion.de> Sun, 17 May 2026 19:45:00 +0000
|
||||
|
||||
lmcp (1.0.0~rc1-1) bookworm trixie; urgency=medium
|
||||
|
||||
* Full MCP 2025-06-18 surface (release candidate). Closes 14
|
||||
upstream issues. New primitives: Resources, Prompts, Completion,
|
||||
Logging, Sampling, Roots, fetch, web_search. Protocol: cursor
|
||||
pagination, structuredContent, _meta passthrough, tool annotations
|
||||
(readOnlyHint/destructiveHint/idempotentHint/openWorldHint).
|
||||
Transports: stdio (LMCP_TRANSPORT=stdio) for Claude Desktop / IDE
|
||||
clients; full Streamable HTTP rewrite with select()-based event
|
||||
loop, sessions (Mcp-Session-Id), persistent SSE, server-initiated
|
||||
requests, heartbeat, DELETE.
|
||||
* json.lua: UTF-16 surrogate-pair combination + json.empty_object
|
||||
sentinel for spec-correct {} emission (fixes ping's result:[]
|
||||
bug).
|
||||
* Backwards compatible with all existing sessionless-POST clients.
|
||||
|
||||
-- Markus Fritsche <mfritsche@reauktion.de> Sun, 17 May 2026 17:25:00 +0000
|
||||
|
||||
lmcp (0.5.4-1) bookworm trixie; urgency=medium
|
||||
|
||||
* Ship examples/lmcp.service systemd unit template alongside the
|
||||
|
||||
Reference in New Issue
Block a user