The Short Version

An MCP Registry solves a discovery problem. It does not automatically solve trust, authorization, package security, tenancy, billing, or operations.

The Official MCP Registry is still a preview service: breaking changes or data resets may occur, and it provides no uptime or data-durability guarantee. Its public read API currently exposes v0.1 endpoints such as GET /v0.1/servers. Treat those facts as a versioned integration surface, not a permanent promise.

text
registry entry
      |
      v
reviewed source + pinned artifact or endpoint
      |
      v
isolated installation + runtime policy
      |
      v
authenticated Tool call + object authorization

The word “official” is not a security property. Always record the registry implementation, schema revision, source URL, artifact digest or endpoint owner, review decision, and runtime policy that turned metadata into an installation.

Registry, Catalog, and Package Repository

These terms describe different layers:

Layer Responsibility What it does not prove
registry publish and query server metadata safe code or authorized Tool calls
catalog curate, filter, or allowlist entries complete security review
package repository distribute packages or images that an MCP server behaves safely
source repository maintain code and releases that a downloaded artifact matches source
remote endpoint execute server-side behavior that its owner, data, or egress is acceptable
runtime policy decide identity, tools, data, and network access that metadata is truthful

The Official MCP Registry is the public service at registry.modelcontextprotocol.io. The MCP Registry API is the OpenAPI contract that third-party registries or subregistries can implement. A marketplace or enterprise catalog may ingest the official feed, add ratings or policy metadata, and expose a compatible API, but it is still a separate trust domain. Do not call every GitHub list, marketplace, or package index “the GitHub MCP Registry.”

What a Manifest Should Describe

Use the exact schema required by the target registry. A current Official MCP Registry package record has this shape:

json
{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "name": "io.github.example/invoice-summary",
  "title": "Invoice Summary",
  "version": "1.4.0",
  "description": "Return an approved, read-only invoice summary.",
  "repository": {
    "url": "https://github.com/example/invoice-summary",
    "source": "github"
  },
  "packages": [
    {
      "registryType": "npm",
      "identifier": "@example/invoice-summary",
      "version": "1.4.0",
      "transport": {
        "type": "stdio"
      }
    }
  ]
}

This is a schema-oriented example, not an endorsement of the fictional package. The Official MCP Registry stores this metadata but not the npm artifact. A record may instead describe other supported package registries or a remote server. Validate against the referenced schema and keep local approval, data classification, and side-effect policy outside descriptive metadata.

Do not put secrets in a manifest. Environment variable names may be documented, but values, tokens, database URLs, and private keys belong in a secret manager.

Discovery Is Not Authorization

Search and semantic matching can help a Host propose a capability. The application still decides:

  • whether the publisher and artifact are approved;
  • which tenant and principal may use it;
  • which Tools and Resources are exposed;
  • which data may leave the boundary;
  • whether an external side effect needs confirmation;
  • how quotas, cost, and retention apply.

A model-selected registry result must be treated as untrusted input. It must not select an owner, role, price, credential, or destination.

Provenance Review

Before installation, collect evidence in a review record:

Evidence Review question
publisher identity who controls the namespace, repository, package, and endpoint?
source-to-artifact link can the released artifact be mapped to reviewed source?
version and digest what exact bytes will be installed?
dependencies are lockfiles, transitive packages, and base images reviewed?
release history are changes signed, reproducible, and reversible?
capabilities do declared Tools, Resources, and Prompts match observed behavior?
network which hosts, DNS names, and egress paths are needed?
data what is read, stored, exported, or retained?
support who handles incidents, revocation, and deletion?

Namespace or domain verification is useful evidence of control, not a clean bill of health.

Publishing Workflow

A defensible publishing workflow is explicit about implementation-specific steps. For the Official MCP Registry, publish the package or remote deployment first, create a versioned server.json, authenticate namespace control, and submit with a pinned mcp-publisher release. Then apply the broader review:

  1. generate metadata from the pinned release;
  2. validate against the target registry schema;
  3. verify source, artifact, endpoint, and namespace ownership;
  4. run dependency, secret, license, and malware checks;
  5. exercise Tool contracts with a sandbox and representative fixtures;
  6. record capabilities, side effects, data classes, and required scopes;
  7. publish through a short-lived CI identity;
  8. retain the review record and a rollback reference.

Official namespace verification can use supported GitHub, DNS, or HTTP mechanisms. It proves control of the relevant namespace; it does not prove the package is benign. Do not claim that the same mcp-publisher command or authentication flow works for every registry. Use the target registry’s current documentation and pin the CLI version.

Runtime Installation Boundary

Installing a Server can grant access to files, networks, credentials, or external APIs. Treat it like deploying code:

  • require an allowlist or approval policy;
  • pin package versions and digests;
  • run local processes with a dedicated OS identity;
  • isolate filesystem and network access;
  • inject only the minimum secrets;
  • deny ambient credentials and broad environment inheritance;
  • capture bounded audit events without raw secrets;
  • stage, canary, roll back, and revoke;
  • delete artifacts, caches, credentials, and derived records on removal.

An Agent may request installation, but a deployment controller or human approval must authorize it.

A deterministic admission gate should reject unknown evidence rather than asking the model to infer trust:

go
package main

import "fmt"

type candidate struct {
	PublisherVerified bool
	DigestPinned      bool
	ApprovedSource    bool
	EffectClass       string
}

func admit(item candidate) (bool, string) {
	if !item.PublisherVerified {
		return false, "publisher control is not verified"
	}
	if !item.DigestPinned {
		return false, "artifact digest is not pinned"
	}
	if !item.ApprovedSource {
		return false, "artifact source is not approved"
	}
	if item.EffectClass != "read_only" {
		return false, "effectful servers require separate approval"
	}
	return true, "admitted for isolated read-only canary"
}

func main() {
	allowed, reason := admit(candidate{
		PublisherVerified: true,
		DigestPinned:      true,
		ApprovedSource:    true,
		EffectClass:       "read_only",
	})
	fmt.Printf("allowed=%t reason=%q\n", allowed, reason)
}

The evidence fields must come from verified CI and review records, not registry descriptions or model output. A successful admission still needs runtime identity, tenant, object, and egress enforcement.

Security Model

Use defense in depth, but assign each control to the right layer:

Control Layer Limitation
namespace proof registry proves control of a name, not benign behavior
schema validation registry/CI checks shape, not intent or runtime
dependency scan CI/package tooling misses novel behavior and runtime abuse
signature/digest artifact supply chain proves bytes, not safety
sandbox and egress runtime limits blast radius, not business authorization
principal and object policy application server authoritative for data and side effects
review and incident response organization requires continued operation

Do not describe badges, trust scores, annotations, or automated scans as authorization.

Private Enterprise Catalogs

A private catalog can contain approved internal Servers, mirrored public entries, or both. The official OpenAPI contract can improve client interoperability, but cloning or running the public service does not create an enterprise approval model. Design the private layer as a policy service:

  • separate public discovery from internal approval;
  • require tenant and environment labels;
  • maintain an allowlist of artifact sources and domains;
  • store provenance, review owner, expiry, and exception reason;
  • support staged rollout and emergency revoke;
  • prevent a public entry from silently replacing an internal artifact;
  • keep secrets and runtime policy out of catalog metadata;
  • synchronize deletion and legal-hold decisions;
  • audit installation, upgrade, use, and removal.

An API-compatible index is not automatically compatible with every client. Test authentication, pagination, version selection, transport records, and error semantics with the exact client and SDK. The official aggregator guidance expects consumers to persist their own copy because the preview service offers no uptime or durability guarantee.

Safe Search and Ranking

Ranking should favor evidence, not only popularity:

  • verified publisher control;
  • recent reviewed release;
  • reproducible artifact or source link;
  • declared data and side effects;
  • test coverage and compatibility evidence;
  • vulnerability and incident status;
  • support and deprecation policy.

Do not rank a Server higher because a model guessed it is relevant, because it has more downloads, or because it exposes more Tools. More capability increases review and blast-radius cost.

Revocation, Upgrade, and Deletion

Plan lifecycle before publication:

Event Required action
vulnerable release stop new installs, notify users, publish fixed version
compromised publisher revoke credentials, quarantine entries, investigate artifacts
endpoint ownership change re-verify domain and principal before rollout
breaking protocol change publish a new compatibility record and migration path
uninstall revoke credentials and remove local/runtime data
deletion request propagate to catalog, cache, index, backups, and exports as applicable

For the Official MCP Registry, published version metadata is immutable: changing metadata requires a new unique version. Publishers currently cannot delete or unpublish a server themselves. Moderation may mark records with statuses such as deprecated or deleted, and downstream catalogs must ingest those status changes, but an enterprise still needs its own immediate denylist and credential revocation path. Immutability prevents silent mutation; it does not make a vulnerable version safe.

Tests Before Exposure

text
registry metadata
  -> schema and provenance tests
  -> artifact and dependency tests
  -> sandbox Tool contract tests
  -> identity, tenant, object, and egress tests
  -> canary and rollback

At minimum test:

  • malformed or unknown manifest fields;
  • package and digest mismatch;
  • namespace or source ownership mismatch;
  • expired credentials and wrong token resource;
  • cross-tenant object access;
  • malicious descriptions, prompts, Resources, and Tool Results;
  • oversized output and pagination;
  • cancellation, timeout, retry, and duplicate side effects;
  • package upgrade and rollback;
  • registry outage and stale metadata;
  • removal and deletion propagation.

Practical Checklist

  • [ ] Name the exact registry, implementation, schema revision, and client.
  • [ ] Separate registry, catalog, package, source, endpoint, and runtime responsibilities.
  • [ ] Record publisher, source, artifact digest, dependencies, capabilities, data, and egress.
  • [ ] Treat metadata, annotations, ratings, and scan results as evidence, not authorization.
  • [ ] Require approval before installation and keep Agent selection advisory.
  • [ ] Isolate processes, credentials, filesystems, and network access.
  • [ ] Enforce principal, tenant, object, purpose, quota, and side-effect policy at runtime.
  • [ ] Test upgrades, revocation, rollback, outage, duplicate delivery, and deletion.
  • [ ] Keep a review owner, expiry date, exception record, and incident contact.

Conclusion

An MCP Registry can make capabilities easier to find, but discovery is only the first step. The trustworthy path is: verify provenance, pin the artifact or endpoint, review the declared contract, install with least privilege, enforce authorization in the server, and keep rollback and deletion operational. This approach scales better than treating a directory entry or a popularity signal as a security decision.

Continue Reading

  • MCP Protocol Architecture and Security explains the Host, Client, Server, transport, and authorization boundaries that a registry entry eventually reaches.
  • The MCP glossary defines the protocol, while MCP Server focuses on the capability provider being published and governed.

Primary Sources