You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Provenance is now informational only: servers added from any registry —
official or custom — follow the global quarantine default. Drop the
custom-origin quarantine-forcing in add_from_registry and the config
validation that forbade skip_quarantine for custom-origin servers.
Simplify provenance to two plain values (official/custom) and normalize
legacy official/trusted | custom/unverified strings on read so existing
config.db / mcp_config.json keep working. Fix the REST list projection
that hard-coded the old 'official/trusted' literal for the trusted flag.
Add PUT /api/v1/registries/{id} (handleEditRegistrySource) + EditRegistrySourceRef
to update a custom registry (name/url/servers-url), mirroring the
add/remove-source cross-surface error pattern (registry_not_found,
registry_shadows_builtin, invalid_registry_url, registries_locked). Add
'mcpproxy registry edit <id>' CLI + cliclient.EditRegistrySource, regen
OpenAPI, and update docs.
Related MCP-1072
Copy file name to clipboardExpand all lines: docs/registries.md
+41-11Lines changed: 41 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ available via the `search_servers` / `list_registries` MCP tools, the
12
12
|`reference`| Reference Servers |`builtin/reference`| no | Curated `@modelcontextprotocol` servers, **shipped in-binary** so the basics work offline. |
13
13
|`docker-mcp-catalog`| Docker MCP Catalog |`custom/docker`| no | Signed-container MCP server inventory. |
14
14
15
-
The shipped default set is exactly these **three** official/trusted entries. Earlier
15
+
The shipped default set is exactly these **three** official, built-in entries. Earlier
16
16
versions also shipped `pulse`, `smithery`, `fleur`, `azure-mcp-demo`, and
17
17
`remote-mcp-servers` as defaults; these were removed. They are pruned from an
18
18
existing `mcp_config.json` on load (genuinely user-added custom registries are never
@@ -35,23 +35,28 @@ Every registry carries a **provenance** tag:
35
35
36
36
| Provenance | Meaning |
37
37
|---|---|
38
-
|`official/trusted`| A shipped, built-in default (the three above). |
39
-
|`custom/unverified`| Any registry the user added at runtime, or any non-default ID in `mcp_config.json`. |
38
+
|`official`| A shipped, built-in default (the three above). |
39
+
|`custom`| Any registry the user added at runtime, or any non-default ID in `mcp_config.json`. |
40
40
41
41
Trust is **derived, not asserted** — it comes solely from whether the registry ID
42
-
is one of the shipped defaults. Writing `"provenance": "official/trusted"` into a
42
+
is one of the shipped defaults. Writing `"provenance": "official"` into a
43
43
custom `mcp_config.json` entry has no effect; mcpproxy recomputes provenance on
44
44
every merge. **There is no allowlist a user can add themselves into.**
45
45
46
-
Consequences for `custom/unverified` registries:
46
+
Provenance is **informational only** (it no longer changes quarantine behavior):
47
47
48
-
- Servers discovered through them are **always quarantined** on add, regardless of
49
-
the global quarantine default — and they can **never** set `skip_quarantine`
50
-
(enforced in config validation *and* at server-add time). A server's origin is
48
+
- Servers discovered through **any** registry — official or custom — follow the
49
+
**global quarantine default** like everything else. With quarantine enabled (the
50
+
secure default) a newly added server lands quarantined for review; provenance no
51
+
longer force-quarantines or forbids `skip_quarantine`. A server's origin is still
51
52
recorded on its config as `source_registry_id` / `source_registry_provenance`
52
53
and surfaced in the approval/quarantine view.
53
54
- The `list_registries` output (MCP, REST, CLI) includes `provenance` and a
54
-
`trusted` boolean so a UI can show a one-time third-party-registry warning.
55
+
`trusted` boolean (derived `official == trusted`) so a UI can show a one-time
56
+
third-party-registry warning.
57
+
-**Migration:** earlier builds persisted the two-word tags `official/trusted` /
58
+
`custom/unverified`; these are normalized to `official` / `custom` on read, so
59
+
an existing `config.db` / `mcp_config.json` keeps working unchanged.
0 commit comments