You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Actual Behavior: The headers field is not supported in JSON stdin gateway.opentelemetry. The JSON schema (internal/config/schema/mcp-gateway-config.schema.json) defines opentelemetryConfig with "additionalProperties": false and does not include headers. The struct StdinOpenTelemetryConfig (internal/config/config_stdin.go:75-87) has no headers field. A unit test (TestLoadFromStdin_OpenTelemetryHeaders in internal/config/load_from_stdin_coverage_test.go:184-212) explicitly verifies this configuration causes a validation error per spec §4.1.3.7 v1.14.0 Breaking Change. Authentication headers for OTLP export must be provided via the OTEL_EXPORTER_OTLP_HEADERS environment variable.
Impact: Users following this documentation example will get a config validation failure when starting the gateway and will be unable to start it.
Code References:
Schema: internal/config/schema/mcp-gateway-config.schema.json — opentelemetryConfig definition (additionalProperties: false, no headers property)
Test: internal/config/load_from_stdin_coverage_test.go:184-212 — confirms headers in JSON stdin opentelemetry is rejected
Suggested Fix:
Remove "headers" from the JSON stdin example in docs/CONFIGURATION.md
Add a note after the example:
Note: The headers field is not supported in JSON stdin gateway.opentelemetry (per spec §4.1.3.6). To pass OTLP export headers when using JSON stdin config, use the OTEL_EXPORTER_OTLP_HEADERS environment variable.
In the field table (line 448), annotate headers as TOML-only (similar to how sample_rate is annotated):
Current text: "Use the --listen flag or MCP_GATEWAY_PORT env var (containerized) to set the actual listen port."
Problem: This implies the awmg binary reads MCP_GATEWAY_PORT to set its listen address. It does not. The binary only reads MCP_GATEWAY_PORT for --validate-env checks. The wrapper scripts (run.sh, run_containerized.sh) read MCP_GATEWAY_PORT and pass --listen explicitly. docs/ENVIRONMENT_VARIABLES.md describes this correctly.
Impact: Low — a user running awmg directly might set MCP_GATEWAY_PORT expecting automatic listen address configuration.
Suggested Fix: Update to: "Use the --listen flag to set the listen address; MCP_GATEWAY_PORT is used by run.sh/run_containerized.sh to build the --listen argument, not read directly by awmg."
Found 1 critical discrepancy and 1 minor clarification between documentation and implementation during nightly reconciliation check.
Critical Issues 🔴
1. JSON Stdin Example for gateway.opentelemetry Includes Unsupported headers Field
Location: docs/CONFIGURATION.md, lines 465–479 ("JSON stdin example" block)
Problem: The JSON stdin example shows "headers" as a field inside gateway.opentelemetry:
{ "gateway": { "opentelemetry": { "endpoint": "(otelcollector.example.com/redacted)", "serviceName": "mcp-gateway", "traceId": "4bf92f3577b34da6a3ce929d0e0e4736", "spanId": "00f067aa0ba902b7", "headers": "Authorization=Bearer ..." } } }Actual Behavior: The
headersfield is not supported in JSON stdingateway.opentelemetry. The JSON schema (internal/config/schema/mcp-gateway-config.schema.json) definesopentelemetryConfigwith"additionalProperties": falseand does not includeheaders. The structStdinOpenTelemetryConfig(internal/config/config_stdin.go:75-87) has noheadersfield. A unit test (TestLoadFromStdin_OpenTelemetryHeadersininternal/config/load_from_stdin_coverage_test.go:184-212) explicitly verifies this configuration causes a validation error per spec §4.1.3.7 v1.14.0 Breaking Change. Authentication headers for OTLP export must be provided via theOTEL_EXPORTER_OTLP_HEADERSenvironment variable.Impact: Users following this documentation example will get a config validation failure when starting the gateway and will be unable to start it.
Code References:
internal/config/schema/mcp-gateway-config.schema.json—opentelemetryConfigdefinition (additionalProperties: false, noheadersproperty)internal/config/config_stdin.go:74-87—StdinOpenTelemetryConfig(fields: endpoint, traceId, spanId, serviceName only)internal/config/load_from_stdin_coverage_test.go:184-212— confirmsheadersin JSON stdin opentelemetry is rejectedSuggested Fix:
"headers"from the JSON stdin example indocs/CONFIGURATION.mdheadersas TOML-only (similar to howsample_rateis annotated):|headers| Comma-separated key=value HTTP headers... ||headers(TOML only) | Comma-separated key=value HTTP headers... UseOTEL_EXPORTER_OTLP_HEADERSenv var for JSON stdin configs. |Minor Issues 🔵
2. README.md gateway config table — MCP_GATEWAY_PORT note slightly misleading
Location: README.md, line 187
Current text: "Use the --listen flag or MCP_GATEWAY_PORT env var (containerized) to set the actual listen port."
Problem: This implies the awmg binary reads MCP_GATEWAY_PORT to set its listen address. It does not. The binary only reads MCP_GATEWAY_PORT for --validate-env checks. The wrapper scripts (run.sh, run_containerized.sh) read MCP_GATEWAY_PORT and pass --listen explicitly. docs/ENVIRONMENT_VARIABLES.md describes this correctly.
Impact: Low — a user running awmg directly might set MCP_GATEWAY_PORT expecting automatic listen address configuration.
Suggested Fix: Update to: "Use the --listen flag to set the listen address; MCP_GATEWAY_PORT is used by run.sh/run_containerized.sh to build the --listen argument, not read directly by awmg."
Accurate Sections ✅
Tested Commands
Warning
Firewall blocked 2 domains
The following domains were blocked by the firewall during workflow execution:
awmgmcpgproxy.golang.orgSee Network Configuration for more information.