Skip to content

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

Draft
Copilot wants to merge 3 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 3 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.

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
  • All 182 workflow lock files recompiled to reflect the updated output

@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:

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