From 56d27ed5d3b17d0989773ef4a435377c58f6f422 Mon Sep 17 00:00:00 2001 From: ricautomation <240336275+ricautomation@users.noreply.github.com> Date: Thu, 30 Apr 2026 22:34:12 +0200 Subject: [PATCH] fix(opencodeConfig): retain headers for remote MCP configurations (#1072) Resolves issue #1033 where remote GitHub MCP setups failed to work in OpenChamber because the `headers` property (which contains authorization credentials) was being dropped during configuration parsing in `packages/vscode/src/opencodeConfig.ts`. --- packages/vscode/src/opencodeConfig.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/vscode/src/opencodeConfig.ts b/packages/vscode/src/opencodeConfig.ts index 0eeb5266..d174e513 100644 --- a/packages/vscode/src/opencodeConfig.ts +++ b/packages/vscode/src/opencodeConfig.ts @@ -503,6 +503,7 @@ export type McpRemoteConfig = { type: 'remote'; url?: string; environment?: Record; + headers?: Record; enabled?: boolean; }; @@ -515,6 +516,7 @@ export type McpConfigEntry = { command?: string[]; url?: string; environment?: Record; + headers?: Record; enabled: boolean; }; @@ -550,8 +552,22 @@ const buildMcpEntry = (data: Record): Omit 0) { entry.command = data.command.map((value) => String(value)); } - } else if (typeof data.url === 'string' && data.url.trim()) { - entry.url = data.url.trim(); + } else { + if (typeof data.url === 'string' && data.url.trim()) { + entry.url = data.url.trim(); + } + + if (isPlainObject(data.headers)) { + const cleanedHeaders: Record = {}; + for (const [key, value] of Object.entries(data.headers)) { + if (key && value != null) { + cleanedHeaders[key] = String(value); + } + } + if (Object.keys(cleanedHeaders).length > 0) { + entry.headers = cleanedHeaders; + } + } } if (isPlainObject(data.environment)) {