Skip to content

discoverZed() only scans context_servers, so Edison's own Zed entry is never discovered #20

Description

@Miyamura80

Description

Zed's settings.json has two different sections for MCP servers:

  • context_servers — Zed's older extension-based server API
  • assistant.mcp_servers — the newer HTTP MCP protocol key

The desktop client writes Edison's MCP entry to assistant.mcp_servers (see the module header at packages/desktop/src/main/clients/zed/index.ts:5), and the Clients-tab status check reads from that same location.

However, parseZedSettingsJson() in packages/desktop/src/main/clients/zed/discovery.ts:31 only reads json.context_servers (line 38). So discoverZed() / discoverMcpServers() never surface the Edison Watch entry in the general server-discovery results for Zed.

The inconsistency is visible within a single file — line 12 documents the path as "Zed config path (MCP servers in assistant.mcp_servers)", while the parser 20 lines below reads context_servers.

Impact

  • The Clients tab correctly shows Zed as Configured (reads assistant.mcp_servers)
  • The discovered-servers list shows 0 Zed servers for Edison Watch (reads context_servers only)

This is a visibility inconsistency, not a broken-connection issue.

Files to update

  • packages/desktop/src/main/clients/zed/discovery.tsparseZedSettingsJson() should scan assistant.mcp_servers in addition to context_servers and merge the results.
  • packages/desktop/src/main/__tests__/mcpDiscovery.test.ts — existing coverage is context_servers-only (parses Zed settings.json with context_servers, handles missing context_servers key). Add cases for assistant.mcp_servers and for both keys present.

History

Originally filed in the private backend repo as Edison-Watch/edison-watch#610 (2026-04-08), against client_2/src/main/mcpDiscovery.ts, before the desktop client moved to this repository. Re-filed here with updated paths; the original has been closed as moved.

Verified still present at 0ff6668. Identified during review of an earlier PR — a pre-existing gap, not introduced by it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions