Skip to content

fix(spec+compiler): update MCP gateway OTLP headers to string-only (v1.13.0)#25135

Draft
Copilot wants to merge 6 commits intomainfrom
copilot/update-mcp-gateway-specification
Draft

fix(spec+compiler): update MCP gateway OTLP headers to string-only (v1.13.0)#25135
Copilot wants to merge 6 commits intomainfrom
copilot/update-mcp-gateway-specification

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 7, 2026

Summary

Updates the MCP Gateway Specification, JSON schemas, and compiler so that the headers field in the opentelemetry configuration is exclusively a string, removing the previously supported object form. The compiler no longer converts the headers string to a JSON object — the raw string value is passed through directly. The MCP Gateway version has been bumped to v0.2.17, which includes the updated schema that accepts string headers.

Changes

Specification (docs/src/content/docs/reference/mcp-gateway.md)

  • Bumped version: 1.12.01.13.0
  • Section 4.1.3.6: Changed headers type from object | string to string; updated description to clarify the value is passed through as-is
  • Removed dual-form configuration examples; replaced with a single string-form example
  • Removed Section 4.1.3.6.1 (Headers String Format) — no parsing rules needed since the string is passed through unchanged
  • Updated requirements: added headers MUST be a string when provided; removed string-parsing requirement
  • Updated compliance test range: T-OTEL-001 through T-OTEL-012T-OTEL-001 through T-OTEL-010
  • Updated T-OTEL-006: changed from "object form headers sent" to "string headers passed through as-is"
  • Removed T-OTEL-011 and T-OTEL-012 (string-form parsing tests)
  • Updated Appendix A.6 and A.7: replaced object-form headers with string form
  • Added change log entry for v1.13.0

JSON Schemas

  • pkg/workflow/schemas/mcp-gateway-config.schema.json
  • docs/public/schemas/mcp-gateway-config.schema.json

Both: changed opentelemetryConfig.headers from oneOf [object, string] to plain string type with updated description.

Compiler (pkg/workflow/mcp_renderer.go)

  • Removed the Node.js bash preamble that converted OTEL_EXPORTER_OTLP_HEADERS from key=value,... format into a JSON object (_GH_AW_OTLP_HEADERS_JSON)
  • Gateway config now emits "headers": "${OTEL_EXPORTER_OTLP_HEADERS}" — a JSON string value that bash expands at runtime — instead of the previously injected JSON object

Gateway Version (pkg/constants/version_constants.go)

  • Bumped DefaultMCPGatewayVersion: v0.2.16v0.2.17
  • v0.2.16 had a bundled schema requiring headers to be an object, causing startup validation failures with the new string-form output; v0.2.17 accepts string headers

Workflow Lock Files

  • All 182 workflow lock files recompiled to reflect the updated compiler output and gateway version

Changeset

  • Type: minor
  • Description: Updated MCP gateway OpenTelemetry headers to string-only and removed object-form support in spec, schema, and compiler output. Bumped gateway image to v0.2.17.

Generated by Changeset Generator for issue #25135 ·

@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 7, 2026

@lpcox FYI

@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 7, 2026

@copilot update compiler to emit string with headers value and NOT try to parse them to a JSON object.

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 7, 2026

@copilot update compiler to emit string with headers value and NOT try to parse them to a JSON object.

Done in commit 58c4131. The compiler (mcp_renderer.go) no longer converts the headers string to a JSON object. The bash preamble with the Node.js JSON.stringify conversion has been removed, and the gateway config now emits "headers": "${OTEL_EXPORTER_OTLP_HEADERS}" — a plain JSON string that bash expands at runtime from the job-level env var. All 182 workflow lock files have been recompiled to reflect the change.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw ml /tmp/go-build3535407545/b063/embedcfg -pack (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw a4yFhz_HlCMc (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI changed the title fix(spec): update MCP gateway OTLP headers to string-only (v1.13.0) fix(spec+compiler): update MCP gateway OTLP headers to string-only (v1.13.0) Apr 7, 2026
@github-actions github-actions bot mentioned this pull request Apr 7, 2026
@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 7, 2026

@copilot merge main and recompile

…teway-specification

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 7, 2026

@copilot merge main and recompile

Done in commit c537fa3. Merged main and recompiled all 182 workflows.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw -embedcfg /tmp/go-build862647983/b343/embedcfg -pack (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan pelikhan added the smoke label Apr 7, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

🌑 The shadows whisper... Smoke Codex failed. The oracle requires further meditation...

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

💫 TO BE CONTINUED... Smoke Claude failed! Our hero faces unexpected challenges...

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

📰 BREAKING: Smoke Copilot is now investigating this pull request. Sources say the story is developing...

@github-actions github-actions bot removed the smoke label Apr 7, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

❌ Tool validation failed! Agent Container Smoke Test detected missing tools: failed

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

📰 DEVELOPING STORY: Smoke Copilot reports failed. Our correspondents are investigating the incident...

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

Commit pushed: f4c1e24

Generated by Changeset Generator

@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 7, 2026

@copilot recompile

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 7, 2026

@copilot recompile

All 182 workflows are already up to date — recompile produced no changes. The lock files are current as of the previous merge commit (c537fa3).

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha -main/dist/index.js (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 7, 2026

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 7, 2026

@copilot Investigate https://github.com/github/gh-aw/actions/runs/24104184648/job/70323242422#step:33:1

The CI failure at step 33 is a schema validation error in the MCP Gateway (v0.2.16):

Location: /gateway/opentelemetry/headers
Error: expected object, but got string
Schema location: /properties/gateway/$ref/properties/opentelemetry/properties/headers/type

The gateway (v0.2.16) has a bundled schema that expects headers to be an object, but our compiler change now emits it as a string (e.g., "headers": "${OTEL_EXPORTER_OTLP_HEADERS}"). The gateway validates the generated config against its bundled schema at startup and rejects the string form.

This is a forward-compatibility issue: our spec v1.13.0 changes headers to string-only, but gateway v0.2.16 was built with the old schema that required an object. The gateway binary needs to be updated (v0.2.17+) to accept string headers before this PR can be safely deployed.

@pelikhan
Copy link
Copy Markdown
Collaborator

pelikhan commented Apr 7, 2026

@copilot Update the Gateway version and recompile

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 7, 2026

@copilot Update the Gateway version and recompile

Done in commit b39e7b8. Bumped DefaultMCPGatewayVersion from v0.2.16 to v0.2.17 in pkg/constants/version_constants.go and recompiled all 182 workflows. The new gateway version should include the updated schema that accepts string headers.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

❌ Tool validation failed! Agent Container Smoke Test detected missing tools: failed

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

📰 BREAKING: Smoke Copilot is now investigating this pull request. Sources say the story is developing...

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

🌑 The shadows whisper... Smoke Codex failed. The oracle requires further meditation...

@github-actions github-actions bot removed the smoke label Apr 7, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

💫 TO BE CONTINUED... Smoke Claude failed! Our hero faces unexpected challenges...

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

📰 DEVELOPING STORY: Smoke Copilot reports failed. Our correspondents are investigating the incident...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants