Repository navigation
v0.3.0 — live Backrest v1.13.0 conformance + HTTP transport
Reconciled the mock-only v0.2.1 against the deployed Backrest v1.13.0 connect-rpc API (forge :9898). Field names target the deployed version, not upstream main (which has since diverged).
Fixed
- Broken standalone entrypoint — added missing
if __name__ == "__main__": main()(python -m backrest_mcp.serverwas a silent no-op). get_summaryfailed-count fieldbackupsFailedLast30days→backupsFailed30days; added warning/scanned fields.get_operationsrepo filter now resolvesrepo_id→repoGuidand fans out across repos when unfiltered.list_snapshots()no-arg HTTP 500 fixed by enumerating + merging repos (Backrest #223).
Added
get_health,get_logs(Connect server-streaming),get_download_url.- HTTP/PM2 transport (
BACKREST_MCP_TRANSPORT=http) — loopback-only bind + mandatoryStaticTokenVerifierbearer token;main()fails closed.stdioremains default. - CI (ruff + pytest 3.11/3.12/3.13),
otel/natsextras, live-conformance tests (BACKREST_LIVE_TEST=1).
Security
- Connect-stream decoder hardening (audit
backrest-mcp-modernization-2026-07, Low): 64 MiB buffered-response cap + raises on a malformed frame whose declared length overruns the buffer, instead of silently truncating.
Changed
list_snapshot_filesargumentrepo_guid→repo_id(resolved to GUID internally; v1.13.0 wire field remainsrepo_guid).
Full notes: CHANGELOG.md.