Skip to content

fix(registries): versioned User-Agent for Pulse (410) + Fleur stdio not remote#568

Merged
Dumbris merged 1 commit into
mainfrom
fix/registry-pulse-ua-fleur-remote
Jun 2, 2026
Merged

fix(registries): versioned User-Agent for Pulse (410) + Fleur stdio not remote#568
Dumbris merged 1 commit into
mainfrom
fix/registry-pulse-ua-fleur-remote

Conversation

@Dumbris
Copy link
Copy Markdown
Member

@Dumbris Dumbris commented Jun 1, 2026

Fixes two registry-parser bugs in internal/registries/search.go. Both edit the same file, so they ship on one branch + one PR (per MCP-855).

Bug A — Pulse 410 (#566)

fetchServers() sent no User-Agent. api.pulsemcp.com/v0beta/servers now 410s requests with an empty or bare UA and only 200s a versioned one (reproduced: empty→410, mcpproxy→410, mcpproxy/0.35.0→200).

Fix: set User-Agent: mcpproxy/<version> in fetchServers (mirrors internal/experiments/guesser.go:285). Version is wired via a new registries.SetVersion(version) call in main.go alongside the existing cliclient.SetClientVersion / server.SetMCPServerVersion; defaults to dev.

Bug B — Fleur all-remote (#567)

constructServerURL() synthesised https://api.fleurmcp.com/apps/<id>/mcp for every Fleur app. parseFleur populates InstallCmd (local stdio) and leaves URL empty, so the synthesised URL made the frontend register these stdio apps as Remote. Same class as the Docker #483 bug.

Fix: for protocolFleur, return "" when server.InstallCmd != "". Fleur apps without an install command (true remote endpoints) still get the synthesised URL.

Tests (test-first, both watched fail then pass)

  • TestFetchServers_SendsVersionedUserAgent — httptest server that 410s on empty/bare UA (mirrors Pulse); asserts fetchServers sends a versioned UA and succeeds.
  • TestConstructServerURL — new fleur protocol with InstallCmd returns empty (stdio not remote) case (mirrors the Error adding server from Docker repository #483 regression case).

Verification

  • go build ./cmd/mcpproxy — ok
  • go test ./internal/registries/... -race — ok
  • ./scripts/run-linter.sh — 0 issues

No CLI/REST/MCP/config surface changed (internal registry parsing only), so no docs update is required.

Related #566
Related #567

Two registry-parser bugs in internal/registries/search.go:

- Pulse (#566): fetchServers sent no User-Agent; api.pulsemcp.com now 410s
  empty/bare UAs and only 200s a versioned one. Set a "mcpproxy/<version>"
  User-Agent (wired SetVersion from main, mirroring guesser.go).
- Fleur (#567): constructServerURL synthesised an https endpoint for every
  Fleur app, making local stdio apps (InstallCmd set) show as "Remote" in the
  frontend — same class as Docker #483. Return "" when InstallCmd is set.

Test-first: httptest 410s on empty/bare UA and asserts fetchServers sends a
versioned UA; TestConstructServerURL gains a Fleur-with-InstallCmd case.

Related #566
Related #567
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying mcpproxy-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: 1a10eb6
Status: ✅  Deploy successful!
Preview URL: https://3cfffb1b.mcpproxy-docs.pages.dev
Branch Preview URL: https://fix-registry-pulse-ua-fleur.mcpproxy-docs.pages.dev

View logs

@codecov-commenter
Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

❌ Patch coverage is 55.55556% with 4 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
internal/registries/search.go 62.50% 3 Missing ⚠️
cmd/mcpproxy/main.go 0.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

📦 Build Artifacts

Workflow Run: View Run
Branch: fix/registry-pulse-ua-fleur-remote

Available Artifacts

  • archive-darwin-amd64 (28 MB)
  • archive-darwin-arm64 (25 MB)
  • archive-linux-amd64 (16 MB)
  • archive-linux-arm64 (14 MB)
  • archive-windows-amd64 (27 MB)
  • archive-windows-arm64 (24 MB)
  • frontend-dist-pr (0 MB)
  • installer-dmg-darwin-amd64 (21 MB)
  • installer-dmg-darwin-arm64 (19 MB)

How to Download

Option 1: GitHub Web UI (easiest)

  1. Go to the workflow run page linked above
  2. Scroll to the bottom "Artifacts" section
  3. Click on the artifact you want to download

Option 2: GitHub CLI

gh run download 26776712340 --repo smart-mcp-proxy/mcpproxy-go

Note: Artifacts expire in 14 days.

@Dumbris Dumbris merged commit cf12950 into main Jun 2, 2026
30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants