Skip to content

Releases: github/gh-aw-mcpg

v0.1.6

27 Feb 02:48
a29c937

Choose a tag to compare

🌟 Release Highlights

v0.1.6 delivers an important agent reliability fix, MCP spec compliance improvements, and developer experience enhancements that make MCP Gateway more robust and easier to work with.

🐛 Critical Fix: Agent Infinite Loop Resolved

  • Payload threshold increased to 512KB (#1441): Agents were entering infinite retry loops when attempting to read payload files that weren't accessible inside their containers. The payload size threshold now defaults to 512KB (up from a lower value), significantly reducing unnecessary payload file references.
  • Payload path prefix configuration: A new --payload-path-prefix flag (and MCP_GATEWAY_PAYLOAD_PATH_PREFIX env var) allows remapping filesystem paths to client-accessible paths — enabling agents in containers to correctly resolve payload locations.

✨ What's New

  • Custom server schema validation (#1312, #1400): MCP Gateway now validates custom server configurations against schemas per [MCP Spec §4.1.4]((spec.modelcontextprotocol.io/redacted), including strict HTTPS-only enforcement for custom schema URLs. Misconfigured servers are rejected at startup with clear error messages.
  • Dev container support (#1434): A .devcontainer configuration is now included, making it easy to spin up a fully configured development environment in VS Code or GitHub Codespaces with a single click.

📚 Documentation

  • Clarified the absolute path requirement for Docker volume mounts and documented the DOCKER_API_VERSION auto-detection behavior (with fallback to 1.44) (#1313).

🔧 Internal Improvements

  • Expanded test coverage across launcher session management, DIFC labels, custom schema validation, sanitization, and Docker utilities.
  • Added debug logging to MCP connection SDK wrappers and DIFC labels for improved observability (DEBUG=mcp:* or DEBUG=difc:*).
  • Multiple code quality refactors: middleware deduplication, MCP connection file split by concern, and utility package consolidation.

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.1.6
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release


What's Changed

  • Fix smoke-copilot: call Serena tools directly instead of inferring availability from mcp-inspect by @Copilot in #1249
  • Copilot/remove serena activate project by @lpcox in #1259
  • Copilot/debug language support tester workflow by @lpcox in #1264
  • Copilot/compile language support tester smoke workflows by @lpcox in #1265
  • [test] Add tests for launcher.GetOrLaunchForSession by @github-actions[bot] in #1291
  • Update documentation for mount absolute path requirement and DOCKER_API_VERSION behavior by @claude in #1313
  • Refactor: Extract wrapWithMiddleware helper to eliminate duplicate middleware chaining code by @claude in #1311
  • Implement custom server schema validation (MCP Spec 4.1.4 compliance) by @claude in #1312
  • Recompile language-support-tester workflow with latest compiler by @claude in #1314
  • [test] Add tests for config.validateAgainstCustomSchema by @github-actions[bot] in #1334
  • [test-improver] Improve tests for server tool_name package by @github-actions[bot] in #1335
  • Eliminate duplicate sys tool metadata in registerSysTools() by @claude in #1349
  • Refactor: Consolidate function clustering — Docker utilities, stdlib reimplementation, and string truncation by @claude in #1350
  • [log] Add debug logging to difc/labels.go by @github-actions[bot] in #1369
  • [test] Add tests for difc.labels (CheckFlow, ViolationError, Clone, Union) by @github-actions[bot] in #1370
  • [test-improver] Improve tests for dockerutil package by @github-actions[bot] in #1371
  • Refactor: split mcp/connection.go by concern, relocate misplaced server helpers by @Copilot in #1373
  • [log] Add debug logging to MCP connection SDK method wrappers by @github-actions[bot] in #1394
  • [test] Add tests for sanitize.SanitizeJSON by @github-actions[bot] in #1395
  • Upgraded aws by @lpcox in #1399
  • Enforce HTTPS-only for custom schema URLs (spec §4.1.4) by @Copilot in #1400
  • refactor: eliminate duplicate StreamableHTTP session callback and SDK list method wrappers by @Copilot in #1403
  • [test-improver] Improve tests for schema normalization package by @github-actions[bot] in #1406
  • Fix Serena MCP language support tools unavailable in language-support-tester, smoke-copilot, and smoke-codex by @Copilot in #1401
  • Add dev container configuration by @lpcox in #1434
  • Fix agent infinite loop by increasing payload threshold to 512KB and adding path prefix configuration by @claude in #1441

Full Changelog: v0.1.5...v0.1.6

v0.1.5

21 Feb 19:12
963147e

Choose a tag to compare

🌟 Release Highlights

This release focuses on compliance enforcement, reliability improvements, and MCP spec v1.8.0 alignment — tightening configuration validation, improving observability through integrated SDK logging, and eliminating numerous duplicate code patterns across the codebase.

⚠️ Breaking Changes

The following configuration validation changes may require updates to existing configs:

  • Docker required for TOML stdio servers (#1029): TOML-configured stdio servers must now use command = "docker". Direct command execution without containerization is rejected at startup. See the Configuration Reference for the container field syntax.
  • Explicit mount mode required (#1231): Volume mount entries in server configs must now include an explicit mode field ("ro" or "rw"). Mounts without a declared mode are rejected.
  • mounts field rejected for HTTP servers (#1122): HTTP-type server configurations that include a mounts field now fail validation with a clear error message.

✨ What's New

  • MCP Spec v1.8.0 compliance (#1065): MCP Gateway now targets spec version 1.8.0, keeping pace with the evolving Model Context Protocol standard.
  • Integrated MCP SDK logging (#1067): The project's debug logger is now wired into ClientOptions and ServerOptions for the MCP SDK, giving full visibility into SDK-level activity via the DEBUG=* flag.
  • Timeout enforcement for jq middleware (#961): The gojq processing middleware now enforces execution timeouts, preventing runaway jq expressions from stalling request pipelines.
  • Centralized payload preview size (#1066): The PayloadPreviewSize constant is now configurable from a single location, making it easier to tune large-payload handling behavior.
  • Nightly workflow auto-upgrader (#986): A new nightly workflow automatically upgrades agentic workflow tooling to the latest gh-aw releases, keeping CI tooling current without manual intervention.

🐛 Bug Fixes & Improvements

  • SSE JSON-RPC parsing on HTTP error paths (#1085): Fixed a parsing failure where error responses from HTTP backends weren't correctly decoded when using SSE transport.
  • Tool logging format (#1243): Updated tool invocation log format for improved readability in operational logs.
  • Consolidated variable expansion logic (#1014): Duplicate \$\{VAR_NAME} expansion implementations have been unified, ensuring consistent behavior across TOML and JSON config paths.

📚 Documentation

  • Fixed payloadSizeThreshold configuration docs to accurately reflect all three configuration methods: --payload-size-threshold flag, MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD env var, and payload_size_threshold in [gateway] TOML section (#1233).
  • Fixed 5 documentation discrepancies surfaced by the nightly docs reconciliation workflow (#1123).
  • Documented session persistence implementation for stdio backends (#1042).
  • Documented BurntSushi/toml v1.6.0 usage and TOML 1.1 implementation (#982).

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.1.5
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release


What's Changed

  • [log] Add debug logging to main.go by @github-actions[bot] in #914
  • [test] Add comprehensive tests for launcher.LogHelpers by @github-actions[bot] in #918
  • [WIP] Fix incorrect payload size threshold documentation by @claude in #936
  • Debug test-coverage-improver workflow failure (run 21994653857) by @claude in #935
  • Add Python language server to Serena MCP container by @claude in #920
  • Refactor HTTP request initialization to eliminate duplicate code pattern by @claude in #937
  • Refactor: Extract marshalToResponse helper to eliminate duplicate JSON marshal pattern by @claude in #938
  • [test-improver] Improve tests for sys package by @github-actions[bot] in #950
  • [log] Add debug logging to config validation rules by @github-actions[bot] in #958
  • Add timeout enforcement and comprehensive tests for gojq middleware by @claude in #961
  • fix: correct log helper test expectations by @lpcox in #979
  • Addressing PR comments by @claude in #977
  • Refactor: Extract duplicate MCP session validation into requireSession() helper by @claude in #978
  • Configure CI to trigger smoke-copilot, large-payload-tester, and language-support-tester workflows by @claude in #980
  • Refactor: Extract parameter marshaling helper and fix silent error ignoring by @claude in #981
  • Document BurntSushi/toml v1.6.0 usage and TOML 1.1 implementation by @claude in #982
  • Add nightly workflow to upgrade workflows to latest gh-aw releases by @Copilot in #986
  • Fix release workflow trigger: use workflow_dispatch instead of tag push by @claude in #993
  • Fix test-coverage-improver workflow sparse checkout by @Copilot in #1013
  • Consolidate duplicate variable expansion logic by @Copilot in #1014
  • Upgrade go-sdk to v1.3.0 and adopt ClientOptions pattern by @Copilot in #1018
  • Install Go 1.25.0 before language support testing by @Copilot in #1026
  • Eliminate duplicate code patterns in JSON-RPC parsing and config initialization by @Copilot in #1022
  • Enforce Docker containerization requirement for TOML stdio servers by @Copilot in #1029
  • Add sandbox configuration to enable Docker for language support testing by @Copilot in #1036
  • Document existing session persistence implementation for stdio backends by @Copilot in #1042
  • [test] Add comprehensive tests for parseJSONRPCResponseWithSSE by @github-actions[bot] in #1047
  • Pre-pull Serena MCP container to prevent initialization timeouts by @claude in #1049
  • [test] Add tests for config.convertStdinServerConfig by @github-actions[bot] in #1062
  • Update MCPGatewaySpecVersion to 1.8.0 by @Copilot in #1065
  • Centralize jq payload preview size configuration by @Copilot in #1066
  • Integrate project logger with MCP SDK ClientOptions and ServerOptions by @Copilot in #1067
  • Refactor: Code organization improvements from semantic clustering analysis by @Copilot in #1068
  • Upgrade agentic workflows to v0.46.1 by @Copilot in #1079
  • Fix SSE JSON-RPC parsing for HTTP error paths by @lpcox in #1085
  • Use locally built MCP gateway in smoke-copilot workflow and trigger on Go PRs by @Copilot in #1080
  • Add MCP Gateway build steps to language-support-tester workflow by @Copilot in #1089
  • Fix workflow failures: use registry image name for local container builds by @Copilot in #1097
  • Reject mounts field for HTTP servers (T-CFG-019) by @Copilot in #1122
  • docs: fix 5 discrepancies from nightly documentation reconciliation by @Copilot in #1123
  • Eliminate three duplicate code patterns in logger and config packages by @Copilot in #1120
  • Use ghcr.io/github/gh-aw-mcpg:latest across all agentic workflows by @Copilot in #1132
  • [test] Add tests for difc.Capabilities by @github-actions[bot] in #1135
  • [test-improver] Improve tests for config/rules package by @github-actions[bot] in #1136
  • Fix smoke-copilot workflow container tag mismatch by @claude in #1144
  • [log] Add debug logging to difc/capabilities.go by @github-actions[bot] in #1168
  • [test] Add tests for difc.resource types by @github-actions[bot] in #1169
  • [test-improver] Improve tests for cmd flags and mcp schema packages by @github-actions[bot] in #1170
  • Fix documentation discrepancies in CONTRIBUTING.md and README.md by @claude in #1175
  • Upgrade workflows to gh-aw v0.47.1 by @claude in #1174
  • Addressing PR comments by @claude in #1176
  • Addressing PR comments by @claude in #1173
  • Eliminate duplicat...
Read more

v0.1.4

12 Feb 05:49
1041860

Choose a tag to compare

🌟 Release Highlights

This security-focused release addresses credential exposure in Docker container logs when launching MCP backend servers.

🔒 Security Improvements

Environment Variable Sanitization (#908)
All environment variables passed to Docker containers via -e flags are now sanitized in logs and error messages. This prevents sensitive credentials like GITHUB_PERSONAL_ACCESS_TOKEN from being exposed in plaintext during debug logging or error diagnostics.

Before:

[LAUNCHER] Args: [run --rm -i -e GITHUB_PERSONAL_ACCESS_TOKEN=ghs_1234567890abcdef...]
```

**After:**
```
[LAUNCHER] Args: [run --rm -i -e GITHUB_PERSONAL_ACCESS_TOKEN=ghs_...]

The gateway now truncates all environment variable values to their first 4 characters, ensuring sensitive tokens, API keys, and passwords remain protected while preserving visibility into which variables are being passed to containers.

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.1.4
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


Generated by Release


What's Changed

  • Sanitize environment variables in Docker args logging by @Copilot in #908

Full Changelog: v0.1.2...v0.1.4

v0.1.3

12 Feb 05:14
1041860

Choose a tag to compare

What's Changed

  • Sanitize environment variables in Docker args logging by @Copilot in #908

Full Changelog: v0.1.2...v0.1.3

v0.1.2

12 Feb 01:14
a5d11f2

Choose a tag to compare

🌟 Release Highlights

This maintenance release brings improved documentation accuracy, automated compliance monitoring, and enhanced tool discovery capabilities to MCP Gateway.

✨ What's New

  • Tool Discovery Catalog - MCP Gateway now automatically generates a tools.json file in the log directory, providing an up-to-date catalog of all available tools across your backend MCP servers. This makes it easy to discover capabilities without making RPC calls, perfect for monitoring, documentation, and client configuration. Each tool entry includes its name and description, organized by server ID. (#903)

  • Automated GPL Dependency Detection - New daily agentic workflow automatically scans Go dependencies for GPL-licensed packages (GPL, AGPL, LGPL) that may conflict with licensing requirements. The workflow queries multiple sources, traces transitive dependencies, and creates actionable issues with remediation guidance when GPL packages are detected. (#902)

📚 Documentation

  • Corrected Default Values - Fixed critical documentation discrepancies where the default payload size threshold was incorrectly documented as 1KB instead of the actual 10KB implementation. Also completed the internal directory structure listings in both CONTRIBUTING.md and AGENTS.md. (#889)

  • Environment Variable Clarifications - Updated documentation to accurately reflect which environment variables are used by the gateway versus test scripts, preventing potential confusion during configuration. (#901)

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.1.2
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release


What's Changed

  • Fix documentation discrepancies: payload threshold and internal directories by @claude in #889
  • Fix environment variable documentation discrepancies by @claude in #901
  • Add agentic workflow for daily GPL dependency detection by @Copilot in #902
  • Add tools.json logging for MCP server tool discovery by @Copilot in #903

Full Changelog: v0.1.0...v0.1.2

v0.1.1

12 Feb 01:08
a5d11f2

Choose a tag to compare

What's Changed

  • Fix documentation discrepancies: payload threshold and internal directories by @claude in #889
  • Fix environment variable documentation discrepancies by @claude in #901
  • Add agentic workflow for daily GPL dependency detection by @Copilot in #902
  • Add tools.json logging for MCP server tool discovery by @Copilot in #903

Full Changelog: v0.1.0...v0.1.1

v0.1.0

11 Feb 02:49
432703b

Choose a tag to compare

🌟 Release Highlights

Welcome to v0.1.0, the first stable release of MCP Gateway! This milestone represents a production-ready Go-based proxy server for Model Context Protocol (MCP) servers, designed for use with GitHub Agentic Workflows.

✨ Core Features

🔀 Flexible Routing Modes

  • Routed Mode: Access individual MCP servers at /mcp/{serverID} endpoints for dedicated connections
  • Unified Mode: Single /mcp endpoint with intelligent routing across all configured servers

🐳 Docker-Native Backend Management

  • Launch and manage MCP servers as containerized processes
  • Automatic container lifecycle management with proper cleanup
  • Environment variable injection for secure credential handling

🔧 Configuration Flexibility

  • Support for both TOML files and JSON stdin configuration
  • Spec-compliant validation with fail-fast error handling and detailed messages
  • Environment variable expansion with ${VAR_NAME} syntax for secure credential management
  • Full configuration specification available

🛡️ Robust Error Handling

  • Enhanced debugging with detailed error context and troubleshooting suggestions
  • Per-server log files ({serverID}.log) for easier isolation of issues
  • Automatic schema normalization to fix malformed JSON schemas from backends
  • Container detection with security warnings for nested containerization

🔌 Protocol Support

  • JSON-RPC 2.0 over stdio transport for MCP communication
  • Full Model Context Protocol implementation
  • Transparent proxy with minimal latency overhead

🚀 Getting Started

Build and run the gateway locally:

# Clone and build
make build

# Configure your MCP servers (config.toml)
[gateway]
port = 3000
api_key = "your-api-key"

[servers.github]
command = "docker"
args = ["run", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "-i", "ghcr.io/github/github-mcp-server:latest"]

# Start the gateway
./awmg --config config.toml

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.1.0
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64

📚 Documentation


For complete details, see the full release notes.

Generated by Release


What's Changed

  • Lpcox/update large xfer action by @lpcox in #860
  • Hide enable-difc flag from public documentation by @Copilot in #864
  • Sanitize sensitive data in all log outputs by @claude in #878
  • [test-improver] Improve tests for main package by @github-actions[bot] in #871
  • Fix workflow documentation to use dynamic workspace paths by @claude in #879
  • Close #867: Test samples already exist in repository by @claude in #880
  • Increase Test Coverage Improver timeout from 30 to 45 minutes by @claude in #881
  • Clarify payload.json structure in large payload instructions by @claude in #883
  • Implement Cobra v1.10.0 improvements: context support, declarative flag validation, and lifecycle hooks by @claude in #882

New Contributors

Full Changelog: v0.0.113...v0.1.0

v0.0.114

11 Feb 02:42
432703b

Choose a tag to compare

What's Changed

  • Lpcox/update large xfer action by @lpcox in #860
  • Hide enable-difc flag from public documentation by @Copilot in #864
  • Sanitize sensitive data in all log outputs by @claude in #878
  • [test-improver] Improve tests for main package by @github-actions[bot] in #871
  • Fix workflow documentation to use dynamic workspace paths by @claude in #879
  • Close #867: Test samples already exist in repository by @claude in #880
  • Increase Test Coverage Improver timeout from 30 to 45 minutes by @claude in #881
  • Clarify payload.json structure in large payload instructions by @claude in #883
  • Implement Cobra v1.10.0 improvements: context support, declarative flag validation, and lifecycle hooks by @claude in #882

New Contributors

Full Changelog: v0.0.113...v0.0.114

v0.0.113

08 Feb 17:57
7d4bd82

Choose a tag to compare

🌟 Release Highlights

This maintenance release improves session management, test reliability, and documentation accuracy for MCP Gateway v0.0.113.

✨ What's New

Simplified Session Management (#831)

  • Sessions are now automatically created on first request - no manual initialization required
  • Removed the sys___init requirement, streamlining the client workflow
  • Reduces integration complexity for developers using MCP Gateway

🐛 Bug Fixes & Improvements

Enhanced Test Reliability (#844, #853)

  • Fixed filesystem and playwright MCP server configurations in stress tests
  • Improved PayloadMetadata schema structure for better data handling
  • Resolved flaky playwright test behavior for more consistent CI runs

Documentation Accuracy (#854, #855)

  • Updated HTTP transport documentation to reflect production-ready status
  • Documented known transient test failures with no action required

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.0.113
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full changelog.

Generated by Release


What's Changed

  • fix: Remove sys___init requirement - sessions always auto-created by @lpcox in #831
  • Fix filesystem and playwright MCP server configurations in stress test by @Copilot in #844
  • refactor: Improve PayloadMetadata schema and fix flaky playwright test by @lpcox in #853
  • Fix HTTP transport documentation status by @Copilot in #854
  • Document Test Coverage Improver transient failure - no fix required by @Copilot in #855

Full Changelog: v0.0.111...v0.0.113

v0.0.112

08 Feb 17:46

Choose a tag to compare

What's Changed

  • fix: Remove sys___init requirement - sessions always auto-created by @lpcox in #831
  • Fix filesystem and playwright MCP server configurations in stress test by @Copilot in #844
  • refactor: Improve PayloadMetadata schema and fix flaky playwright test by @lpcox in #853
  • Fix HTTP transport documentation status by @Copilot in #854

Full Changelog: v0.0.111...v0.0.112