Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/everything-mcp-diff.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@
# dispatches only a workflow whose file exists on the default branch (`main`),
# and both version workflows dispatch this one by file name from `v2/main`, so
# renaming it here would break their dispatch until the next milestone merge.
# The rename is staged instead: `mcp-interface-diff.yml` lands on `main` first
# as a dispatch-only placeholder (#5463), then #5527 moves this file's contents
# there, switches the callers and deletes this file.
#
# See: https://github.com/modelcontextprotocol/inspector/issues/1034
name: MCP Interface Diff
Expand Down
42 changes: 42 additions & 0 deletions .github/workflows/mcp-interface-diff.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Placeholder for the MCP interface diff's future file name (#5463, Step 1 of
# a rename staged across a milestone merge).
#
# The interface diff lives in `everything-mcp-diff.yml`, a name left over from
# when it diffed only the Everything server. GitHub dispatches a workflow only
# when its file exists on the default branch (`main`), and both version
# workflows (`version-packages.yml`, `prepare-python-release.yml`) dispatch
# the diff by file name from `v2/main`. Renaming it in one step on `v2/main`
# would break their dispatch until the next milestone merge. So the rename is
# staged:
#
# 1. This file ships to `main` in a milestone merge. It is a placeholder, not
# a copy of the diff: a dispatch resolves the file name on `main` but runs
# the file as it is on the dispatched ref, so a placeholder makes the name
# dispatchable as well as a copy would, without a second copy to keep in
# step meanwhile. It has only a `workflow_dispatch` trigger, so it never
# runs beside the real diff on a push or a pull request.
# 2. After that merge, #5527 (Step 2) moves `everything-mcp-diff.yml`'s
# contents here, switches the callers to this name, and deletes the old
# file.
#
# Until then, nothing dispatches this file, and a manual dispatch only says
# where the diff is.
name: MCP Interface Diff (rename placeholder)

on:
workflow_dispatch:

permissions:
contents: read

jobs:
placeholder:
name: Point to the interface diff
timeout-minutes: 5
runs-on: ubuntu-latest
steps:
- name: Say where the interface diff runs
run: |
echo "This file is a placeholder for a staged rename (#5463, #5527)."
echo "The MCP interface diff runs from .github/workflows/everything-mcp-diff.yml:"
echo " gh workflow run everything-mcp-diff.yml --ref <branch>"
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ servers/
├── .github/workflows/ typescript.yml, python.yml (per-package CI), release.yml (publishes on a GitHub Release),
│ version-packages.yml (the changesets PR), prepare-python-release.yml (the CalVer PR),
│ everything-mcp-diff.yml (each changed server's interface diff on PRs),
│ mcp-interface-diff.yml (a dispatch-only placeholder for that file's new name, #5463),
│ main-source.yml (a PR into main must bring nothing that is not on v2/main),
│ and the scheduled sweeps that file issues: dependency-refresh.yml, dependabot-alerts.yml, sdk-watch.yml
├── .github/ISSUE_TEMPLATE/ Bug and feature issue forms; config.yml routes security and new servers away
Expand Down
15 changes: 15 additions & 0 deletions scripts/version-pr-ci.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -257,3 +257,18 @@ test("RELEASING.md names the statuses a version PR is merged on", () => {
assert.ok(releasing.includes(`\`${context}\``), context);
assert.doesNotMatch(releasing, /Close and reopen the PR to run CI/);
});

// #5463 (Step 1 of a staged rename): `mcp-interface-diff.yml` exists so the
// name is on `main` before #5527 (Step 2) points the version workflows at it.
// Until then it must not run beside the real diff on a push or a pull
// request, and nothing may dispatch it yet: the version workflows keep
// dispatching `everything-mcp-diff.yml` (pinned in VERSION_WORKFLOWS above).
test("mcp-interface-diff.yml is a dispatch-only placeholder until Step 2", () => {
const wf = workflow("mcp-interface-diff.yml");
assert.deepEqual(Object.keys(wf.on), ["workflow_dispatch"]);
for (const { file } of VERSION_WORKFLOWS)
assert.ok(
!read(`.github/workflows/${file}`).includes("mcp-interface-diff.yml"),
`${file} does not dispatch the placeholder yet`,
);
});
Loading