Skip to content

Fix discovery + OAuth recovery; add Claude Desktop (.mcpb) bundle#11

Merged
stel merged 1 commit into
mainfrom
mcpb-claude-desktop
Jun 29, 2026
Merged

Fix discovery + OAuth recovery; add Claude Desktop (.mcpb) bundle#11
stel merged 1 commit into
mainfrom
mcpb-claude-desktop

Conversation

@stel

@stel stel commented Jun 29, 2026

Copy link
Copy Markdown
Member

Two bridge bug fixes (benefit all clients) plus the Claude Desktop extension packaging.

Fixes

  • Discovery fallback (src/discover.ts) — when the mcpPort plist read fails, probe Paste's default port 39725. The App Store build stores the port in its sandbox container, which a host without Full Disk Access (Claude Desktop) can't read — discovery returned the "Paste isn't running" fallback even when Paste was up. Now works on Claude Desktop, Claude Code, Cursor, Codex, etc. Probing means a stale/dead port still degrades gracefully.
  • OAuth cancel → retry (src/oauth/client.ts) — clear stale client state before a fresh flow. A registration left by a cancelled attempt was bound to its old (random) callback port, so the retry sent a redirect_uri the server rejected with invalid_redirect_uri.

Both covered by unit tests (discover.test.ts reworked to mock the probe; new cancel → retry case in client.test.ts). 68 tests pass.

Packaging (Claude Desktop directory)

  • manifest.json (MCPB v0.3, mac-only, 11 tools, privacy_policies), scripts/build-mcpb.sh, and the Paste icon.
  • release.yml now syncs the manifest.json/server.json version and builds + attaches a .mcpb to each release.
  • README Privacy Policy section (directory requirement).
  • Version 0.1.2 → 0.1.3.

Release flow

Merge → cut v0.1.3 → npm @pasteapp/mcp@0.1.3 (fixes reach all clients) + MCP registry updated + .mcpb attached to the release. That .mcpb then goes to the Claude desktop-extension form.

🤖 Generated with Claude Code

Discovery: fall back to Paste's default port (39725) when the plist read
is blocked — the App Store build keeps its port in a sandbox container a
host without Full Disk Access (e.g. Claude Desktop) can't read. Probe
candidates so a stale/refused port degrades to the "not running"
fallback. Fixes the bridge for Claude Desktop and any non-FDA host.

OAuth: clear stale client state before a fresh interactive flow. A
registration left by an aborted/cancelled attempt is bound to its old
callback port, so reusing it failed the new redirect_uri with
invalid_redirect_uri.

Packaging: add the Claude Desktop extension bundle — manifest.json,
scripts/build-mcpb.sh, icon — and attach a fresh .mcpb on each release.
Bump 0.1.2 to 0.1.3; add a README Privacy Policy section.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@stel stel merged commit 0a23d4d into main Jun 29, 2026
1 check passed
@stel stel deleted the mcpb-claude-desktop branch June 29, 2026 19:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant