Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
92f03ec
fix(filesystem): read search_files excludePatterns like directory_tree
cliffhall Nov 5, 2026
aef22c8
fix(filesystem): match edit_file oldText that ends with a newline
cliffhall Nov 5, 2026
db2a4fc
fix(filesystem): report a missing parent directory, not a raw chdir e…
cliffhall Nov 5, 2026
1fbdd4e
fix(everything): count tasks/update answers in UTF-8 bytes
cliffhall Nov 5, 2026
39c66a4
feat(filesystem): refuse NTFS alternate-data-stream paths on Windows
cliffhall Nov 5, 2026
b766bc2
feat(filesystem): per-directory read-only access with --read-only-dir
cliffhall Nov 5, 2026
41a758c
feat(everything): bind the HTTP transports to loopback by default, wi…
cliffhall Nov 5, 2026
b17b76a
fix(memory): stop the lock heartbeat refreshing a lock it no longer owns
cliffhall Nov 5, 2026
3f140ed
feat(fetch): cap the response body size while reading it
cliffhall Nov 5, 2026
e07a11e
docs(git): state --repository confinement in --help and validate_repo…
cliffhall Nov 5, 2026
d35ed52
fix(git): require git_log max_count to be at least 1
cliffhall Nov 5, 2026
03a1b6b
chore(ci): diff each changed server's MCP interface, for every server
cliffhall Nov 5, 2026
5bfe0ae
feat(filesystem, memory): say when to use each list and delete tool
cliffhall Nov 5, 2026
698222f
test(memory): widen the heartbeat ownership test's timing margins
cliffhall Nov 5, 2026
d3b3f15
test(filesystem): expect ENOENT for a file in the way on Windows
cliffhall Nov 5, 2026
8885862
docs(git, time): make the Zed configuration snippets valid JSON
cliffhall Nov 5, 2026
8c644a0
docs: fix alt text and dead links in README and ADDITIONAL.md
cliffhall Nov 5, 2026
5b92fcc
chore(docker): build filesystem, memory and sequentialthinking from t…
cliffhall Nov 5, 2026
f3222de
fix(filesystem): close two read-only-dir bypasses found in review
cliffhall Nov 5, 2026
60ef6fe
fix(docker): run every server image as its non-root user
cliffhall Nov 5, 2026
b3f7149
fix(ci): keep the diff workflow's file name, read changed paths NUL-d…
cliffhall Nov 5, 2026
b50db6c
docs(memory): give Docker upgrade steps that keep the container working
cliffhall Nov 5, 2026
e1b5fee
Merge pull request #5464 from modelcontextprotocol/v2/docs/5213-zed-c…
cliffhall Nov 5, 2026
2a73097
feat: describe every tool input property (#3669)
cliffhall Nov 5, 2026
6f16868
chore(deps): monthly dependency refresh
cliffhall Nov 5, 2026
5adc7ea
Merge pull request #5449 from modelcontextprotocol/v2/fix/5419-everyt…
cliffhall Nov 5, 2026
c704929
Merge pull request #5452 from modelcontextprotocol/v2/feat/5371-every…
cliffhall Nov 5, 2026
c11c81d
Merge pull request #5467 from modelcontextprotocol/v2/docs/5212-readm…
cliffhall Nov 5, 2026
781e72a
fix(fetch): bound decoding of a compressed body by the byte cap
cliffhall Nov 5, 2026
6fd4d3d
Merge pull request #5469 from modelcontextprotocol/v2/chore/5345-ts-d…
cliffhall Nov 5, 2026
c77bff9
Merge pull request #5454 from modelcontextprotocol/v2/docs/5230-git-r…
cliffhall Nov 5, 2026
594c2be
Merge pull request #5455 from modelcontextprotocol/v2/fix/5214-git-lo…
cliffhall Nov 5, 2026
8a3fe59
fix(filesystem): refuse to start on an unresolvable --read-only-dir
cliffhall Nov 5, 2026
b501054
fix(docker): name each image's user by UID for runAsNonRoot
cliffhall Nov 5, 2026
cdc5a12
Merge pull request #5459 from modelcontextprotocol/v2/chore/5428-per-…
cliffhall Nov 5, 2026
3a29318
test(everything): check input descriptions on both protocol eras (#3669)
cliffhall Nov 5, 2026
5ff81de
fix(fetch): stop reading a compressed body where its stream ends
cliffhall Nov 5, 2026
ee969e7
fix(filesystem): fold the macOS Data-volume spelling in read-only checks
cliffhall Nov 5, 2026
2b9740a
Merge remote-tracking branch 'origin/v2/main' into v2/fix/4741-docker…
cliffhall Nov 5, 2026
ad6a4bd
Merge pull request #5475 from modelcontextprotocol/v2/feat/3669-schem…
cliffhall Nov 5, 2026
1914f92
Merge pull request #5476 from modelcontextprotocol/v2/chore/5417-mont…
cliffhall Nov 5, 2026
9937c7c
Merge pull request #5460 from modelcontextprotocol/v2/enhancement/507…
cliffhall Nov 5, 2026
7d1fcf1
Merge pull request #5462 from modelcontextprotocol/v2/fix/5418-memory…
cliffhall Nov 5, 2026
44616d7
Merge pull request #5474 from modelcontextprotocol/v2/docs/5457-memor…
cliffhall Nov 5, 2026
b71bad9
fix(filesystem): treat a marking of the macOS Data volume root as "/"
cliffhall Nov 5, 2026
05d326b
Merge remote-tracking branch 'origin/v2/main' into v2/fix/4741-docker…
cliffhall Nov 5, 2026
d39d800
Merge remote-tracking branch 'origin/v2/main' into v2/fix/5216-filesy…
cliffhall Nov 5, 2026
435dc70
fix(filesystem): state the shared excludePatterns rule in both schemas
cliffhall Nov 5, 2026
acb60ad
Merge pull request #5473 from modelcontextprotocol/v2/fix/4741-docker…
cliffhall Nov 5, 2026
e7b956e
fix(filesystem): prune the directory an excludePatterns "/**" glob names
cliffhall Nov 5, 2026
67b541c
chore(everything): drop the unused jszip dependency
cliffhall Nov 5, 2026
728123f
fix(filesystem): strip a trailing "/**" only for directory entries
cliffhall Nov 5, 2026
7167940
Merge pull request #5453 from modelcontextprotocol/v2/feat/5370-fetch…
cliffhall Nov 5, 2026
6ab7e7c
Merge pull request #5478 from modelcontextprotocol/v2/chore/5471-ever…
cliffhall Nov 5, 2026
45aba4a
Merge remote-tracking branch 'origin/v2/main' into v2/feat/5375-files…
cliffhall Nov 5, 2026
2e06798
test(filesystem): drive the ADS validatePath cases through the tools
cliffhall Nov 5, 2026
e04e527
chore(python): adopt ruff 0.17 and clear its new lint findings
cliffhall Nov 5, 2026
03891ce
feat(filesystem): refuse Windows device names and trailing dots/spaces
cliffhall Nov 5, 2026
95123b0
fix(filesystem): skip UNC server/share names; expect trailing-dot ref…
cliffhall Nov 5, 2026
f5925bd
fix(filesystem): match any character in a device name's extension
cliffhall Nov 5, 2026
56c79bd
test(filesystem): drive the device-name validatePath cases through th…
cliffhall Nov 5, 2026
775a985
Merge pull request #5479 from modelcontextprotocol/v2/chore/5468-pyth…
cliffhall Nov 5, 2026
cf4c957
Merge pull request #5446 from modelcontextprotocol/v2/fix/5216-filesy…
cliffhall Nov 5, 2026
81add94
Merge pull request #5456 from modelcontextprotocol/v2/fix/5445-filesy…
cliffhall Nov 5, 2026
8eb4eae
Merge pull request #5447 from modelcontextprotocol/v2/fix/5431-filesy…
cliffhall Nov 5, 2026
1784fd7
Merge pull request #5448 from modelcontextprotocol/v2/fix/5432-filesy…
cliffhall Nov 5, 2026
c1b6e19
Merge pull request #5450 from modelcontextprotocol/v2/feat/5375-files…
cliffhall Nov 5, 2026
7b4bdaa
Merge pull request #5458 from modelcontextprotocol/v2/feat/5444-files…
cliffhall Nov 5, 2026
b71b3da
Merge pull request #5451 from modelcontextprotocol/v2/feat/5348-files…
cliffhall Nov 5, 2026
7924213
fix(fetch): address GHSA-3rxj-6jhw-qfv7 and GHSA-f9hh-cmx9-2f23
cliffhall Nov 10, 2026
f3f636d
fix(filesystem): address GHSA-p9cv-8g75-4xcg
cliffhall Nov 10, 2026
a4a43ac
fix(git): address GHSA-6hqx-gqrx-c5r2 and GHSA-q74p-4wrc-q7w6
cliffhall Nov 10, 2026
83c129f
chore(deps): override minimatch to ^11.0.1 for the lint tooling
cliffhall Nov 10, 2026
1c1ba9e
Merge pull request #5507 from modelcontextprotocol/v2/chore/5481-mini…
cliffhall Nov 10, 2026
036850a
fix(filesystem): address GHSA-7m4x-rv66-mxhh
cliffhall Nov 11, 2026
4a3bfcc
chore: stamp Python CalVer versions for 2026.11.11
github-actions[bot] Nov 11, 2026
759cbbc
fix(git): address review findings for GHSA-6hqx-gqrx-c5r2
cliffhall Nov 11, 2026
c83a1dd
fix(filesystem): address review findings for GHSA-p9cv-8g75-4xcg
cliffhall Nov 11, 2026
db4cdfd
fix(filesystem): address review round 2 for GHSA-p9cv-8g75-4xcg
cliffhall Nov 11, 2026
3d22dc1
fix(filesystem): address review round 3 for GHSA-p9cv-8g75-4xcg
cliffhall Nov 11, 2026
505476d
fix(filesystem): address review round 4 for GHSA-p9cv-8g75-4xcg
cliffhall Nov 11, 2026
1629bb3
Merge pull request #5514 from modelcontextprotocol/v2/fix/ghsa-6hqx-g…
cliffhall Nov 11, 2026
faef80b
Merge pull request #5515 from modelcontextprotocol/v2/fix/ghsa-3rxj-6…
cliffhall Nov 11, 2026
0d53550
Merge pull request #5516 from modelcontextprotocol/v2/fix/ghsa-p9cv-8…
cliffhall Nov 11, 2026
4ac5add
Merge pull request #5510 from modelcontextprotocol/v2/chore/5509-pyth…
cliffhall Nov 11, 2026
5c6686a
chore: version packages
github-actions[bot] Nov 11, 2026
6cfff62
Merge pull request #5470 from modelcontextprotocol/changeset-release/…
cliffhall Nov 11, 2026
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
4 changes: 2 additions & 2 deletions .claude/skills/client-smoke/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,8 @@ server is listening and exit 4. The wait is bounded and checks that this
server is still alive, so one that fails to bind (the build is missing, the
port was taken in between) ends the run instead of hanging it. The subshell's `EXIT` trap stops the server by pid even when the CLI call
fails; a listener left on the port makes the next run talk to the old build.
By hand in two terminals, the equivalent is waiting for the `listening on
port` line and stopping the server with Ctrl-C.
By hand in two terminals, the equivalent is waiting for the listening line
(`… listening on 127.0.0.1:3917`) and stopping the server with Ctrl-C.

A change to a tool, resource or prompt of `everything` is checked over stdio
and Streamable HTTP. Check HTTP+SSE as well when the change touches transport
Expand Down
7 changes: 4 additions & 3 deletions .claude/skills/local-dev/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,13 @@ PORT=3917 node src/everything/dist/index.js streamableHttp
```

Both HTTP transports listen on `PORT`, default `3001`, so they cannot run side
by side without setting it. Streamable HTTP serves POST, GET and DELETE on
by side without setting it. They bind `HOST`, default `127.0.0.1` (loopback
only); `HOST=0.0.0.0` widens it to every interface. Streamable HTTP serves POST, GET and DELETE on
`/mcp`. HTTP+SSE serves `GET /sse` and `POST /message`; it is deprecated, kept
working, and never the transport to recommend. The two log to different
streams: HTTP+SSE writes everything to stderr, while Streamable HTTP writes its
request and session messages to stdout and its `listening on port` line and
errors to stderr.
request and session messages to stdout and its listening line (which names
the bound `host:port`) and errors to stderr.

## Run the local package the way a user would

Expand Down
28 changes: 19 additions & 9 deletions .claude/skills/pre-push-gate/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -275,25 +275,35 @@ of the server's stderr. Re-run a subset with

### `interface-diff`

The last stage diffs the `everything` server's MCP interface (capabilities,
tools, prompts, resources, resource templates) in this checkout's build
against the same server built from the merge-base with `origin/v2/main`, and
prints the report. **A changed interface does not fail it**: the report is
The last stage diffs the MCP interface (capabilities, tools, prompts,
resources, resource templates) of each server the change touches, in this
checkout's build, against the same server built from the merge-base with
`origin/v2/main`, and prints one report per server. Each report says why that
server was selected; a change that touches no server prints
`no server changed` and passes. What selects a server is in
[`docs/quality-gate.md`](../../../docs/quality-gate.md). **A changed interface does not fail it**: the report is
what the PR's sticky comment will show, so read it, and if a change is not
one you meant, that is the finding. It fails only when the diff cannot run,
with `❌ The interface diff could not run` and the reason:

- **"origin/v2/main is not available"**: `git fetch origin v2/main`.
- **"src/everything/dist/index.js does not exist"**: you ran it on its own
before building: `npm run build -w src/everything`.
- **An `npm ci` or `npm run build` failure**: the _base_ did not install or
build. Offline with a cold npm cache is the usual cause; otherwise name a
- **"src/<server>/dist/index.js does not exist"**: you ran it on its own
before building: `npm run build -w src/<server>`.
- **"src/<server>/.venv does not exist"**: a Python server was not synced:
`cd src/<server> && uv sync --frozen --all-extras --dev` (the gate's
`validate:py` does it).
- **"does not exist at the base"**: the server is new on this branch, so
there is no base to diff it against.
- **An `npm ci`, `npm run build` or `uv sync` failure**: the _base_ did not
install or build. Offline with a cold npm cache is the usual cause; otherwise name a
base that builds with `npm run interface-diff -- --base <ref>`.
- **"Base server probe failed" / "Target probe failed"**: a server did not
answer the probe. A target failure is this checkout's server and is the
real defect; the smoke stage before it usually fails first.

Re-run it on its own with `npm run interface-diff` (about ten seconds). What
Re-run it on its own with `npm run interface-diff` (about ten seconds for
every server), `-- --server <name>` for one, or `-- --list` to see what it
would select and why. What
it compares against in CI, and why it is a script rather than an action, is
in [`docs/quality-gate.md`](../../../docs/quality-gate.md) and the header of
`scripts/interface-diff.mjs`.
Expand Down
10 changes: 5 additions & 5 deletions .claude/skills/release/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,10 +206,10 @@ Then, on the PR:
```
2. **Wait for its CI to pass.** The workflow token's push starts no workflow,
so the Version Packages workflow dispatches the TypeScript, Python, DCO and
Everything diff workflows on `changeset-release/v2/main` after each update.
MCP interface diff workflows on `changeset-release/v2/main` after each update.
A PR does not list dispatched checks, so the result shows as four commit
statuses: `TypeScript (dispatched)`, `Python (dispatched)`,
`DCO (dispatched)` and `Everything diff (dispatched)`. The PR may also
`DCO (dispatched)` and `Interface diff (dispatched)`. The PR may also
list `DCO signoff` and the diff as pending or failed with no jobs: GitHub
holds the token's `pull_request` runs (#5173), so read the statuses
instead. Closing and reopening the PR does not start the CI workflows
Expand Down Expand Up @@ -255,8 +255,8 @@ gh workflow run prepare-python-release.yml --repo modelcontextprotocol/servers \

It opens a PR that starts with `Closes #N`, on a branch named
`v2/chore/<N>-python-calver-<date>`, labeled `v2`, and dispatches the
TypeScript, Python and DCO workflows on that branch, as the Version Packages
workflow does (not the Everything diff, whose paths it never touches).
TypeScript, Python, DCO and MCP interface diff workflows on that branch, as
the Version Packages workflow does.
No PR means no Python server has a shipped change since its last stamp.

Then, on the PR:
Expand All @@ -272,7 +272,7 @@ Then, on the PR:
--json number,headRefName,url \
| jq --arg p "v2/chore/$N-python-calver-" '.[] | select(.headRefName | startswith($p))'
```
2. **Wait for its three `(dispatched)` statuses to pass**, check that each
2. **Wait for its four `(dispatched)` statuses to pass**, check that each
stamped package really changed, and a maintainer merges it.

⚠️ GitHub only dispatches a workflow that exists on the default branch. Until
Expand Down
Loading
Loading