Skip to content

fix(deps): update MCP SDK to patched transports - #155

Draft
tee8z wants to merge 3 commits into
mainfrom
tee8z/rmcp-security
Draft

tee8z wants to merge 3 commits into
mainfrom
tee8z/rmcp-security

Conversation

@tee8z

@tee8z tee8z commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

Problem and behavior

The checkpoint PR's security gate flags unbounded MCP HTTP buffering, an unbounded server schema cache, and OAuth metadata SSRF in the locked MCP SDK versions. Update both native client and server consumers to rmcp 3.9.0 and unify the lockfile on that patched release.

Adapt the agent's tool-result conversion to the new ContentBlock API. Existing text and image byte budgets remain intact. The metadata regression fixture stays below the SDK's new 16 MiB stdio frame limit so it still reaches Buzz's tool-count guard.

Record the maintainer-approved temporary exception for RUSTSEC-2026-0459: the dev-only Mesh dependency cannot yet select the patched SQLite stack. Remove that exception when the upstream parent supports it.

Validation

  • cargo check -p buzz-agent -p buzz-dev-mcp -p sprig --all-targets passed.
  • cargo test -p buzz-agent -p buzz-dev-mcp -p sprig -- --test-threads=2: 805 passed, including real agent/MCP subprocess journeys.
  • Targeted clippy with --all-targets -- -D warnings, formatting, and diff checks passed.
  • cargo deny check: advisories, bans, licenses, and sources passed with the scoped SQLite exception.
  • just ci passed workspace Rust clippy after bypassing a local sccache oversized-archive failure, then failed in desktop Tauri clippy because glib-2.0.pc is unavailable. The complete repository gate is not green locally.

Draft pending independent review and human confirmation. No relay, cluster, or production changes were performed.

The desktop lock synchronization is published in ea6e9b4; independent review confirms that blocker is resolved.
The maintainer-approved SQLite exception now also appears in deny-mesh.toml
and deny-desktop.toml, matching the separate CI graphs (18b0395).
Runtime, mesh-smoke, and desktop dependency policy checks all pass, as does the
existing desktop exception guard. The exception remains limited to the known
upstream advisory and must be removed after a compatible mesh dependency upgrade.

Hosted checks also exposed unrelated runner/flake selection failures: Playwright
runner compatibility is prepared in #162; platform-only Rust flake selection
is being fixed separately. These failures are not MCP test failures.

Signed-off-by: Tee8z <tee8z@protonmail.com>
@tee8z tee8z self-assigned this Nov 10, 2026
@coderabbitai

coderabbitai Bot commented Nov 10, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Signed-off-by: Tee8z <tee8z@protonmail.com>
@tee8z

tee8z commented Nov 10, 2026

Copy link
Copy Markdown
Collaborator Author

Independent agent review of 88fbf9a7b and the pending desktop lockfile synchronization.

One remaining build blocker: include the generated desktop/src-tauri/Cargo.lock update in this PR. The desktop workspace is separate from the root workspace. Its committed lock still selects the old SDKs while the shared agent manifest now requires rmcp 3.9; locked desktop builds cannot resolve that combination reproducibly. The existing uncommitted lock diff selects rmcp/rmcp-macros 3.9.0 and removes the obsolete SDK entries, which addresses this finding once committed.

The MCP content migration preserves text/image byte budgets and explicit elision. Its fallback handles future non-exhaustive content variants without leaking raw content. The metadata regression fixture stays below rmcp's 16-MiB frame ceiling so it continues testing Buzz's own count/metadata guards rather than an SDK rejection.

The maintainer explicitly authorized the temporary SQLite advisory exception in the active root conversation: that sqlite issue hasn;t been fixed upstream so safe to ignore for now. The narrow RUSTSEC-2026-0459 waiver is therefore authorized. The documentation identifies the unmodified dev-only mesh dependency and the condition for removing the exception.

Validation evidence supplied by the implementing agent: 805 MCP tests pass, Clippy passes, and all cargo-deny gates pass. I reviewed that code and the matching fixtures; I did not rerun the suite while storage was constrained. Full just ci stops at missing native GLib development packages, so desktop platform validation remains outstanding.

Scores: minimalism 9/10, elegance 9/10, correctness 8/10 until the separate desktop lock update is committed. No other concrete blockers found in this scope. Human workflow testing is not attested.

Signed-off-by: Tee8z <tee8z@protonmail.com>
@tee8z

tee8z commented Nov 10, 2026

Copy link
Copy Markdown
Collaborator Author

Resolved my review blocker: desktop Cargo.lock now includes the rmcp 3.9 update in ea6e9b4. The human explicitly accepted the unchanged upstream SQLite advisory; 18b0395 scopes the corresponding exceptions across the separate runtime, mesh and desktop policy checks. No remaining blockers from my initial review. Human workflow testing remains pending.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant