Skip to content

fix: migrate mempalace MCP server to HTTP transport for MCP Gateway v0.2.30#28288

Merged
pelikhan merged 4 commits intomainfrom
copilot/fix-mempalace-mcp-server
Apr 24, 2026
Merged

fix: migrate mempalace MCP server to HTTP transport for MCP Gateway v0.2.30#28288
pelikhan merged 4 commits intomainfrom
copilot/fix-mempalace-mcp-server

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 24, 2026

MCP Gateway v0.2.30 tightened its schema to require container on all stdio server entries. The mempalace shared config used type: stdio, command: python, which satisfies neither oneOf branch, causing the daily-fact workflow to fail at agent setup with 0 turns/tokens.

Changes

  • shared/mcp/mempalace.md — migrates from stdio (command: python -m mempalace.mcp_server) to HTTP transport. A new setup step starts the server with --transport streamable-http on port 8765; the MCP entry becomes type: http, url: http://localhost:8765/mcp (auto-rewritten to host.docker.internal by the renderer when the agent firewall is active).

  • pkg/workflow/mcp_config_custom.go — extends the existing TOML-only compile-time guard against non-containerized stdio to both TOML and JSON formats. Any command:-based stdio server (non-docker) now fails at gh aw compile time with an actionable error rather than silently breaking at gateway startup:

    tool 'mempalace' stdio MCP server uses command "python" which is not supported
    by MCP Gateway v0.2.30+. Stdio servers must be containerized (use 'container'
    with 'entrypoint'), or switch to HTTP transport for servers that run directly
    on the runner.
    
  • pkg/workflow/mcp_config_copilot_test.go — updates TestRenderSharedMCPConfig_TypeConversion to use container: for the stdio test case (consistent with the now-enforced constraint).

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 --global x_amd64/vet git rev-�� --show-toplevel x_amd64/vet /usr/bin/git it} --local x_amd64/vet git (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 /opt/hostedtoolcrev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel bash /usr/bin/git git (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 node /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git -m Update initial frev-parse /usr/bin/git git (http block)
  • https://api.github.com/orgs/test-owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name prettier --check 64/bin/go **/*.ts **/*.json --ignore-path go list�� -mod=readonly -f 64/bin/go -d unsafe 64/bin/go go (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name 76315766/001' 76315766/001' 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv -bool -buildtags /usr/bin/git -errorsas -ifaceassert -nilfunc git rev-�� --show-toplevel -tests /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv .cfg git /usr/bin/git --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel ache/go/1.25.8/x/opt/hostedtoolcache/node/24.14.1/x64/bin/npm /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv ache/node/24.14.--show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv se 2036013/b103/vet.cfg .cfg (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv --show-toplevel git ache/node/24.14.1/x64/bin/node --show-toplevel x_amd64/vet /usr/bin/git git _cod�� --show-toplevel git ache/node/24.14.1/x64/bin/node --show-toplevel x_amd64/vet /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv --show-toplevel git ache/node/24.14.1/x64/bin/node --show-toplevel du /usr/bin/git git _har�� --show-toplevel git ache/node/24.14.1/x64/bin/node --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv TOKEN"; }; f sto-errorsas TOKEN"; }; f sto-ifaceassert 64/bin/bash (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel -tests /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel 64/pkg/tool/linux_amd64/vet /usr/bin/git rd .cfg 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/vet /usr/bin/git --noprofile (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel x_amd64/vet /usr/bin/git git cjs --show-toplevel git /usr/bin/git --show-toplevel x_amd64/vet /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel git /usr/bin/git git cjs --show-toplevel git ache/node/24.14.1/x64/bin/node --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel /opt/hostedtoolccommit /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel /opt/hostedtoolcrev-parse /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel node /usr/bin/git install --package-lock-ocommit /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel node /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v9
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -unreachable=false /tmp/go-build3532036013/b163/vet.cfg /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet go1.25.8 -c=4 -nolocalimports /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -ato�� -bool -buildtags /usr/local/.ghcup/bin/bash -errorsas -ifaceassert -nilfunc bash (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -unreachable=false /tmp/go-build3532036013/b119/vet.cfg /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -bool -buildtags /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -errorsas -ifaceassert -nilfunc /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -ato�� -bool -buildtags /usr/bin/git -errorsas -ifaceassert -d git (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv ry=1 /tmp/go-build3532036013/b167/vet.cfg che/go-build/a8/a8c5d801ad8644da215ff86bfcacbb217b66277bb19305bb7b31786d09806ae2-d (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv 64/pkg/tool/linu--show-toplevel git /opt/hostedtoolcache/node/24.14.1/x64/bin/node --show-toplevel 64/pkg/tool/linurev-parse /usr/bin/git node js/f�� 64/pkg/tool/linu--show-toplevel git /opt/hostedtoolcache/node/24.14.1/x64/bin/node --show-toplevel 64/pkg/tool/linurev-parse /usr/bin/git node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv 1/x64/bin/node git /opt/hostedtoolcache/node/24.14.1/x64/bin/node --show-toplevel git /usr/bin/git node js/f�� /usr/bin/git git /usr/local/.ghcup/bin/bash --show-toplevel git /usr/bin/git bash (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv -unreachable=false /tmp/go-build3532036013/b120/vet.cfg /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel x_amd64/vet /usr/bin/git git cjs --show-toplevel git /usr/bin/git --show-toplevel x_amd64/vet /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv FETCH_HEAD^{commit} .cfg 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel x_amd64/vet /usr/bin/git git js --show-toplevel git 64/bin/go --show-toplevel x_amd64/vet /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel git /usr/bin/git git cjs --show-toplevel git 64/bin/go --show-toplevel git /usr/bin/git git (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, .object.type] | @tsv --show-toplevel git bin/node k/gh-aw/gh-aw/.ggit test@example.comrev-parse /opt/hostedtoolc--show-toplevel git ache�� --show-toplevel nly /usr/bin/git /tmp/go-build322gcc -importcfg /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/node/24.14.1/x64/bin/node $name) { hasDiscussionsEnabled } } b.actor }}, Repo/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet go /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel go /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/node/24.14.1/x64/bin/node /usr/bin/git run --auto /usr/bin/git git rev-�� --show-toplevel git /usr/bin/infocmp --show-toplevel go /usr/bin/git infocmp (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0.1.2
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv -bool -buildtags /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -errorsas -ifaceassert -nilfunc /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -ato�� -bool -buildtags /usr/sbin/bash -errorsas -ifaceassert -nilfunc bash (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /opt/hostedtoolcache/node/24.14.1/x64/bin/node --show-toplevel 64/pkg/tool/linurev-parse /usr/bin/git node js/f�� ache/go/1.25.8/x--show-toplevel git /opt/hostedtoolcache/node/24.14.1/x64/bin/node --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv 1/x64/bin/node git /opt/hostedtoolcache/node/24.14.1/x64/bin/node --show-toplevel git /usr/bin/git node js/f�� /usr/bin/git git /usr/bin/head --show-toplevel git cal/bin/node head (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv HEAD .cfg 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel x_amd64/vet /usr/bin/git git js --show-toplevel git /usr/bin/git --show-toplevel x_amd64/vet /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel git /usr/bin/git git cjs --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv HEAD .cfg 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel x_amd64/vet /usr/bin/git git js --show-toplevel git /usr/bin/git --show-toplevel x_amd64/vet /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel git /usr/bin/git git cjs --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name scripts/**/*.js e/git .prettierignore git 64/bin/go e/git estP�� /tmp/go-build1260406987/b105/_pkg_.a tname) 6377068/b390/vet.cfg -p log/internal -lang=go1.25 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env 983251463 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 776987054 GO111MODULE 64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name REzZ/UVSmm-gThuyfG0BeREzZ ache/node/24.14.1/x64/bin/node **/*.json t/internal/formarev-parse ../../../.pretti--show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/asm t-25�� sistency_GoAndJavaScript3470458690/001/test-empty-frontmatter.md -trimpath /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -I /tmp/go-build126rev-parse -I /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linustatus (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env 983251463 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE n-dir/bash GOINSECURE GOMOD GOMODCACHE go env 776987054 GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name 4ACQ/f02Eva1ttQPQuPWq4ACQ e/git **/*.json b/gh-aw/pkg/filerev-parse run-script/lib/n--show-toplevel e/git estP�� W7R0/AxynIJHEe_LJwsSqW7R0 tname) /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -I /tmp/go-build126rev-parse -I /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linurev-parse (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 2796169368/.github/workflows GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name scripts/**/*.js 1/x64/bin/node .prettierignore git 64/bin/go 1/x64/bin/node 0406�� /tmp/go-build1260406987/b106/_pkg_.a k/gh-aw/gh-aw/pkg/console/accessibility.go 6377068/b392/vet.cfg -p log/slog/internarev-parse -lang=go1.25 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linuorigin (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name GO111MODULE ndor/bin/bash GOINSECURE GOMOD GOMODCACHE go env 2796169368/.github/workflows GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json GO111MODULE ck GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name k/gh-aw/gh-aw/pkg/types/doc.go 1/x64/bin/node .prettierignore git 64/bin/go 1/x64/bin/node 0406�� '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitbranch_with_hyphen3671247793/001' '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitbranch_with_hyphen3671247793/001' 6377068/b398/vet.cfg -p github.com/segmerev-parse -lang=go1.17 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linuremote.origin.url (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE pBvTgXO/G1KutSxXHjoE8hqd2SJr env 2796169368/.github/workflows GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env g_.a GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name scripts/**/*.js 1/x64/bin/node .prettierignore docker 64/bin/go 1/x64/bin/node 0406�� /tmp/go-build1260406987/b120/_pkg_.a k/gh-aw/gh-aw/pkg/stringutil/ansi.go 6377068/b397/vet.cfg -p github.com/githurev-parse -lang=go1.25 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 2796169368 GO111MODULE ck GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE 64/pkg/tool/linu-buildmode=exe GOINSECURE GOMOD GOMODCACHE Vgol9MA/jtMHmSR1-extld=gcc env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name pkg/mod/github.com/segmentio/asm@v1.1.3/internal/unsafebytes/unsgo1.25.8 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile .prettierignore git 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile 0406�� 90917917/001 pkg/mod/github.com/segmentio/encoding@v0.5.4/json/codec.go 6377068/b406/vet.cfg -p internal/nettracrev-parse -lang=go1.25 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linuorigin (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path 849721844/001' 849721844/001' -importcfg /tmp/go-build3225405083/b419/importcfg -pack /home/REDACTED/work/gh-aw/gh-aw/pkg/fileutil/fileutil.go /home/REDACTED/work/gh-aw/gh-aw/pkg/fileutil/tar.go -c log.showsignaturGOINSECURE log 64/bin/go -d --format=format:-o --end-of-options/tmp/go-build3225405083/b423/_pkg_.a go (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/link GOINSECURE GOMOD GOMODCACHE x_amd64/link (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build3225405083/b404/cli.test /tmp/go-build3225405083/b404/cli.test -test.testlogfile=/tmp/go-build3225405083/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE node /opt�� prettier --check 64/bin/go **/*.ts **/*.json --ignore-path go (http block)
    • Triggering command: /tmp/go-build2266377068/b404/cli.test /tmp/go-build2266377068/b404/cli.test -test.testlogfile=/tmp/go-build2266377068/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true -nolocalimports -importcfg /tmp/go-build1260406987/b184/importcfg -pack env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /tmp/go-build1146230544/b404/cli.test /tmp/go-build1146230544/b404/cli.test -test.testlogfile=/tmp/go-build1146230544/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel /opt/hostedtoolcrev-parse /opt/hostedtoolc--show-toplevel git rev-�� --show-toplevel node /usr/bin/git install --package-lock-o-lh /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel node /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /usr/bin/git --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel git ache/go/1.25.8/x64/bin/go git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /opt/hostedtoolcache/node/24.14.--show-toplevel git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile 6315�� -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go _bra�� -json GO111MODULE sh GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env lGitmain_branch2849721844/001' lGitmain_branch2849721844/001' 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env Gitmain_branch2849721844/001' Gitmain_branch2849721844/001' 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env 490872417/001 490872417/002/work ode_modules/.bin/sh GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /usr/bin/git --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv ded_for_claude git /usr/bin/git --show-toplevel git ache/go/1.25.8/x64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/asm /usr/bin/git --show-toplevel git /opt/hostedtoolcache/node/24.14.--show-toplevel o (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/link env ionpins.test GO111MODULE ortcfg.link GOINSECURE GOMOD GOMODCACHE WWO0B1W7QszrdJFJlk/xQe5f0wJO56wlipN0mlS/v5NB_zuqconfig (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion -p github.com/githurev-parse -lang=go1.25 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -o licyBlockedUsersExpressionCompiledOutput2939407985/001 -trimpath ache/node/24.14.1/x64/bin/node -p github.com/githuapi -lang=go1.25 /opt/hostedtoolcrepos/{owner}/{repo}/actions/runs/3/artifacts (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE sh -c "prettier" --check '**/*.cjs' '**/*.ts' '**/*.json' --ignore-path ../../../.prettierignore GOPROXY 6230544/b464/vet.cfg GOSUMDB GOWORK 64/bin/go git (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcGO111MODULE -V=f�� ../../../.prettiGOINSECURE bash 64/bin/go --noprofile git 64/bin/go go (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcGO111MODULE -V=f�� ../../../.prettiGOINSECURE bash 64/bin/go -d git 64/bin/go go (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env tion-kit.md GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name prettier --check 64/bin/go **/*.ts **/*.json --ignore-path go env GOPATH gcc 64/bin/go tierignore c 64/bin/go go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name -json GO111MODULE /node GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch -json GO111MODULE ck GOINSECURE GOMOD GOMODCACHE go sRem�� -json GO111MODULE .cfg GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq /usr/bin/git -json GO111MODULE x_amd64/compile git add .github/workflows/test.md x_amd64/compile /usr/bin/git -json GO111MODULE 64/bin/sh git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch --show-toplevel go /usr/bin/git -json GO111MODULE odules/npm/node_/repos/actions/checkout/git/ref/tags/v3 git rev-�� --show-toplevel go /usr/bin/git ub/workflows GO111MODULE 64/bin/go git (http block)
  • invalid.example.invalid
    • Triggering command: /usr/lib/git-core/git-remote-https /usr/lib/git-core/git-remote-https origin https://invalid.example.invalid/nonexistent-repo.git git form�� origin/auth-cleanup-success..auth-cleanup-success --stdout modules/@npmcli/run-script/lib/node-gyp-bin/git origin/feature-b/usr/lib/git-core/git --stdout ning-branch git conf�� user.email lure test commit on-test user.email .diff.tmp unning-branch git (dns block)
    • Triggering command: /usr/lib/git-core/git-remote-https /usr/lib/git-core/git-remote-https origin https://invalid.example.invalid/nonexistent-repo.git e/git init�� ndor/bin/git git ode_modules/.bin/git =receive test@example.com--git-dir=/tmp/bare-incremental-Lt7XSq /git (dns block)

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

Copilot AI and others added 2 commits April 24, 2026 15:02
…0.2.30 compatibility

MCP Gateway v0.2.30 requires a `container` property for all stdio-based MCP
servers. The mempalace server was configured with `type: stdio, command: python`
which no longer satisfies the gateway schema validation, causing the daily-fact
workflow to fail at agent setup with 0 turns.

Changes:
- shared/mcp/mempalace.md: convert from stdio (command: python) to HTTP
  transport. The setup step now starts mempalace as a streamable-http server
  on localhost:8765 and the MCP config uses type: http with the localhost URL
  (automatically rewritten to host.docker.internal by the renderer when the
  agent firewall is enabled).
- pkg/workflow/mcp_config_custom.go: extend the existing TOML-only compile-time
  error for command-based stdio MCPs to cover JSON format as well. Previously
  only the TOML renderer rejected non-docker command-based stdio; now the JSON
  gateway config renderer also rejects them at compile time with an actionable
  error message. This catches broken configs before they reach MCP Gateway
  validation at runtime.
- pkg/workflow/mcp_config_copilot_test.go: update TestRenderSharedMCPConfig_
  TypeConversion to use container-based stdio config (the correct modern
  approach) instead of command-based stdio, which is now rejected.

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/747f0d58-11b0-4789-8ffc-452ba9175a0a

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
…-check sleep interval

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/747f0d58-11b0-4789-8ffc-452ba9175a0a

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix missing container property in mempalace MCP server fix: migrate mempalace MCP server to HTTP transport for MCP Gateway v0.2.30 Apr 24, 2026
Copilot AI requested a review from pelikhan April 24, 2026 15:09
Comment thread pkg/workflow/mcp_config_custom.go Outdated
"Stdio servers must be containerized. Use 'container' with 'entrypoint' instead.\n\n"+
"Example:\ntools:\n %s:\n container: \"my-registry/my-tool:latest\"\n entrypoint: \"my-tool\"\n args: [\"--verbose\"]",
toolName, mcpConfig.Command, toolName,
"tool '%s' stdio MCP server uses command %q which is not supported by MCP Gateway v0.2.30+. "+
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot no need to mention version number

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 29bfb00 — removed the version number from both the comment and the error message.

Copilot AI requested a review from pelikhan April 24, 2026 15:16
@pelikhan pelikhan marked this pull request as ready for review April 24, 2026 15:19
Copilot AI review requested due to automatic review settings April 24, 2026 15:19
@pelikhan pelikhan merged commit f433037 into main Apr 24, 2026
19 checks passed
@pelikhan pelikhan deleted the copilot/fix-mempalace-mcp-server branch April 24, 2026 15:19
@github-actions github-actions Bot mentioned this pull request Apr 24, 2026
@github-actions
Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel Report

Test Quality Score: 90/100

Excellent test quality

Metric Value
New/modified tests analyzed 1 (minor update to TestRenderSharedMCPConfig_TypeConversion)
✅ Design tests (behavioral contracts) 1 (100%)
⚠️ Implementation tests (low value) 0 (0%)
Tests with error/edge cases 1 (100%)
Duplicate test clusters 0
Test inflation detected No (test +2/-1 vs production +15/-8)
🚨 Coding-guideline violations None

Test Classification Details

Test File Classification Issues Detected
TestRenderSharedMCPConfig_TypeConversion (modified) pkg/workflow/mcp_config_copilot_test.go ✅ Design None — verifies observable type field output for both engines/transports

The change is a minor +2/-1 adjustment to the TypeConversion test to use container-based config instead of command-based config, correctly reflecting MCP Gateway v0.2.30's rejection of command-based stdio configs. The update keeps the behavioral assertion intact.


Overall File Quality (Context)

The full test file contains three high-quality table-driven test functions covering the changed production code:

  • TestRenderSharedMCPConfig_CopilotFields (4 cases): Verifies observable JSON output for stdio/HTTP servers across two engines. ✅
  • TestRenderSharedMCPConfig_ToolsFieldGeneration (3 cases): Covers edge cases — empty array and missing allowed both default to "*". ✅
  • TestRenderSharedMCPConfig_TypeConversion (4 cases): Verifies type field rendering for both stdio/HTTP transports across Copilot and Claude engines. ✅

All checks pass:

  • Build tag //go:build !integration present on line 1 ✅
  • No mock libraries (no gomock, testify/mock, .EXPECT()) ✅
  • Assertion messages are descriptive with actual output context ✅
  • Error paths covered via t.Fatalf on function errors ✅
  • No test inflation (test file 282 lines vs production 805 lines) ✅

Language Support

Tests analyzed:

  • 🐹 Go (*_test.go): 1 modified test function (unit, //go:build !integration)
  • 🟨 JavaScript (*.test.cjs, *.test.js): 0 tests

Verdict

Check passed. 0% of new/modified tests are implementation tests (threshold: 30%). No coding-guideline violations detected. The test update accurately reflects the behavioral change introduced by the MCP Gateway v0.2.30 migration.

📖 Understanding Test Classifications

Design Tests (High Value) verify what the system does:

  • Assert on observable outputs, return values, or state changes
  • Cover error paths and boundary conditions
  • Would catch a behavioral regression if deleted
  • Remain valid even after internal refactoring

Implementation Tests (Low Value) verify how the system does it:

  • Assert on internal function calls (mocking internals)
  • Only test the happy path with typical inputs
  • Break during legitimate refactoring even when behavior is correct
  • Give false assurance: they pass even when the system is wrong

Goal: Shift toward tests that describe the system's behavioral contract — the promises it makes to its users and collaborators.

References: §24897160868

🧪 Test quality analysis by Test Quality Sentinel · ● 548.9K ·

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Test Quality Sentinel: 90/100. Test quality is excellent — 0% of new/modified tests are implementation tests (threshold: 30%). No coding-guideline violations detected.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the mempalace shared MCP configuration from stdio to HTTP transport to comply with MCP Gateway v0.2.30+ schema requirements, and adds an earlier compile-time guard to fail unsupported stdio command: configurations.

Changes:

  • Switch mempalace shared config to type: http and add workflow steps to start the server via --transport streamable-http.
  • Expand the stdio non-containerized command: guard in renderSharedMCPConfig to apply beyond TOML-only, with a more actionable error.
  • Update Copilot MCP config rendering test setup to use container: for stdio cases.
Show a summary per file
File Description
pkg/workflow/mcp_config_custom.go Broadens compile-time rejection of non-containerized stdio command: MCP servers and updates the error guidance.
pkg/workflow/mcp_config_copilot_test.go Updates stdio test input to use container-based config consistent with the new constraint.
.github/workflows/shared/mcp/mempalace.md Migrates mempalace MCP server definition to HTTP and adds steps to start/verify the server on the runner.
.github/workflows/daily-fact.lock.yml Recompiled lock output reflecting the new mempalace HTTP server and startup step.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 4/4 changed files
  • Comments generated: 3

Comment on lines +76 to +77
"Example (container):\ntools:\n %s:\n container: \"my-registry/my-tool:latest\"\n entrypoint: \"my-tool\"\n args: [\"--verbose\"]\n\n"+
"Example (HTTP — for Python/Node servers installed on the runner):\ntools:\n %s:\n type: http\n url: \"http://localhost:8765/mcp\"",
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The error examples are under tools: but custom MCP servers are defined under mcp-servers: (and tools: rejects unknown keys). Following this message literally would produce a separate compile error. Suggest updating both examples to use mcp-servers: so the guidance is directly copy/pasteable.

Suggested change
"Example (container):\ntools:\n %s:\n container: \"my-registry/my-tool:latest\"\n entrypoint: \"my-tool\"\n args: [\"--verbose\"]\n\n"+
"Example (HTTP — for Python/Node servers installed on the runner):\ntools:\n %s:\n type: http\n url: \"http://localhost:8765/mcp\"",
"Example (container):\nmcp-servers:\n %s:\n container: \"my-registry/my-tool:latest\"\n entrypoint: \"my-tool\"\n args: [\"--verbose\"]\n\n"+
"Example (HTTP — for Python/Node servers installed on the runner):\nmcp-servers:\n %s:\n type: http\n url: \"http://localhost:8765/mcp\"",

Copilot uses AI. Check for mistakes.
Comment on lines +63 to 79
// Stdio servers must use Docker containerization.
// If a command is present without a container, the server is not containerized and will
// be rejected by the gateway schema validation at startup (for both TOML and JSON formats).
// For Python/Node/shell servers, use HTTP transport instead:
// mcp-servers:
// my-server:
// type: http
// url: "http://localhost:8765/mcp"
if mcpConfig.Type == "stdio" && mcpConfig.Command != "" && mcpConfig.Command != "docker" {
return fmt.Errorf(
"tool '%s' stdio MCP server uses command %q which is not supported by MCP Gateway v0.1.5+. "+
"Stdio servers must be containerized. Use 'container' with 'entrypoint' instead.\n\n"+
"Example:\ntools:\n %s:\n container: \"my-registry/my-tool:latest\"\n entrypoint: \"my-tool\"\n args: [\"--verbose\"]",
toolName, mcpConfig.Command, toolName,
"tool '%s' stdio MCP server uses command %q which is not supported by MCP Gateway. "+
"Stdio servers must be containerized (use 'container' with 'entrypoint'), "+
"or switch to HTTP transport for servers that run directly on the runner.\n\n"+
"Example (container):\ntools:\n %s:\n container: \"my-registry/my-tool:latest\"\n entrypoint: \"my-tool\"\n args: [\"--verbose\"]\n\n"+
"Example (HTTP — for Python/Node servers installed on the runner):\ntools:\n %s:\n type: http\n url: \"http://localhost:8765/mcp\"",
toolName, mcpConfig.Command, toolName, toolName,
)
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This new compile-time guard (rejecting non-containerized stdio commands) isn’t covered by a unit test. Consider adding a test case that asserts renderSharedMCPConfig returns an error for a stdio config like {type:"stdio", command:"python"} for both Format:"json" and Format:"toml" renderers, so future changes don’t silently re-allow unsupported configs.

Copilot uses AI. Check for mistakes.
// my-server:
// type: http
// url: "http://localhost:8765/mcp"
if mcpConfig.Type == "stdio" && mcpConfig.Command != "" && mcpConfig.Command != "docker" {
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment says “If a command is present without a container…”, but the guard condition doesn’t check mcpConfig.Container and will fire on any non-docker command regardless. Either align the wording to what’s enforced, or (preferably) make the condition explicitly check for the non-containerized case (e.g., Container == "") so future refactors don’t accidentally broaden/narrow the rule.

Suggested change
if mcpConfig.Type == "stdio" && mcpConfig.Command != "" && mcpConfig.Command != "docker" {
if mcpConfig.Type == "stdio" && mcpConfig.Command != "" && mcpConfig.Container == "" && mcpConfig.Command != "docker" {

Copilot uses AI. Check for mistakes.
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.

[aw-failures] Daily Fact About gh-aw: mempalace MCP server missing 'container' property breaks agent startup (MCP Gateway v0.2.30)

3 participants