From 922ce605545ddbde9561f2879e358aa6e7e3223d Mon Sep 17 00:00:00 2001 From: Sam Morrow Date: Wed, 28 Jan 2026 17:56:25 +0100 Subject: [PATCH 1/3] ci: add MCP interface diff workflow for Everything server Adds a GitHub Actions workflow that tracks public interface changes to the Everything MCP server using mcp-server-diff. Features: - Runs on PRs and pushes affecting src/everything/ - Auto-compares against merge-base (PRs) or previous state (pushes) - Manual workflow_dispatch for comparing any two refs - Generates diff reports showing tool, resource, prompt, and capability changes This helps catch unintended interface changes and provides clear visibility into how the reference server evolves over time. Related: https://github.com/modelcontextprotocol/inspector/issues/1034 --- .github/workflows/everything-mcp-diff.yml | 70 +++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 .github/workflows/everything-mcp-diff.yml diff --git a/.github/workflows/everything-mcp-diff.yml b/.github/workflows/everything-mcp-diff.yml new file mode 100644 index 0000000000..6dd2db00e5 --- /dev/null +++ b/.github/workflows/everything-mcp-diff.yml @@ -0,0 +1,70 @@ +# Tracks public interface changes to the Everything MCP server. +# The Everything server is a reference implementation demonstrating all MCP features. +# This workflow helps reviewers see how tools, resources, prompts, and capabilities +# evolve over time - useful for SDK compliance validation and catching regressions. +# +# See: https://github.com/modelcontextprotocol/inspector/issues/1034 +name: Everything Server MCP Diff + +on: + push: + branches: [main] + paths: + - 'src/everything/**' + pull_request: + paths: + - 'src/everything/**' + # Manual trigger for comparing any two refs (commits, tags, branches) + workflow_dispatch: + inputs: + compare_ref: + description: 'Base ref to compare against (commit SHA, tag, or branch)' + required: false + default: '' + target_ref: + description: 'Target ref to compare (defaults to current branch if empty)' + required: false + default: '' + +permissions: + contents: read + +jobs: + mcp-diff: + name: Diff Everything Server Interface + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 0 + ref: ${{ github.event.inputs.target_ref || github.ref }} + + - name: Run MCP Server Diff + uses: SamMorrowDrums/mcp-server-diff@4ddeb31dd8b3f98f2c20d24d60d4d9b2b9aa6e3b # v2.1.1 + with: + setup_node: 'true' + node_version: '22' + install_command: npm ci + build_command: npm run build + start_command: node dist/index.js stdio + compare_ref: ${{ github.event.inputs.compare_ref || '' }} + server_timeout: '15' + working-directory: src/everything + + - name: Add summary context + if: always() + run: | + echo "" >> $GITHUB_STEP_SUMMARY + echo "---" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "ℹ️ **Interpreting Results**" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "The Everything server is a reference implementation that exercises all MCP features." >> $GITHUB_STEP_SUMMARY + echo "Interface changes here may indicate:" >> $GITHUB_STEP_SUMMARY + echo "- New MCP protocol features being demonstrated" >> $GITHUB_STEP_SUMMARY + echo "- Updated tool schemas or descriptions" >> $GITHUB_STEP_SUMMARY + echo "- New resources, prompts, or capabilities" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "Review changes to ensure they align with the intended protocol updates." >> $GITHUB_STEP_SUMMARY From 21103fb5d84206714a35300b94c7775862ad8964 Mon Sep 17 00:00:00 2001 From: Sam Morrow Date: Wed, 28 Jan 2026 18:09:02 +0100 Subject: [PATCH 2/3] fix: update mcp-server-diff to v2.3.5 --- .github/workflows/everything-mcp-diff.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/everything-mcp-diff.yml b/.github/workflows/everything-mcp-diff.yml index 6dd2db00e5..3473f664a9 100644 --- a/.github/workflows/everything-mcp-diff.yml +++ b/.github/workflows/everything-mcp-diff.yml @@ -42,7 +42,7 @@ jobs: ref: ${{ github.event.inputs.target_ref || github.ref }} - name: Run MCP Server Diff - uses: SamMorrowDrums/mcp-server-diff@4ddeb31dd8b3f98f2c20d24d60d4d9b2b9aa6e3b # v2.1.1 + uses: SamMorrowDrums/mcp-server-diff@a5555e85d68eaa014a334ae7d12b73787f2c49cc # v2.3.5 with: setup_node: 'true' node_version: '22' From a187556be462b94e668ed8966f530e1d8a470e7f Mon Sep 17 00:00:00 2001 From: Sam Morrow Date: Wed, 28 Jan 2026 18:17:34 +0100 Subject: [PATCH 3/3] fix: use full paths instead of working-directory Composite actions don't support working-directory at step level. Use full paths in commands instead. --- .github/workflows/everything-mcp-diff.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/everything-mcp-diff.yml b/.github/workflows/everything-mcp-diff.yml index 3473f664a9..16168537c3 100644 --- a/.github/workflows/everything-mcp-diff.yml +++ b/.github/workflows/everything-mcp-diff.yml @@ -46,12 +46,11 @@ jobs: with: setup_node: 'true' node_version: '22' - install_command: npm ci - build_command: npm run build - start_command: node dist/index.js stdio + install_command: cd src/everything && npm ci + build_command: cd src/everything && npm run build + start_command: node src/everything/dist/index.js stdio compare_ref: ${{ github.event.inputs.compare_ref || '' }} server_timeout: '15' - working-directory: src/everything - name: Add summary context if: always()