feat(registries): adopt official MCP registry v0.1 protocol + standardize defaults (MCP-865)#572
Merged
Merged
Conversation
…dize defaults Implements the board-decided design for goal MCP-856: adopt the official Model Context Protocol registry protocol and standardize the shipped default registries. Resolves GH #566 (Pulse v0beta 410) and #567 (remotes-present misclassification) by design. - Official v0.1 parser (internal/registries/official.go): descend the wrapped { server, _meta } envelope; skip deleted/deprecated/non-latest by default; cursor pagination (bounded) with version=latest + search passthrough; versioned User-Agent (#566). Tolerates camelCase + snake_case wire fields. - Per-entry classification (the #567 root fix): packages[] => stdio (InstallCmd set, URL empty), remotes[] => remote (URL set), hybrid => prefer the package and keep the remote as ConnectURL. Never "remotes present => remote". - Curated built-in 'reference' source (reference.go): @modelcontextprotocol servers shipped in-binary so the basics stay discoverable offline (servers#3047). - Default-registry rewire (config.go): add Official (primary, no key) + Reference; keep Docker MCP catalog; demote Pulse + Smithery to opt-in RequiresKey; drop Azure-demo, mcp.run, mcpstore, Fleur, remote-mcp-servers. Remove their bespoke parsers and all constructServerURL URL synthesis. - Cross-surface consistency regression (server/consistency_official_test.go): packages-only => stdio, remotes-only => http identical across REST + CLI. TDD: golden fixture + parser/classification/pagination/reference unit tests. Local: build, gofmt, golangci-lint (0 issues), go test ./internal/... -race, and test-api-e2e.sh (65/65, validated against the live official registry) green. Related #566 Related #567 Co-Authored-By: Paperclip <noreply@paperclip.ing>
…ult set - New docs/registries.md: default registry table, official v0.1 protocol, per-entry transport classification, opt-in API keys, offline reference set. - registry-add.md: switch examples from the now-opt-in pulse to the zero-config official registry. - specs/071-official-registry-protocol: spec / plan / tasks (speckit format). Related #566 Related #567 Co-Authored-By: Paperclip <noreply@paperclip.ing>
Deploying mcpproxy-docs with
|
| Latest commit: |
b7a2747
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://37dc657b.mcpproxy-docs.pages.dev |
| Branch Preview URL: | https://feat-official-registry-proto.mcpproxy-docs.pages.dev |
|
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
📦 Build ArtifactsWorkflow Run: View Run Available Artifacts
How to DownloadOption 1: GitHub Web UI (easiest)
Option 2: GitHub CLI gh run download 26800669281 --repo smart-mcp-proxy/mcpproxy-go
|
…e opt-in registry API key - FindServerByID now matches against the FULL registry listing instead of the 50-entry SearchServers UI cap, so a server beyond the first page is addable, not merely searchable (Codex RV #1). Forwards the ID as a server-side search hint with a full-fetch fallback; drops the dead findServerByIDLimit const. - Send the configured MCPPROXY_REGISTRY_<ID>_API_KEY as an "Authorization: Bearer" header in both request builders (generic + official protocol) so the opt-in Pulse/Smithery registries authenticate as documented instead of reading the key but querying unauthenticated (Codex RV #2). - docs/registries.md: document the Bearer scheme. - Tests: beyond-limit add lookup, key-on-wire (generic + official), no-key-no-header. Co-Authored-By: Paperclip <noreply@paperclip.ing>
This was referenced Jun 2, 2026
Dumbris
added a commit
that referenced
this pull request
Jul 2, 2026
…iorities, audit fixes (#797) A multi-agent consistency audit (2026-07-02) found roadmap.yaml stale versus merged PRs and carrying several false progress badges from wrong spec links. Corrected CI-filtered telemetry also re-prioritized the personal-edition work. Statuses corrected per merged PRs: - scanner-simplification children: US1 #786 / US2 #792 / US4 #794 marked done; US3 #793 in_review. Epic stays in_progress. Added deep-scan trust-fix task and flagged docs T037-T039 as merge-blocking for #793. - registries-official-protocol marked done (spec 071 shipped 12/12, #572). False badges / wrong provenance fixed (per the file's own convention — link dropped, provenance moved into the note): - sandbox-isolation no longer links spec 054 (unrelated security-gateway spec). - ux-audit no longer links spec 064 (unrelated agent-fleet cockpit spec). - marketplace no longer links spec 070 (that is the registries-search-add spec). - action-log-transparency no longer links spec 024 (shipped backend, not the progress driver for the at-a-glance UX epic). New epics (telemetry- and audit-driven replan): - upgrade-nudge (P0, spec 079): ~60% of active installs run pre-v0.40. - connect-trust (P0, spec 078): 72.4% skip the connect step. - telemetry-identity (P1, in_progress): hashed machine_id + CI-filter hardening. - planning-hygiene (P2): automate the checks this audit did by hand. Windows QA gate: new first child windows-tray-funnel-qa (downloads→actives 12:1 vs macOS 4:1); windows-tray-window now depends on it. ROADMAP.md regenerated; gen-roadmap.py --check passes. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Keystone backend for goal MCP-856 — adopt the official Model Context Protocol registry protocol and standardize the shipped default registries. Implements the board-decided design (MCP-856 plan, BOARD-DECIDED section, 2026-06-02). Resolves GH #566 and #567 by design.
Spec:
specs/071-official-registry-protocol/.What changed
internal/registries/official.go): descends the wrapped{ server, _meta }envelope; skipsdeleted/deprecated/non-latest by default; cursor pagination (bounded) withversion=latest+searchpassthrough; versioned User-Agent (registry: Pulse search fails with 410 Gone — fetchServers sends no User-Agent #566). Tolerates camelCase and snake_case wire fields.packages[]→ stdio (InstallCmdset, URL empty),remotes[]→ remote (URL set), hybrid → prefer the package and keep the remote asConnectURL. Never "remotes present ⇒ remote".referencesource (reference.go):@modelcontextprotocolservers (filesystem, fetch, memory, time, git, sequentialthinking, everything) shipped in-binary so the basics stay discoverable offline (servers#3047).config.go): add Official (primary, no key) + Reference; keep Docker MCP catalog; demote Pulse + Smithery to opt-in (RequiresKey); drop Azure-demo, mcp.run, mcpstore, Fleur, remote-mcp-servers. Removed the dropped bespoke parsers and allconstructServerURLURL synthesis.docs/registries.md;registry-add.mdexamples switched to the zero-configofficialregistry.How classification stays consistent
Every add surface (MCP / REST / CLI) funnels through
AddServerFromRegistryRef→buildToServerConfig, which derives transport from the entry (InstallCmd⇒ stdio, else URL ⇒ http). The fix lives entirely in the parser choosing which field to set, so all surfaces inherit it.Testing (TDD, ENG-7/8)
testdata/official_v0.1_servers.json+ unit tests: envelope parse, status/isLatest filter, classification matrix, cursor pagination (httptest two-page), offline reference.internal/server/consistency_official_test.go: cross-surface registry: Fleur servers wrongly shown as Remote (URL synthesized for local stdio apps) — same class as #483 #567 regression (packages→stdio, remotes→http identical across REST + CLI).go build ./...,gofmt,./scripts/run-linter.sh(0 issues),go test ./internal/... -race,./scripts/test-api-e2e.sh(65/65, validated against the live official registry).Scope / follow-ups
registry add-sourceCLI → MCP-866 (blocked by this).RequiresKey, skipped without a key).Related #566
Related #567