SK-687: Support remote MCP servers for Copilot - #205
Conversation
- Remove install skip for sse/http MCP assets - Write type/url entries to .vscode/mcp.json - Verify config-only and remote via mcp.json entry
|
Claude finished @detkin's task in 2m 29s —— View job Clean, well-tested change that correctly follows the existing multi-client remote-MCP pattern (matching [LOW] `VerifyInstalled` can falsely report a packaged server as installed when its directory is deletedLocation: Issue: Verification now branches on directory presence rather than asset kind. For a packaged MCP server whose Suggestion: Gate the [NIT] `utils.HasContentFiles(zipData)` is computed even on the remote path where it's unusedLocation: Issue: Suggestion: Minor; optionally move the Notes (no action needed): dropping |
- Report broken when mcp.json entry points at missing dir - Skip zip inspection on the remote install path
|
Claude finished @detkin's task in 2m 13s —— View job Both findings from the prior review are now resolved — the [NIT] Verify heuristic can still miss a broken packaged server that doesn't reference its own directoryLocation: Issue: Suggestion: No change required for merge. If you want to close the gap fully later, persisting the install kind (packaged vs config-only vs remote) into the lockfile so [NIT] Config-only entries are no longer content-verified against current metadataLocation: Issue: For config-only (and remote) servers the fallback returns Suggestion: Optional. If desired, compare the resolved entry against Note: I couldn't run |
- Write entries to ~/.copilot/mcp-config.json (global) - Write entries to .github/mcp.json (repo/path scope) - Add explicit stdio type on CLI entries
|
Claude finished @detkin's task in 2m 25s —— View job The Copilot CLI mirror is a clean, well-tested addition that correctly writes VS Code ( [LOW] VerifyInstalled doesn't check the CLI-mirrored config, so
|
- Fail verify when an expected CLI entry is missing - Keep packaged abs-path entries out of .github/mcp.json
|
Claude finished @detkin's task in 2m 13s —— View job The latest commit ( [NIT] Residual verify heuristics from earlier reviews remain (documented, no action needed)Location: Issue: Two limitations carried over from the prior reviews are still present and already called out in the in-code comment: (1) Suggestion: No change required for merge. If you want to close these fully later, persisting the install kind (packaged/config-only/remote) into the lockfile so [NIT] Path-scoped MCP installs ignore the sub-path (pre-existing, not introduced here)Location: Issue: For Suggestion: Not blocking and likely intentional (VS Code Note: I couldn't run |
- Add remote mode, transport/url fields to metadata spec - Note Copilot dual-write locations in clients doc
|
Claude finished @detkin's task in 1m 58s —— View job The Copilot remote-MCP + CLI-mirror change is clean and thoroughly tested, and the four prior review rounds' findings are all resolved; one config-serialization robustness gap and a couple of documented residual heuristics are worth a look, none blocking. [LOW] Rewriting mcp.json / CLI config silently drops any sibling top-level keys (e.g. VS Code
|
- Keep sibling top-level keys (e.g. inputs) on rewrite - Applies to mcp.json and both CLI mirror files
|
Claude finished @detkin's task in 1m 43s —— View job The latest commit ( [NIT] Config rewrites still drop JSONC comments (round-trip through plain JSON)Location: Issue: Suggestion: Not blocking. If worth closing later, note in the [NIT] Residual verify heuristics from earlier rounds remain (documented, no action needed)Location: Issue: Carried forward and already called out in the in-code comment: (1) Suggestion: Optional follow-up — persist the install kind (packaged/config-only/remote) into the lockfile so Note: command approval is disabled in this environment, so I couldn't run |
Summary
.vscode/mcp.jsonas{"type": "http"|"sse", "url": ...}per the VS Code MCP configuration reference; no extraction since nothing runs locallycopilotsessions too:~/.copilot/mcp-config.jsonfor global scope,{repoRoot}/.github/mcp.jsonfor repo/path scopes (both use themcpServerskey; CLI entries carry an explicittype).mcp.jsonis deliberately not used for the CLI mirror — the Claude Code client manages that fileenvon stdio servers; remote servers authenticate viaheaders, which sx metadata does not model yetVerifyInstalledfor config-only and remote MCP servers: they have no extractedmcp-servers/{name}/directory, so verification now falls back to checking themcp.jsonentry (and detects packaged entries pointing at a deleted directory so--repairstill re-extracts them)Security implications of changes have been considered