[Bug] ZCode Desktop 3.14.4 (Windows): user-scope MCP server connects, but its tools are never listed/registered in sessions
Summary
A user-scope MCP server (stdio) is connected successfully at session startup, but ZCode never sends a tools/list request to it and never registers its tools into chat sessions. As a result, mcp__<server>__* tools are unavailable in any new chat, even though the MCP server itself is fully healthy.
Environment
- ZCode Desktop 3.14.4.7912, Windows 10 Pro 22H2 (build 19045, x64)
- MCP server under test: local Node.js stdio server (
tradingview-mcp 2.0.0, exposes 84 tools)
- Registered at user scope in
%USERPROFILE%\.zcode\cli\config.json → mcp.servers
- Companion test server: built-in
node_repl (1 tool)
Expected
After startup, a session's toolset includes tools from the connected user-scope MCP server (mcp__tradingview__chart_get_state, etc.).
Actual
- Connection succeeds:
mcp.server.connected (durationMs ≈ 1500–3500) in every session.
- But no
tools/list request is ever sent to that server — no tool-listing events appear in logs at all.
mcp.tools.registered consistently reports registeredToolCount: 1, serverCount: 2 across many sessions on different days — the "1" is the built-in node_repl tool; the user-scope server contributes 0 tools.
- Tools are absent from every new chat's toolset.
Log evidence (2026-10-01 / 2026-10-02, anonymized)
{"event":"mcp.server.connect.started","context":{"mcpServerName":"tradingview","transport":"stdio","timeoutMs":30000}}
{"event":"mcp.server.connected","context":{"mcpServerName":"tradingview","durationMs":3444,"status":"completed"}}
{"event":"mcp.tools.registered","context":{"registeredToolCount":1,"serverCount":2}}
(The registeredToolCount: 1 pattern repeats in ~20+ events across two days, incl. fresh sessions at turnNumber 0.)
Server-side is healthy
Driving the same server manually over stdio JSON-RPC works perfectly:
initialize OK in 1274 ms; server: tradingview 2.0.0
tools/list OK in 1313 ms — 84 tools
tools/call chart_get_state → {"success": true, "symbol": "BYBIT:ADAUSDT.P", ...}
So the failure is on ZCode's side: the client connects but never enumerates/registers the server's tools.
Related issues
- Settings → MCP Servers page hangs on "Loading..." indefinitely (both User and Workspace scopes), so per-server status/toggles cannot be inspected in the GUI.
- A broken built-in plugin MCP server (
plugin:image-search:image_search, HTTP transport) fails at every session start with coding plan is required; built-in plugins cannot be uninstalled (GUI "Uninstall" does nothing) — only disabling via config.json works.
- Config schema mismatch: a user config with
"skills": { "paths": [ "..." ] }
(as suggested by community templates) logs at every startup:
config.file.invalid: skills.paths: Invalid input: expected object, received array (severity: error).
Either the docs/template should be fixed or the array form accepted.
Workaround we use now
A small wrapper script that spawns the MCP server and speaks stdio JSON-RPC directly (initialize → tools/call). This works reliably, which confirms the MCP server is fine and the issue is in the client's tool-registration pipeline.
Request
Please register tools from connected user-scope MCP servers in chat sessions (or expose a per-server tools toggle in Settings). Also: make Settings → MCP Servers render, and clarify the skills.paths schema.
[Bug] ZCode Desktop 3.14.4 (Windows): user-scope MCP server connects, but its tools are never listed/registered in sessions
Summary
A user-scope MCP server (stdio) is connected successfully at session startup, but ZCode never sends a
tools/listrequest to it and never registers its tools into chat sessions. As a result,mcp__<server>__*tools are unavailable in any new chat, even though the MCP server itself is fully healthy.Environment
tradingview-mcp2.0.0, exposes 84 tools)%USERPROFILE%\.zcode\cli\config.json→mcp.serversnode_repl(1 tool)Expected
After startup, a session's toolset includes tools from the connected user-scope MCP server (
mcp__tradingview__chart_get_state, etc.).Actual
mcp.server.connected(durationMs ≈ 1500–3500) in every session.tools/listrequest is ever sent to that server — no tool-listing events appear in logs at all.mcp.tools.registeredconsistently reportsregisteredToolCount: 1, serverCount: 2across many sessions on different days — the "1" is the built-innode_repltool; the user-scope server contributes 0 tools.Log evidence (2026-10-01 / 2026-10-02, anonymized)
{"event":"mcp.server.connect.started","context":{"mcpServerName":"tradingview","transport":"stdio","timeoutMs":30000}} {"event":"mcp.server.connected","context":{"mcpServerName":"tradingview","durationMs":3444,"status":"completed"}} {"event":"mcp.tools.registered","context":{"registeredToolCount":1,"serverCount":2}}(The
registeredToolCount: 1pattern repeats in ~20+ events across two days, incl. fresh sessions at turnNumber 0.)Server-side is healthy
Driving the same server manually over stdio JSON-RPC works perfectly:
So the failure is on ZCode's side: the client connects but never enumerates/registers the server's tools.
Related issues
plugin:image-search:image_search, HTTP transport) fails at every session start withcoding plan is required; built-in plugins cannot be uninstalled (GUI "Uninstall" does nothing) — only disabling viaconfig.jsonworks."skills": { "paths": [ "..." ] }(as suggested by community templates) logs at every startup:
config.file.invalid: skills.paths: Invalid input: expected object, received array(severity: error).Either the docs/template should be fixed or the array form accepted.
Workaround we use now
A small wrapper script that spawns the MCP server and speaks stdio JSON-RPC directly (initialize → tools/call). This works reliably, which confirms the MCP server is fine and the issue is in the client's tool-registration pipeline.
Request
Please register tools from connected user-scope MCP servers in chat sessions (or expose a per-server tools toggle in Settings). Also: make Settings → MCP Servers render, and clarify the
skills.pathsschema.