fix(mcp): explain managed add https rule applies to every agent - #6986
Conversation
Managed `mcp add` rejects plain-http and local URLs for every agent, but the rejection read as a Hermes-specific limitation because an agent-native path (OpenClaw `mcporter`) accepts the same URL while bypassing NemoClaw credential replacement and generated egress policy. Enrich the https rejection to name the managed-vs-agent-native parity, and add a troubleshooting section documenting the requirement and the local-development path (expose the server over https on a public DNS endpoint). The validation boundary itself is unchanged. Refs #6971 Signed-off-by: Dongni Yang <dongniy@nvidia.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
📝 WalkthroughWalkthroughPlain-HTTP and local MCP URL handling now includes expanded validation messaging, parity tests for registration paths, and troubleshooting guidance describing HTTPS and public endpoint requirements. ChangesMCP URL enforcement
Estimated code review effort: 1 (Trivial) | ~5 minutes Suggested labels: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
🌿 Preview your docs: https://nvidia-preview-pr-6986.docs.buildwithfern.com/nemoclaw |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage remains at 96%, unchanged from the TypeScript / code-coverage/cliThe overall coverage in the Show a code coverage summary of the most impacted files.
Updated |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/reference/troubleshoot-mcp-servers.mdx`:
- Around line 93-100: Update the generic MCP registration guidance in the shared
troubleshooting page to use the full sandbox-scoped command format “$$nemoclaw
<sandbox> mcp add ...” instead of referring only to “mcp add”. Keep
agent-specific registration commands inside AgentOnly blocks, and ensure the
surrounding endpoint guidance remains unchanged.
- Around line 94-100: The troubleshooting guidance around managed `mcp add`
currently narrows accepted endpoints to public DNS endpoints. Update that
wording to describe a publicly reachable HTTPS endpoint, allowing either a
public hostname or public IP address, while preserving the existing TLS and
egress-policy requirements.
In `@src/lib/actions/sandbox/mcp-bridge-input-targets.test.ts`:
- Around line 119-126: Update the test containing the normalizeMcpServerUrl HTTP
rejection assertions to use a focused behavior-oriented title and suffix that
title with (`#6971`), or add the suffix to its enclosing describe. Keep the
existing rejection assertions and managed-versus-agent-native behavior
unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: a77da63a-1665-4329-bb16-1f2ce49ef82b
📒 Files selected for processing (3)
docs/reference/troubleshoot-mcp-servers.mdxsrc/lib/actions/sandbox/mcp-bridge-input-targets.test.tssrc/lib/actions/sandbox/mcp-bridge-url-validation.ts
PR Review Advisor — InformationalAdvisor assessment: Informational / high confidence Model lanes
Nemotron output stays in workflow artifacts and does not change the assessment above. E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: 2 optional E2E recommendations
This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
Address review on the mcp add https clarification: - Use the $$nemoclaw <sandbox> mcp add host CLI token in the shared troubleshooting page so the executable and sandbox context are shown. - Broaden "public DNS endpoint" to "a publicly reachable endpoint — a public hostname or IP address with public address records" because managed mcp add also accepts public IP literals. - Split the parity assertions into a focused, behavior-oriented test titled with the (#6971) suffix instead of an inline comment. Signed-off-by: Dongni Yang <dongniy@nvidia.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
<!-- markdownlint-disable MD041 --> ## Summary Add the canonical dated changelog entry required before the v0.0.85 release plan can be generated. The entry summarizes the user-visible OpenShell, DGX Station, inference, MCP, onboarding, and recovery changes merged since v0.0.84 and links to their owning guides. ## Changes - Add `docs/changelog/2026-07-16.mdx` with the exact `## v0.0.85` heading, parser-safe SPDX comment, release summary, and detailed bullets. - Link every documented theme to its most specific published OpenClaw guide routes. - Reconcile the release entry with these merged source PRs: - #6726 -> `docs/changelog/2026-07-16.mdx`: Document the supported OpenShell v0.0.85 upgrade, immutable consumed artifacts, multiline exec, credential rewrite diagnostics, and child-process TLS boundary. - #6986 -> `docs/changelog/2026-07-16.mdx`: Document managed MCP behavior shared across supported agents. - #6991 and #7045 -> `docs/changelog/2026-07-16.mdx`: Document qualified DGX Station host preparation and the interactive-terminal boundary for `--station-deepseek`. - #6992, #7001, #7006, and #7044 -> `docs/changelog/2026-07-16.mdx`: Document managed-model reasoning behavior, safe inference route mutation, and verified vLLM served aliases. - #6865, #7010, and #7028 -> `docs/changelog/2026-07-16.mdx`: Document onboarding DNS recovery, explicit notice acceptance, and upgrades with user-local OpenShell. - #7005, #7021, #7029, and #7049 -> `docs/changelog/2026-07-16.mdx`: Document rebuild backup safety, no-dashboard state, managed gateway discovery, and Hermes shields topology checks. ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [x] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [ ] Tests added or updated for changed behavior - [x] Existing tests cover changed behavior — justification: `test/changelog-docs.test.ts` validates the canonical heading, parser-safe SPDX comment, and detailed entry structure; the docs build validates published routes. - [ ] Tests not applicable — justification: - [x] Docs updated for user-facing behavior changes - [ ] Docs not applicable — justification: - [ ] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [ ] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## Verification - [x] PR description includes a `Signed-off-by:` line and every commit appears as `Verified` in GitHub - [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or `npm run check:diff` passed when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — `npx vitest run test/changelog-docs.test.ts` passed 6/6. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — not applicable to this doc-only entry. - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [ ] `npm run docs` builds without warnings (doc changes only) — passed with 0 errors and 2 pre-existing Fern warnings. - [x] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [x] New doc pages include SPDX header and frontmatter (new pages only) — native changelog entries use the required parser-safe MDX SPDX comment instead of frontmatter. --- Signed-off-by: Charan Jagwani <cjagwani@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added release notes for NemoClaw v0.0.85. * Documented improvements to compatibility, credential handling, setup validation, recovery workflows, endpoint configuration, gateway discovery, and runtime validation. * Added links to relevant user-guide sections. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Summary
nemoclaw <sandbox> mcp addrejects plain-HTTP and local MCP URLs and requires HTTPS. Issue #6971 reported this as a Hermes-specific limitation because OpenClaw appeared to accept the same URL. In fact the managedmcp addURL validator is shared and rejects HTTP identically for every agent; OpenClaw's acceptance comes from its own in-sandboxmcporterregistration, which bypasses NemoClaw's credential replacement and egress policy. This PR clarifies that parity in the rejection message and documents it — it does not change the validation boundary.Related Issue
Fixes #6971
The issue asked for one of two resolutions: (a) make Hermes accept local HTTP like OpenClaw, or (b) document the Hermes-only HTTPS requirement and the recommended local-development setup. This PR takes (b): the HTTPS + public-DNS + host-alias rejection is a deliberate, reviewed security boundary (credential-bearing MCP over TLS; OpenShell v0.0.72 cannot pin host aliases), and the reported behavior is not actually Hermes-specific — the shared managed validator rejects HTTP for every agent, while OpenClaw's apparent acceptance comes from its unvalidated in-sandbox
mcporterpath. Clarifying the rejection message and documenting the boundary + local-dev path resolves the reported confusion without weakening the boundary, so this closes the issue rather than only referencing it.Changes
normalizeMcpServerUrl(src/lib/actions/sandbox/mcp-bridge-url-validation.ts) to state that managedmcp addenforces HTTPS for every agent and that an agent-native registration path may accept a plain-HTTP URL but bypasses NemoClaw credential replacement and egress policy. Themust use https://behavior is unchanged.docs/reference/troubleshoot-mcp-servers.mdx) documenting the managed-vs-agent-native parity and the local-development path (expose the server over HTTPS on a public DNS endpoint).mcp-bridge-input-targets.test.tsthat lock the new parity wording (the diagnostic that should have prevented the Hermes-specific misread).Type of Change
Quality Gates
sandbox), but only the rejection message string; the HTTPS / public-DNS / host-alias validation boundary is byte-for-byte unchanged and covered by existing tests.Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailable — hooks passed on commit and push (scoped to the 3 changed files;hadolintis not installed locally and is not exercised — no Dockerfile in this diff).npx vitest run src/lib/actions/sandbox/mcp-bridge-input-targets.test.ts(5 passed); fullmcp-bridgeunit suite (145 passed);npm run typecheck:cliclean.npm run docsbuilds without warnings (doc changes only) —check-docs-published-routes: OK, 0 errors;test/check-docs-links.test.ts+test/check-docs-published-routes.test.ts(27 passed).Signed-off-by: Dongni Yang dongniy@nvidia.com
Summary by CodeRabbit