@fitchmultz/pi-mcp-adapter 7.1.0 → 7.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/OAUTH.md +2 -2
- package/README.md +16 -5
- package/dist/app-bridge.bundle.js +13 -13
- package/dist/index.js +6 -12
- package/dist/server-manager.js +2 -1
- package/dist/tool-loader.d.ts +6 -21
- package/dist/tool-loader.js +43 -57
- package/package.json +12 -12
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [7.1.1] - 2026-10-01
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Update MCP Apps to 2.0.3 in the adapter and interactive visualizer, keeping their dependency graphs aligned.
|
|
15
|
+
- Qualify development against official Pi 0.99.2 and the current maintained fork, keeping host peers wildcard and the declared Pi/Node floors unchanged.
|
|
16
|
+
- Update development validation to Vitest 5.0.3 and npm 12.2.0.
|
|
17
|
+
- Use current public Pi tool activation and request-boundary scheduling APIs, preserving authentication, approval, and checkpoint barriers.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- Keep development TypeBox aligned with the official Pi baseline and block standalone updates that load a second version during source startup.
|
|
22
|
+
- Upgrade the split MCP client, core, and server SDKs together to 2.2.0 in the adapter and interactive visualizer. Native discovery now retains changing catalog pages that reuse an opaque cursor instead of silently dropping later tools.
|
|
23
|
+
- Bound native catalog walks, including automatic refreshes, to 1,024 pages and reject oversized or nonterminating catalogs without publishing partial results.
|
|
24
|
+
|
|
10
25
|
## [7.1.0] - 2026-09-27
|
|
11
26
|
|
|
12
27
|
### Changed
|
package/OAUTH.md
CHANGED
|
@@ -413,7 +413,7 @@ The OAuth implementation uses the following modules:
|
|
|
413
413
|
|
|
414
414
|
## Issuer compatibility
|
|
415
415
|
|
|
416
|
-
SDK
|
|
416
|
+
SDK v2 checks that authorization-server metadata returns the issuer advertised by discovery. Some providers advertise a path-scoped issuer but return the origin instead. If the provider cannot be corrected, explicitly opt out for that server only:
|
|
417
417
|
|
|
418
418
|
```json
|
|
419
419
|
{
|
|
@@ -431,7 +431,7 @@ The default remains strict, including when `protocolVersion` is `"legacy"`. The
|
|
|
431
431
|
|
|
432
432
|
## SDK Integration
|
|
433
433
|
|
|
434
|
-
The implementation uses the official split MCP SDK v2 client and OAuth APIs.
|
|
434
|
+
The implementation uses the official split MCP SDK v2 client and OAuth APIs. MCP Apps also uses this split SDK graph; SDK v1 is not a runtime dependency:
|
|
435
435
|
|
|
436
436
|
```typescript
|
|
437
437
|
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/client"
|
package/README.md
CHANGED
|
@@ -20,10 +20,12 @@ The MCP ecosystem has useful databases, browsers, and APIs. This adapter keeps t
|
|
|
20
20
|
|
|
21
21
|
## Pi release qualification
|
|
22
22
|
|
|
23
|
-
The development baseline is official Pi **0.
|
|
23
|
+
The development baseline is official Pi **0.99.2**; host peers remain wildcard and the declared Pi/Node floors are unchanged. Current-host checks do not requalify older Pi versions. `npm run check:compat` verifies the installed SDK and CLI identity, builds and typechecks, runs Vitest and memory-only OAuth tests, then loads a packed consumer through the native SDK and CLI.
|
|
24
24
|
|
|
25
25
|
GitHub CI runs that contract on Node 24 against both official Pi and the maintained fork through the shared Pi compatibility automation, including fresh Git and npm installations loaded by the real Pi CLI. A second job checks lockfile registry hosts, published type declarations, the built interactive visualizer, and MCP protocol conformance. These checks use local MCP fixtures and disposable agent directories, never live credentials or paid providers.
|
|
26
26
|
|
|
27
|
+
Keep the development TypeBox pin aligned with the official Pi baseline's dependency, updating it only with that cohort. Standalone TypeBox updates are disabled: a second version in source installs adds measurable startup cost. Published peers remain optional wildcard dependencies, and qualification selects each host's actual TypeBox version.
|
|
28
|
+
|
|
27
29
|
## Install
|
|
28
30
|
|
|
29
31
|
Requires Pi 0.87.1 or later and Node.js 24 or later.
|
|
@@ -34,6 +36,13 @@ pi install npm:@fitchmultz/pi-mcp-adapter
|
|
|
34
36
|
|
|
35
37
|
Or install from Git: `pi install git:github.com/fitchmultz/pi-mcp-adapter`.
|
|
36
38
|
|
|
39
|
+
On **Android/Termux**, Git/source installs and type checks require an Android-native
|
|
40
|
+
TypeScript 7 compiler as `tsgo` on `PATH`. The [Fold development environment](https://github.com/fitchmultz/fold-dev-environment)
|
|
41
|
+
provides a pinned native build (validated with `7.1.0-dev.20260904.1`). npm's TypeScript
|
|
42
|
+
package has no Android binary, and its Linux binary probes a syscall Android blocks.
|
|
43
|
+
macOS/Linux use the package-local pinned compiler. Published precompiled packages
|
|
44
|
+
do not need a compiler at runtime.
|
|
45
|
+
|
|
37
46
|
Restart Pi after installation. Existing v4 users should migrate first.
|
|
38
47
|
|
|
39
48
|
### Upgrading from v5
|
|
@@ -258,7 +267,9 @@ In the configuration examples below, `30000` is illustrative only. If `requestTi
|
|
|
258
267
|
|
|
259
268
|
### Transport compatibility
|
|
260
269
|
|
|
261
|
-
The adapter uses official split MCP SDK 2.
|
|
270
|
+
The adapter uses official split MCP SDK 2.2.0. HTTP connections automatically negotiate protocol `2026-07-28` and fall back to older revisions using the SDK's native rules. The SDK generates protocol metadata, method/name headers, and schema-driven `Mcp-Param-*` headers. Modern HTTP supports streamed POST responses without opening a legacy standalone GET stream. Deprecated SSE is tried only when the Streamable HTTP handshake rejects the endpoint with HTTP 404, 405, 406, or 415—not after a timeout, network failure, or authentication failure.
|
|
271
|
+
|
|
272
|
+
Native catalog discovery follows changing pages even when their opaque cursor repeats. Catalogs exceeding 1,024 pages fail explicitly instead of publishing a partial list or walking indefinitely; this also bounds automatic catalog refreshes.
|
|
262
273
|
|
|
263
274
|
For known legacy servers, set `protocolVersion: "legacy"`. This is also the workaround for servers that answer `server/discover` with an HTTP 200 JSON-RPC error whose `id` is `null`: SDK 2.0.0 cannot negotiate that response. The adapter reports the native failure rather than inventing authentication guidance or overriding the SDK's fallback classifier. Stdio and Unix sockets remain legacy by default. Explicit `"auto"` on native stdio uses the SDK's disposable probe process before starting the session process.
|
|
264
275
|
|
|
@@ -643,9 +654,9 @@ URL mode is advertised only in TUI mode. The adapter displays the requesting ser
|
|
|
643
654
|
|
|
644
655
|
Cached eligible schemas and the full gateway/script definitions register inactive; only pins and tools selected for the current branch are active. Legacy resource pins keep the gateway eager. Allowed gateway/script tools also stay eager when the host excludes the loader, so restricted hosts remain usable. The adapter persists canonical `{ server, tool }` selections and enabled gateway/script features in native Pi session entries and restores them across resume, reload, branch navigation, and working-directory changes. Host tool allowlists remain binding. Manual deselection survives reload. Loaded schemas remain available rather than unloading each turn; activation changes declarations and can invalidate the prompt-cache prefix.
|
|
645
656
|
|
|
646
|
-
|
|
657
|
+
Both official Pi and the maintained fork use public tool registration and active-tool APIs. Discovered tools retain their flat prefixed names, with `mcp_<server>` namespace metadata for grouping. Always use the exact name returned by discovery rather than constructing names. Inactive tools are not exposed through deferred/codemode execution; loading them still requires the same allowlist and selection checks.
|
|
647
658
|
|
|
648
|
-
|
|
659
|
+
Tool execution uses Pi's public request-boundary scheduling, not retired native async or pending-call APIs. Configured approval, MCP App UI consent, and the `beforeExecute` sequential checkpoint barrier remain binding. This is separate from local `mcp_script` orchestration.
|
|
649
660
|
|
|
650
661
|
Add `directTools` to pin frequently used tools into the initial active set:
|
|
651
662
|
|
|
@@ -741,7 +752,7 @@ Run `/mcp` to see known tools, pinned counts, resource counts, and connection st
|
|
|
741
752
|
|
|
742
753
|
### MCP UI Integration
|
|
743
754
|
|
|
744
|
-
MCP servers can ship interactive UIs via [MCP Apps](https://github.com/modelcontextprotocol/ext-apps). The adapter uses MCP Apps 2.0.
|
|
755
|
+
MCP servers can ship interactive UIs via [MCP Apps](https://github.com/modelcontextprotocol/ext-apps). The adapter uses MCP Apps 2.0.3. When you call a tool that has a UI resource, the adapter opens it in a native macOS window via [Glimpse](https://github.com/hazat/glimpse) if available, otherwise falls back to the browser.
|
|
745
756
|
|
|
746
757
|
**How it works:**
|
|
747
758
|
|