diff --git a/.changeset/patch-strip-copilot-tools-from-claude-config.md b/.changeset/patch-strip-copilot-tools-from-claude-config.md new file mode 100644 index 00000000000..297efa57302 --- /dev/null +++ b/.changeset/patch-strip-copilot-tools-from-claude-config.md @@ -0,0 +1,5 @@ +--- +"gh-aw": patch +--- + +Strip Copilot-only `tools` from the Claude MCP gateway config so Claude sessions can register GitHub MCP servers correctly. diff --git a/actions/setup/js/convert_gateway_config_adapters.test.cjs b/actions/setup/js/convert_gateway_config_adapters.test.cjs index 9b53584bcfd..2571a32d10b 100644 --- a/actions/setup/js/convert_gateway_config_adapters.test.cjs +++ b/actions/setup/js/convert_gateway_config_adapters.test.cjs @@ -59,13 +59,14 @@ describe("convert gateway config shared pipeline", () => { describe("convert gateway config adapters", () => { const urlPrefix = "http://host.docker.internal:80"; - it("claude adapter enforces type=http and rewrites url", () => { - const converted = transformClaudeEntry({ type: "ignored", url: "http://old/mcp/github", headers: { Authorization: "token" } }, urlPrefix); + it("claude adapter enforces type=http, rewrites url, and drops Copilot-only tools", () => { + const converted = transformClaudeEntry({ type: "ignored", url: "http://old/mcp/github", headers: { Authorization: "token" }, tools: ["read"] }, urlPrefix); expect(converted).toEqual({ type: "http", url: "http://host.docker.internal:80/mcp/github", headers: { Authorization: "token" }, }); + expect(converted.tools).toBeUndefined(); }); it("copilot adapter adds tools wildcard only when missing", () => { diff --git a/actions/setup/js/convert_gateway_config_claude.cjs b/actions/setup/js/convert_gateway_config_claude.cjs index c0dbabb1963..4662110179e 100644 --- a/actions/setup/js/convert_gateway_config_claude.cjs +++ b/actions/setup/js/convert_gateway_config_claude.cjs @@ -36,6 +36,9 @@ function transformClaudeEntry(entry, urlPrefix) { return normalizeGatewayEntry(entry, urlPrefix, transformed => { // Claude uses "type": "http" for HTTP-based MCP servers transformed.type = "http"; + // The MCP gateway may include a "tools" field for Copilot, but Claude's + // MCP config format does not support that field. + delete transformed.tools; }); }