Skip to content

Releases: muchiny/bridge-mcp

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 26 Aug 21:34
2465bc1

What's Changed

  • fix(ci): retry test-container pull to survive Docker Hub rate limits by @muchiny in #63
  • test: cover post_process on 13 low-coverage handlers (+26 tests) by @muchiny in #64
  • Fix/session reader blocking and utf8 truncation by @muchiny in #115
  • ci: make every workflow run the toolchain it claims, and finish its jobs by @muchiny in #113
  • fix(ci): clear the last stable-clippy lint and let diff mutation finish by @muchiny in #116
  • fix(security): escape or validate every shell argument the builders splice by @muchiny in #120
  • build(deps): bump the rust-minor-patch group across 1 directory with 21 updates by @dependabot[bot] in #111
  • fix(ci): repair the two scheduled gates that have been lying for weeks by @muchiny in #126
  • fix: ship the documented feature set, and actually write the HTTP audit trail by @muchiny in #125
  • build(deps): bump the five pending GitHub Actions in one change by @muchiny in #128
  • fix(fuzz): the harness stopped compiling six weeks ago; nothing said so by @muchiny in #130
  • build(deps): serde-saphyr 1.x, jsonwebtoken 11, base64 0.23 by @muchiny in #129
  • fix(ssh): three ways the SSH layer reported something it had not established by @muchiny in #127
  • fix: six mechanisms that reported success without doing the thing they named by @muchiny in #131
  • fix(domain): a completed task could resolve to None if eviction won the re-read by @muchiny in #134
  • chore(release): 2.2.0 — name the seven breaking changes 1.x shipped quietly by @muchiny in #133
  • fix(lint): clear the clippy 1.98 and rustdoc failures main inherited from dev by @muchiny in #140
  • fix(fuzz): the targets asserted a product that no longer exists by @muchiny in #136
  • chore(release): v3.0.0 by @muchiny in #148

Full Changelog: v1.20.0...v3.0.0

v1.20.0

Choose a tag to compare

@github-actions github-actions released this 03 Jul 00:11
a680f76

What's Changed

  • Plugin 1.19.1 — skill descriptions + version, README marketplace install & rebrand by @muchiny in #55
  • chore(deps): bump serde-saphyr from 0.0.27 to 0.0.28 by @dependabot[bot] in #58
  • release: v1.20.0 — russh 0.62, CI hardening, live-Pi bug fixes, doc sweep by @muchiny in #62

Full Changelog: v1.19.0...v1.20.0

v1.19.0 — Plugin marketplace + structured-output tabular fix

Choose a tag to compare

@muchiny muchiny released this 18 Jun 23:05
9385043

Plugin marketplace install:

claude plugin marketplace add muchiny/bridge-mcp
claude plugin install bridge-mcp@muchiny
cargo install --git https://github.com/muchiny/bridge-mcp --features full

Fixed structured output for ssh_process_list / ssh_service_list / ssh_net_connections (empty/garbled rows on real hosts), verified live on a Raspberry Pi. Deps: kube 4.0, k8s-openapi 0.28, tower-http 0.7. +79 tests. Rebrand to Bridge MCP.

Full notes: https://github.com/muchiny/bridge-mcp/blob/main/CHANGELOG.md

🤖 Generated with Claude Code

What's Changed

  • Release v1.19.0 — plugin marketplace + structured-output tabular fix + dep bumps by @muchiny in #54

Full Changelog: v1.18.0...v1.19.0

v1.18.0

Choose a tag to compare

@github-actions github-actions released this 30 May 23:54

What's Changed

  • release: v1.17.0 — security audit 2026-05-09 (30+ FIND remediated) by @muchiny in #48

Full Changelog: v1.17.0...v1.18.0

v1.17.0

Choose a tag to compare

@github-actions github-actions released this 09 May 23:35

Full Changelog: v1.16.1...v1.17.0

v1.16.1 — annotation honesty + parsing fixes

Choose a tag to compare

@muchiny muchiny released this 07 May 06:11

v1.16.1 — annotation honesty + parsing fixes

Annotations (security):

  • Add MutatingIdempotent annotation kind (4th variant)
    preserves idempotent_hint=true on convergent mutators
  • Fix 8 mis-tagged tools that lied about being read_only:
    ssh_k8s_apply, ssh_iis_restart, ssh_nginx_reload,
    ssh_service_restart, ssh_service_daemon_reload,
    ssh_win_service_restart, ssh_alert_set, ssh_helm_rollback
  • New tests/annotation_audit.rs: CI gate enforcing
    name x annotation coherence by suffix rule + allowlist
  • Couples cleanly with security.require_elicitation_on_destructive
    so confirmation dialogs fire on real state changes

Parsing fixes:

  • ssh_storage_df: prepend LC_ALL=C so headers stay English
  • ssh_storage_lsblk: --list flag drops Unicode tree glyphs
    (box-drawing chars shifted byte alignment, broke gutter detection)
  • ssh_process_list: replace 'grep | grep -v grep' with awk that
    preserves NR==1 (header) so columnar parser keeps working

Misc:

  • Restore [dev-dependencies] block (tempfile, criterion, filetime,
    tracing-test, proptest, insta) — cargo test --all-targets --no-run
    now compiles again
  • README: 4 hero workflows up-front (Linux service, K8s with 80%
    fewer tokens, cross-platform, audited destructive)
  • Sync tool counts to 357/75/9; drop phantom protocols from docs

Verified: 6974 lib tests + 5 audit tests + 246 process + 104 storage
all green. cargo fmt --check + clippy -D warnings + cargo deny pass.
Tested live on raspberry pi 5 (k3s + plex + argocd stack).

Full Changelog: v1.16.0...v1.16.1

v1.16.0 — Phase D/E/F/G + Mutation Harden

Choose a tag to compare

@muchiny muchiny released this 03 May 12:38

[1.16.0] - 2026-05-03

Summary

MCP interactive integration: Phase D/E/F/G across 38 handlers + mutation
testing harden across 27 modules.
Long-running tools now stream
per-step progress, destructive tools confirm via elicitation, diagnostic
tools optionally enrich output via LLM sampling, and multi-step tools
emit structured logs through notifications/message. Test suite grew
from 6,934 to 6,973 tests; mutation kill rate is now 99 %+ on the
testable surface across 27 hot files.

Added

  • Phase D — Per-step progress notifications. Long-running multi-host
    tools (ssh_exec_multi, ssh_metrics_multi, ssh_runbook_execute,
    ssh_log_search_multi, ssh_log_tail_multi) now emit
    notifications/progress for each host or step, so clients with a
    progress UI can render real-time completion instead of a single
    black-box wait.
  • Phase E — Elicitation on destructive tools. 18 destructive
    handlers gain a security.require_elicitation_on_destructive
    opt-in: when enabled and the client advertises the elicitation
    capability, the server sends elicitation/create and short-circuits
    with a structured error if the user declines. Affected tools include
    ssh_cron_remove, ssh_file_patch, ssh_file_write,
    ssh_files_write, ssh_firewall_deny, ssh_group_delete,
    ssh_helm_uninstall, ssh_hyperv_vm_stop, ssh_k8s_delete,
    ssh_net_equip_config, ssh_process_kill, ssh_reg_delete,
    ssh_service_stop, ssh_template_apply, ssh_win_feature_remove,
    ssh_win_firewall_remove, ssh_win_process_kill,
    ssh_win_service_stop.
  • Phase F — Optional LLM sampling on diagnostic tools. 13
    diagnostic handlers add a summarize=true flag (with
    summary_max_tokens cap) that asks the client's LLM to analyse the
    raw output via sampling/createMessage and appends the summary
    alongside the raw data. Falls through to raw-only when the client
    doesn't advertise sampling. Tools: ssh_diagnose,
    ssh_security_audit, ssh_log_aggregate, ssh_compliance_check,
    ssh_compliance_score, ssh_compliance_report, ssh_vuln_scan,
    ssh_journal_query, ssh_compare_state, ssh_env_diff,
    ssh_env_drift, ssh_incident_correlate, ssh_incident_triage.
  • Phase G — MCP-side structured logging. 8 long-running tools
    (ssh_runbook_execute, ssh_ansible_playbook, ssh_helm_install,
    ssh_helm_upgrade, ssh_helm_rollback, ssh_terraform_apply,
    ssh_k8s_rollout, ssh_security_audit) emit per-step
    notifications/message so clients can stream the playbook /
    rollout / audit log to their UI instead of waiting for the bulk
    result.
  • Async pre-execute and enrich hooks on StandardTool so handlers
    can drive elicitation / sampling / logging without re-implementing
    the 16-step pipeline.

Changed

  • Tool count: 338 → 357 across 75 groups (was 74). The
    total_tools and total_groups fields on the mcp_list_tool_groups
    response, the DXT manifest, and the .well-known/mcp/server-card.json
    all reflect the new totals.
  • Metrics::render_token_summary arithmetic refactor. The two
    inner if before > 0 { saved * 100 / before } else { 0 } and
    if total_kind > 0 { *count * 100 / total_kind } else { 0 } checks
    are now removed — the outer guards already prove both denominators
    positive, so the dead branches are inlined as direct divisions.
    Behaviour identical, surface for arithmetic mutations reduced.

Tests

  • Mutation testing: 27 modules, ~99 % kill rate on viable mutants.
    Files now at 100 % kill rate (excluding provably-equivalent or
    feature-gated mutants): mcp/{elicitation, sampling, progress, logger, meta_tools, pending_requests, client_requester, instructions, protocol}.rs, domain/{output_kind, output_cache, diff, output_truncator, runbook, history, task_store, data_reduction}.rs, metrics.rs, security/{rbac, validator, audit, rate_limiter}.rs, ports/{tools, executor, protocol}.rs.
    Two mutants on mcp/standard_tool.rs (audit-log content + warn
    tracing) remain — killing them needs a tracing-subscriber and
    audit-log file harness, deferred.
  • Test count: 6 934 → 6 973 lib tests (+39 net new). New tests
    include tokio::time::timeout-bounded shortcuts on
    ToolContext::elicit_confirm / sample, async-cache twins of the
    truncator arithmetic invariants, two-kind percentage assertions on
    render_token_summary, single-field is_empty cases on
    ToolAnnotations, exact-byte 160/161-char truncation cases, and a
    threaded floor_char_boundary / ceil_char_boundary termination
    check that catches i /= 1 / i *= 1 infinite-loop mutants.
  • .cargo/mutants.toml exclude_re now lists ten classes of
    provably equivalent or untestable-without-Clock-injection
    mutations: ToolHandler::output_kind defaults, empty-vec
    scoped_paths, jq-feature-gated bodies, OutputCache TTL
    boundaries, floor/ceil short-circuit equivalents, infinite-loop
    arithmetic on the boundary scanners, ConfigWatcher fs-timing /
    filter mutations, AuditLogger TTL boundary, and the > -> <
    u64-zero comparison family in render_token_summary.

Full Changelog: v1.15.1...v1.16.0

v1.15.1

Choose a tag to compare

@github-actions github-actions released this 30 Apr 19:58

Full Changelog: v1.15.0...v1.15.1

v1.15.0

Choose a tag to compare

@github-actions github-actions released this 27 Apr 11:49

Full Changelog: v1.14.0...v1.15.0

v1.14.0

Choose a tag to compare

@github-actions github-actions released this 26 Apr 21:27

Full Changelog: v1.13.0...v1.14.0