Skip to content

feat(observability): correlate MCP inspection outcomes with HTTP requests - #12

Draft
afourniernv wants to merge 3 commits into
feat/5396-request-revisions/afourniernvfrom
feat/5397-mcp-correlation/afourniernv
Draft

afourniernv wants to merge 3 commits into
feat/5396-request-revisions/afourniernvfrom
feat/5397-mcp-correlation/afourniernv

Conversation

@afourniernv

@afourniernv afourniernv commented Nov 9, 2026 •

Copy link
Copy Markdown
Owner

Summary

Connect MCP inspection and enforcement outcomes to the inspected HTTP request,
without recording tool arguments or payloads. This is layer 5/6, based on
resource revisions #11.
The HTTP core remains NVIDIA #5214.

Related Issue

Closes NVIDIA#5397. Tracking: NVIDIA#5210.
This remains a draft on the author fork, not upstream promotion.

Changes

  • Place owned spans around actual body, selected-schema, transformed-body,
    final-forward and credential-owner inspection work where each path runs.
  • Record bounded message kinds, counts, method classifications and selected
    protocol revisions. Metadata recording does not create or close spans.
  • Establish correlation before dedicated request-body reads, retaining receipts
    and audit evidence for early errors. Preserve existing benign-disconnect
    handling rather than treating every body-read error as a policy denial.
  • Preserve Current hooks' complete-body withholding, generation fences,
    pinned resource identities and middleware/credential protections.

No new configuration, gateway RPC or protobuf. No tool names, arguments, raw
errors or payloads are added to security telemetry.

Testing

  • Network: 1,735 passed; two existing ignored. OCSF 188, middleware 166 and
    OpenTelemetry 70 passed: 2,159 total.
  • Covers actual inspection stages, normal protocol negotiation and early
    dedicated-body failures/disconnects on the updated HTTP-hook base.
    The disconnect regression covers ConnectionReset; this port does not expand
    the pre-existing disconnect classifier to other I/O variants.
  • Strict all-target Clippy, full pre-commit and the normal signed hook passed.
  • Signed integration update: 8801b1fa2; parents 139f556a1 and 4f4c0e5ba.
  • Final integrated stack 6b81f8784: full mise run test passed unchanged
    (9,189 Rust tests, 94 auxiliary tests, Python 211 and TypeScript 206).
  • Ten live native Hermes/Relay workflows used matching-source binaries. The
    real MCP rotate attempt returned 403 with one l7-mcp primary, actual
    inspection stages, and unchanged target/rotation counters. Receipt, W3C link
    and OCSF joins were verified without fabricating span parentage.

Live evidence is cumulative on the final stack, not isolated-layer E2E. Initial
fixture failures and incomplete agent attempts are retained; isolated and final
full reruns passed. Full repository mise run ci is not claimed.

Checklist

  • Existing review history retained; no rewritten published commits.
  • Strict Clippy, full pre-commit and DCO-signed integration commit.
  • Relevant crate and published observability guidance retained.
  • Fresh final-stack live validation.
  • Upstream promotion after earlier layers.

Signed-off-by: Alex Fournier <afournier@nvidia.com>
…TP hooks

Signed-off-by: Alex Fournier <afournier@nvidia.com>
Signed-off-by: Alex Fournier <afournier@nvidia.com>
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