Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/praisonai-desktop/frontend/src/settings-registry.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ const SETTINGS = [

// ---- Integrations -------------------------------------------------------
{ key: "mcp_servers", section: "integrations", label: "MCP servers",
description: "Tool servers launched over stdio. Each is disabled until you enable it.",
description: "Saved for a future release. Servers listed here are stored only \u2014 the engine does not launch them yet, so the model cannot use them.",
keywords: ["tools", "model context protocol", "stdio", "extensions"],
control: { kind: "action", verb: "Manage" }, action: "mcp" },
];
Expand Down
14 changes: 14 additions & 0 deletions src/praisonai-desktop/frontend/tests/registry-drift.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,20 @@ test('the registry copies are in sync with ui/index.html', () => {
execFileSync(process.execPath, [TOOL, '--check'], { stdio: 'pipe' });
});

test('the mcp hint does not claim a launch the engine never performs', () => {
// engine/server.py load_mcp() is read only by GET/POST /mcp; _get_agent
// builds Agent(tools=_builtin_tools()) and never spawns a server. A hint
// that says the servers are "launched" is a claim with no consumer.
const html = readFileSync(HTML, 'utf8');
const m = html.match(/key: "mcp_servers"[\s\S]*?description: "([^"]*)"/);
assert.ok(m, 'mcp_servers setting not found');
const hint = m[1];
assert.ok(!/launched over stdio/.test(hint),
'mcp hint still claims servers are launched, but the engine never launches them');
assert.ok(/stored only|does not launch/.test(hint),
'mcp hint should state the servers are stored only');
});

test('every setting names a section that exists', () => {
// A setting whose section has no tab is rendered by nothing -- the same
// silent-nothing shape as a setting that is stored and never read.
Expand Down
6 changes: 4 additions & 2 deletions src/praisonai-desktop/ui/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -817,7 +817,7 @@ <h2>Fine-tune a model</h2>

// ---- Integrations -------------------------------------------------------
{ key: "mcp_servers", section: "integrations", label: "MCP servers",
description: "Tool servers launched over stdio. Each is disabled until you enable it.",
description: "Saved for a future release. Servers listed here are stored only \u2014 the engine does not launch them yet, so the model cannot use them.",
keywords: ["tools", "model context protocol", "stdio", "extensions"],
control: { kind: "action", verb: "Manage" }, action: "mcp" },
];
Expand Down Expand Up @@ -1922,7 +1922,9 @@ <h2>Fine-tune a model</h2>
toast(u.message || ('PraisonAI Desktop '+u.current));
} else if(def.action==='mcp'){
const {servers}=await (await fetch('http://127.0.0.1:'+PORT+'/mcp')).json();
panel.innerHTML='<h2>MCP servers</h2><div id="mcplist"></div>'
panel.innerHTML='<h2>MCP servers</h2>'
+'<div class="hint">Stored for a future release. The engine does not launch these yet, so the model cannot use them.</div>'
+'<div id="mcplist"></div>'
+'<div class="fld"><label>Name</label><input id="m-name" placeholder="filesystem"/></div>'
+'<div class="fld"><label>Command</label><input id="m-cmd" placeholder="npx -y @modelcontextprotocol/server-filesystem /tmp"/></div>'
+'<div class="row"><button class="ghost" id="m-close">Close</button><button id="m-add">Add server</button></div>';
Expand Down
2 changes: 1 addition & 1 deletion src/praisonai-desktop/ui/settings-registry.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ const SETTINGS = [

// ---- Integrations -------------------------------------------------------
{ key: "mcp_servers", section: "integrations", label: "MCP servers",
description: "Tool servers launched over stdio. Each is disabled until you enable it.",
description: "Saved for a future release. Servers listed here are stored only \u2014 the engine does not launch them yet, so the model cannot use them.",
keywords: ["tools", "model context protocol", "stdio", "extensions"],
control: { kind: "action", verb: "Manage" }, action: "mcp" },
];
Expand Down
Loading