Skip to content

fix: stop advertising desktop MCP servers as launched (#4501) - #4517

Merged
praisonai-triage-agent[bot] merged 1 commit into
mainfrom
claude/issue-4501-20260827-1345
Aug 28, 2026
Merged

fix: stop advertising desktop MCP servers as launched (#4501)#4517
praisonai-triage-agent[bot] merged 1 commit into
mainfrom
claude/issue-4501-20260827-1345

Conversation

@praisonai-triage-agent

Copy link
Copy Markdown
Contributor

Fixes #4501

Problem

The desktop settings registry described MCP servers as "Tool servers launched over stdio. Each is disabled until you enable it." and offered an enable switch that persists across restarts — but the capability does not exist.

Verified against current code:

  • engine/server.py load_mcp() (:631) has exactly two consumers: GET /mcp (:1517) and the POST /mcp editor (:1685).
  • _get_agent (:1143) builds Agent(..., tools=_builtin_tools()) (:1152–1158) and never spawns an MCP server or passes MCP tools.
  • No MCP client, stdio spawn, or import exists in the engine.

The text advertised a live capability with no consumer. Building a real MCP client is out of scope for a minimal fix, so this ships the honest sentence instead.

Change

  • Replace the misleading hint in all three synced registry copies (ui/settings-registry.js, frontend/src/settings-registry.js, inline in ui/index.html) with: "Saved for a future release. Servers listed here are stored only — the engine does not launch them yet, so the model cannot use them."
  • Add the same clarifying note at the top of the Manage MCP panel.
  • Add a registry-drift.test.mjs guard asserting the hint no longer claims a launch the engine never performs.

The existing sync-registry.mjs --check guarantees the three copies stay identical (verified passing).

Test

node --test frontend/tests/registry-drift.test.mjs → 3 pass.

Generated with Claude Code

…4501)

The desktop settings registry described MCP servers as launched over stdio and offered an enable switch, but engine/server.py load_mcp() has no client consumer: _get_agent builds Agent(tools=_builtin_tools()) and never spawns a server. The text claimed a live capability that does not exist.

Apply the honest-text fix to all three synced registry copies and the Manage panel, and add a registry-drift guard asserting the hint no longer claims a launch the engine never performs.

Co-authored-by: MervinPraison <MervinPraison@users.noreply.github.com>
@praisonai-triage-agent

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@praisonai-triage-agent

Copy link
Copy Markdown
Contributor Author

/review

@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@greptile-apps

greptile-apps Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR corrects the desktop UI so configured MCP servers are described as stored configuration rather than active integrations.

  • Updates all three synchronized settings-registry copies with accurate MCP availability text.
  • Adds the same clarification to the MCP management panel.
  • Adds a regression test covering the wording and retaining the existing registry synchronization check.

Confidence Score: 5/5

The PR appears safe to merge, with no concrete changed-code defect identified.

The changes are limited to accurate static UI copy and a regression test, preserve synchronized registry content, and introduce no reachable behavioral or security failure.

Important Files Changed

Filename Overview
src/praisonai-desktop/frontend/src/settings-registry.js Updates the frontend registry’s MCP description to accurately state that configured servers are not launched.
src/praisonai-desktop/frontend/tests/registry-drift.test.mjs Adds a focused regression assertion that the shipped MCP hint describes storage-only behavior.
src/praisonai-desktop/ui/index.html Updates the shipped inline registry and adds a static explanatory note to the MCP management panel.
src/praisonai-desktop/ui/settings-registry.js Keeps the standalone UI registry synchronized with the corrected MCP description.

Reviews (1): Last reviewed commit: "fix: stop advertising MCP servers as lau..." | Re-trigger Greptile

@MervinPraison MervinPraison added pipeline/blocked:ci Blocked: CI not green on HEAD pipeline/blocked:no-final Blocked: no FINAL @claude trigger yet pipeline/final-claude-pending Reviews done; waiting for FINAL @claude labels Aug 27, 2026
@MervinPraison

Copy link
Copy Markdown
Owner

@claude You are the FINAL architecture reviewer. If the branch is under MervinPraison/PraisonAI (not a fork), you are able to make modifications to this branch and push directly. SCOPE: Review changes in this PR. Python SDK: praisonaiagents, praisonai. TypeScript SDK: src/praisonai-ts/. Do NOT modify src/praisonai-rust. Read ALL comments above from Gemini, Qodo, CodeRabbit, and Copilot carefully before responding.

Phase 1: Review per AGENTS.md

  1. Protocol-driven: check heavy implementations vs core SDK
  2. Backward compatible: ensure zero feature regressions
  3. Performance: no hot-path regressions
  4. SDK value: review in depth whether the change genuinely adds value to the SDK — never add features for the sake of adding them. It must strengthen the SDK (simpler, more user-friendly, robust, world-class, secure). If it does not clearly add value, request changes or recommend rejecting/closing rather than merging scope creep
  5. Do not bloat the Agent class with additional params — only if absolutely required; we already support many params.
  6. Repo routing: agent-callable tools → PraisonAI-Tools; lifecycle plugins → PraisonAI-Plugins; optional sandbox backends → PraisonAI-Plugins (praisonai.sandbox entry point) — request changes if wrongly added to praisonaiagents/

Phase 2: FIX Valid Issues
7. For any VALID bugs or architectural flaws found by Gemini, CodeRabbit, Qodo, Copilot, or any other reviewer: implement the fix
8. Also independently identify and fix any gaps or issues you find in the changed code — do not rely only on prior reviewer feedback
9. Push all code fixes directly to THIS branch (do NOT create a new PR)
10. Comment a summary of exact files modified and what you skipped

Phase 3: Final Verdict
11. If all issues are resolved, approve the PR / close the Issue
12. If blocking issues remain, request changes / leave clear action items

@MervinPraison MervinPraison added pipeline/awaiting-merge-gate FINAL done; waiting for merge gate / CI pipeline/blocked:cooldown Blocked: post-push or @claude cooldown and removed pipeline/final-claude-pending Reviews done; waiting for FINAL @claude pipeline/blocked:no-final Blocked: no FINAL @claude trigger yet labels Aug 27, 2026
@praisonai-triage-agent

praisonai-triage-agent Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor Author

Claude finished @MervinPraison's task —— View job


Final Architecture Review — PR #4517 ✅ Approve

  • Read AGENTS.md / scope rules
  • Review 4 changed files
  • Verify registry sync (sync-registry.mjs --check → exit 0, no drift)
  • Run regression test (node --test registry-drift.test.mjs3 pass)
  • Independently verify the engine claim
  • Final verdict

Phase 1 — Architecture review (AGENTS.md)

Check Result
Protocol-driven / core vs wrapper N/A — desktop UI copy only, no praisonaiagents/praisonai change
Backward compatible ✅ Zero behavior change; text-only + a test
Performance ✅ No hot-path touched
SDK value ✅ Removes a false capability claim, aligns UI with reality — a net honesty/robustness gain, not scope creep
Agent class bloat ✅ No new params/modules/exports
Repo routing ✅ Correct — desktop app change belongs in this monorepo, not Tools/Plugins

Independent verification of the premise

The PR claims MCP servers are stored but never launched. Confirmed:

  • _get_agent builds Agent(..., tools=_builtin_tools() if tools else None)server.py:1152–1159. No MCP tools are ever passed.
  • load_mcp() (server.py:631) has exactly two consumers: GET /mcp (:1518) and POST /mcp editor (:1692). No stdio spawn, no MCP client import anywhere in the engine.

The old copy "Tool servers launched over stdio. Each is disabled until you enable it." advertised a live capability with no consumer. The replacement is accurate.

Change quality notes

  • All three synced copies (ui/settings-registry.js, frontend/src/settings-registry.js, inline ui/index.html) updated identically — verified byte-for-byte identical via diff.
  • Manage-panel note uses the existing .hint class (index.html:278), so it renders consistently.
  • The new drift test is a good guard: it asserts the hint no longer says "launched over stdio" and positively asserts it states "stored only / does not launch", so a future regeneration that reverts the copy fails CI.

Phase 2 — Fixes

None required. No valid bugs raised by prior reviewers (Greptile 5/5, Qodo paused). I independently reviewed the changed code and found no defects, gaps, or scope creep. Nothing pushed.

Phase 3 — Verdict

Approve. Minimal, backward-compatible, honesty-improving UI fix with a regression guard. Ships the accurate sentence instead of an unimplemented promise. Ready to merge.

Note: I cannot formally approve via GitHub reviews (bot restriction), but from an architecture standpoint this is a clean merge.
· branch claude/issue-4501-20260827-1345

@praisonai-triage-agent praisonai-triage-agent Bot added pipeline/merge-ready Eligible for merge gate auto-merge claude-merge-gate-active pipeline/awaiting-merge-gate FINAL done; waiting for merge gate / CI and removed pipeline/awaiting-merge-gate FINAL done; waiting for merge gate / CI pipeline/blocked:ci Blocked: CI not green on HEAD pipeline/blocked:cooldown Blocked: post-push or @claude cooldown pipeline/merge-ready Eligible for merge gate auto-merge claude-merge-gate-active labels Aug 27, 2026
@praisonai-triage-agent

Copy link
Copy Markdown
Contributor Author

Merge gate scan — eligible for assessment. Claude merge gate will assess and may auto-merge if MERGE_GATE_VERDICT: APPROVE.

@praisonai-triage-agent
praisonai-triage-agent Bot merged commit 90157ce into main Aug 28, 2026
45 checks passed
@praisonai-triage-agent

Copy link
Copy Markdown
Contributor Author

Merged by Claude PR merge gate (claude-merge-gate.yml).
Verdict: MERGE_GATE_VERDICT: APPROVE
SHA: 5a69522
Method: merge

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

Labels

auto-merged-by-gate pipeline/merge-ready Eligible for merge gate auto-merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

desktop: MCP servers are stored, toggled, persisted, and never launched

1 participant