MCP via pi's built-in support: mcp-loader retired upstream; skill floor, docs, sanity check
Lint / skill-floor (push) Successful in 11s
Lint / hadolint (push) Successful in 15s
Lint / actionlint (push) Successful in 20s
Lint / doc-drift (push) Successful in 17s

pi-extensions 750b2a8 retired mcp-loader.ts in favour of builtin:mcp (an
extension registering /mcp replaced the built-in and printed a warning on
every start). This repo has no pin to move, since PI_EXTENSIONS_REF and
MEMPALACE_TOOLKIT_REF float on main, so this commit carries what the next
build changes:

- CHANGELOG Unreleased: component table (pi-extensions a88fa99 -> 750b2a8,
  mempalace-toolkit 975ab92 -> a30af61), the switch and its measurements, the
  stale-link pruning, the new sanity check, and the floor refresh.
  check-doc-drift.sh rc=0. A two-sided check: with 750b2a8 blanked out of the
  CHANGELOG it fails rc=1, naming pi-extensions a88fa99 -> 750b2a8.
- rootfs pi-extensions skill floor refreshed to 750b2a8. check-skill-floor.sh
  was rc=1 before and is rc=0 after. Base hash changes, so the next tag
  rebuilds the base.
- recreate-sanity-check.sh: "no dangling extension links" (WARN). The
  existing count includes dangling links because ls lists them. Tested
  two-sided in a temp HOME (PASS clean; WARN naming mcp-loader.ts and x.ts.off).
  On tor-ms22 v1.11.0: rc=0, 36 pass / 3 warn / 0 fail (was 35/3/0).
- DOCKER_HUB.md: pi-extensions list was three releases stale; it now lists the
  10 that ship, plus an MCP line. Dockerfile.variant comment updated.
- lint-shell.sh: 19 files clean at severity error.
This commit is contained in:
2026-10-13 07:42:23 +02:00
parent 4ee94da523
commit 3da7312166
5 changed files with 74 additions and 4 deletions
+47
View File
@@ -11,6 +11,53 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`).
---
## Unreleased
### Components that move with the next build
| Component | Baked in v1.11.0 | Next build | Why |
|---|---|---|---|
| pi-extensions | `a88fa99` | **`750b2a8`** (or later: CI resolves `main` at build time) | `mcp-loader.ts` retired; `install.sh` prunes stale links (below) |
| mempalace-toolkit | `975ab92` | **`a30af61`** (or later) | comment/README only: the bridge's `RemoteMcpClient` is now the only copy; `scripts/check-mcp-client-sync.sh` removed. No code change |
### Changed
- **MCP servers now use pi's built-in MCP support; pi-extensions'
`mcp-loader.ts` is retired.** pi has shipped MCP as a built-in extension
(`builtin:mcp`) since 0.99.0: servers go in `~/.pi/agent/mcp.json` or are
added with `pi mcp add`, and `/mcp` manages them (tools, reconnect, OAuth
sign-in, enable/disable, exposure). Because an extension that registers
`/mcp` *replaces* the built-in, every start on v1.11.0 printed
`Extension … mcp-loader.ts registers command /mcp, so built-in extension mcp
was not loaded`, and `mcp.json` was never read. Measured on tor-ms22
(v1.11.0, pi 1.1.0) before the switch: time to ready, 7 interleaved pty runs
each, was 0.276 s with no MCP, 0.283 s with the loader and 0.272 s with the
built-in. A prompt cost the same tokens with either and with neither, and a
stdio server (`server-everything`) connected and answered a tool call
through the built-in. No device had servers in the loader's `mcp` block, so
nothing needs migrating. If one does, pi-extensions' README ("MCP servers")
shows how to move it to `mcp.json`. Tools from `mcp.json` default to
`codemode` exposure; set `"exposure": "direct"` to declare them to the model.
MemPalace is unaffected: `mempalace.ts` registers `mempalace_*` itself.
- **A preserved volume drops the stale link by itself.** `~/.pi/agent/` survives
a recreate, so the old `extensions/mcp-loader.ts ->
/opt/pi-extensions/extensions/mcp-loader.ts` link would outlive the file. The
entrypoint's pi-extensions `install.sh --yes` now removes links into its own
repo whose target is gone (`.ts` and `/ext`-disabled `.ts.off`). It warns once
if `settings.json` still has an `mcp` block.
- **`recreate-sanity-check.sh`: one new check, "no dangling extension links".**
The existing "N extensions deployed" line counts a dangling link as deployed
(`ls` lists it), so it cannot see this case. The new check WARNs instead of
FAILing, because whatever it still finds points outside pi-extensions, which
`install.sh` leaves alone. Expect one more ✓ than v1.11.0 printed.
- **Vendored `pi-extensions` skill floor refreshed** to pi-extensions `750b2a8`.
`check-skill-floor.sh` went red on the retirement commit and is green again.
The skill now says MCP servers are the built-in's, not an extension. Because
`rootfs/` is in the base hash, the next tag rebuilds the base.
- DOCKER_HUB.md's pi-extensions list was three releases stale (`mcp-loader`
listed; `task`, `fork-gate`, `secret-guard`, `aws-sso` missing). It now lists
the 10 that ship and has an MCP line.
## v1.11.0 — 2026-10-12
Minor release. Headlines: **pi 1.1.0**, **secret env values are kept out of