Files
github--github-mcp-server/.github/workflows/mcp-diff.yml
T
2026-07-13 12:37:57 +08:00

141 lines
5.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: MCP Server Diff
on:
pull_request:
push:
branches: [main]
tags: ['v*']
permissions:
contents: read
jobs:
mcp-diff:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version-file: go.mod
- name: Build UI
uses: ./.github/actions/build-ui
- name: Stash UI artifacts for baseline checkout
# mcp-server-diff checks the baseline ref out into a separate working
# directory and runs install_command there. Without these prebuilt
# artifacts, pkg/github/ui_dist/ would be empty on the baseline side
# and UIAssetsAvailable() would return false, producing a false-positive
# diff that "adds" _meta.ui to MCP Apps tools on every PR.
run: |
mkdir -p "${RUNNER_TEMP}/ui_dist"
cp pkg/github/ui_dist/*.html "${RUNNER_TEMP}/ui_dist/"
- name: Generate diff configurations
id: configs
# The generator imports pkg/github so any new entry in
# AllowedFeatureFlags is automatically diffed without touching this
# workflow. See script/print-mcp-diff-configs/main.go.
run: |
{
echo 'configurations<<MCP_DIFF_EOF'
go run ./script/print-mcp-diff-configs
echo 'MCP_DIFF_EOF'
} >> "$GITHUB_OUTPUT"
- name: Run MCP Server Diff
# Pinned to the cross-spec-aware mcp-server-diff v3.0.0 (full SHA required —
# Actions rejects shortened SHAs): normalizes _meta plumbing, cache hints,
# initialize envelope, tool-annotation default hints; probes each server at its
# own newest spec via the stateless SEP-2575 server/discover path. Keeps the
# go-sdk v1.6.1 -> v1.7.0-pre.1 bump an honest, signal-only diff. github/copilot-mcp-core#1709.
uses: SamMorrowDrums/mcp-server-diff@40d992e0a220e5b63378758f9a40d6a8982898d2 # v3.0.0
with:
setup_go: "false"
install_command: |
go mod download
mkdir -p pkg/github/ui_dist
cp "${RUNNER_TEMP}"/ui_dist/*.html pkg/github/ui_dist/
start_command: go run ./cmd/github-mcp-server stdio
env_vars: |
GITHUB_PERSONAL_ACCESS_TOKEN=test-token
configurations: ${{ steps.configs.outputs.configurations }}
- name: Add interpretation note
if: always()
run: |
echo "" >> $GITHUB_STEP_SUMMARY
echo "---" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "️ **Note:** Differences may be intentional improvements." >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Common expected differences:" >> $GITHUB_STEP_SUMMARY
echo "- New tools/toolsets added" >> $GITHUB_STEP_SUMMARY
echo "- Tool descriptions updated" >> $GITHUB_STEP_SUMMARY
echo "- Capability changes (intentional improvements)" >> $GITHUB_STEP_SUMMARY
mcp-diff-http:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version-file: go.mod
- name: Build UI
uses: ./.github/actions/build-ui
- name: Stash UI artifacts for baseline checkout
# See the stdio job above for rationale: the action's baseline checkout
# has no UI artifacts unless we hand them over via RUNNER_TEMP.
run: |
mkdir -p "${RUNNER_TEMP}/ui_dist"
cp pkg/github/ui_dist/*.html "${RUNNER_TEMP}/ui_dist/"
- name: Generate diff configurations
id: configs
# See script/print-mcp-diff-configs/main.go. The http-headers variant
# points every config at a shared HTTP server started by the action
# and carries per-config settings via X-MCP-* headers, mirroring how
# the remote server is invoked in production (server-side defaults +
# per-user header overrides).
run: |
{
echo 'configurations<<MCP_DIFF_EOF'
go run ./script/print-mcp-diff-configs -transport http-headers
echo 'MCP_DIFF_EOF'
} >> "$GITHUB_OUTPUT"
- name: Run MCP Server Diff (streamable-http)
# Pinned to mcp-server-diff v3.0.0 — see rationale on the stdio job above.
uses: SamMorrowDrums/mcp-server-diff@40d992e0a220e5b63378758f9a40d6a8982898d2 # v3.0.0
with:
setup_go: "false"
install_command: |
go mod download
mkdir -p pkg/github/ui_dist
cp "${RUNNER_TEMP}"/ui_dist/*.html pkg/github/ui_dist/
http_start_command: go run ./cmd/github-mcp-server http --port 8082
http_startup_wait_ms: "5000"
configurations: ${{ steps.configs.outputs.configurations }}
- name: Add interpretation note
if: always()
run: |
echo "" >> $GITHUB_STEP_SUMMARY
echo "---" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "️ **Note:** This job exercises the streamable-http transport against a shared server, with per-config settings supplied via X-MCP-* request headers." >> $GITHUB_STEP_SUMMARY