MCP discovery exposes no launch config or source path — blocks viewing/editing discovered servers

Open
#1,518 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
typescript
Domain
api

Research direction

Read dist/generated/rpc.d.ts and session-events.d.ts, then trace the mcp.discover and session McpServerList shapes alongside mcp.config.enable/disable. Determine whether the discovery response or a new mcp.config.get RPC best exposes resolved stdio or HTTP/SSE configuration and the declaring file path; done means consumers can view the origin and edit or override discovered servers.

Written by the indexing model from the issue text.

Description

enhancement

Summary

When a session discovers MCP servers (mcp.discover / the session McpServerList), the returned shapes expose only identity and status — not the resolved launch config (command/args/url/env/headers) nor the origin file path of the declaration. This makes it impossible for an SDK consumer to (a) show where a discovered server came from, or (b) offer edit / override of a discovered workspace/plugin server, because the consumer never receives the config it would need to display or round-trip.

Current shapes (from dist/generated/rpc.d.ts / session-events.d.ts, beta.9)

// DiscoveredMcpServer (rpc.d.ts ~2657)
{ name: string; type?: string; source: McpServerSource; enabled: boolean }

// McpServer (rpc.d.ts ~4148)
{ name: string; status: string; source?: McpServerSource; error?: string }

// McpServerSource (session-events.d.ts)
type McpServerSource = "user" | "workspace" | "plugin" | "builtin";

None of these carry:

  • the resolved launch configurationcommand / args / env for stdio, or url / headers / type for http/sse;
  • the origin file path (e.g. which .mcp.json / .github/mcp.json the entry came from), only a coarse source enum.

mcp.config.enable/disable is enough to toggle a discovered server (and persists — thank you), but viewing and editing a discovered server's definition is not possible from the SDK surface.

Ask

Extend the discovery surface so consumers can render and edit discovered servers. Either is fine:

  1. Add the resolved config + origin to DiscoveredMcpServer (and/or McpServer), e.g.

    {
      name: string;
      source: McpServerSource;
      enabled: boolean;
      // new:
      config?: McpServerConfig;   // command/args/env | url/headers/type
      sourcePath?: string;        // absolute path of the declaring file
    }
    
  2. Or add a dedicated rpc, e.g. mcp.config.get({ name }) → resolved config + origin path, so consumers can fetch on demand.

Either unlocks: showing the source file in a server detail view, and an edit/override affordance for discovered workspace/plugin servers (today only user-source servers we wrote ourselves can be edited, because we hold their config; discovered ones are opaque).

Context / why

We're a desktop UI (Dafman) over the Copilot agent. Users expect to see where a discovered MCP server is defined and to tweak its args/env without hand-editing JSON files they may not know the location of. Toggle persistence already works; this is the remaining gap for a full MCP management UI.

(Filed from downstream tracking issue AsafMah/dafman#9. Happy to provide a repro or test against a beta.)

Dominant language
Java
Stars
10.5k
Forks
1.5k
Avg merge
1d 12h
Merged PRs (30d)
133

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from github/copilot-sdk

All issues in github/copilot-sdk

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.