Register an MCP Server
Register an MCP Server
Section titled “Register an MCP Server”MCP server governance starts with a submitted manifest and ends only when an approved snapshot is projected to runtime. Pending and rejected submissions are review history. Approved snapshots are immutable runnable records. Discovery is still policy-filtered after approval.
Audience
Section titled “Audience”- MCP server owners submitting a private server for governance.
- Platform reviewers approving or rejecting submissions.
- Security reviewers checking hidden tools, self-approval denial, and metadata-only review state.
What is this?
Section titled “What is this?”This is the public workflow for the MCP server registry. V1 registers remote governed MCP servers. It does not host MCP servers, govern arbitrary local stdio endpoints, publish a public marketplace, or expose unauthorized tools by default.
The registry separates three objects:
- Submission: immutable owner-submitted manifest addressed by
submission_idandmanifest_hash. - Approved snapshot: immutable runnable manifest addressed by
snapshot_id. - Current registry row: mutable pointer with live snapshot, latest submission, pending submission, health, registration status, and catalog visibility.
When do I use it?
Section titled “When do I use it?”Use this when a team wants an existing MCP server to become an approved enterprise capability. The server owner submits the manifest. A platform or security reviewer validates owner, risk, transport, credential mode, policy refs, tools, health, and audit posture before approving.
Choose No credential only for a public MCP endpoint that accepts anonymous requests. The gateway still requires source approval and an explicit allow policy, but it skips credential binding and sends no credential upstream.
What happens?
Section titled “What happens?”- Initial
POST /v1/mcp-serverscreates the first immutable submission and pending review state. - Later revisions use
POST /v1/mcp-servers/{server_id}/submissions. - A reviewer approves or rejects the exact
submission_idplusmanifest_hash. - Approval creates a new approved snapshot and may update the live pointer.
- Rejection preserves the live snapshot when one exists. Initial rejection leaves no callable live snapshot.
- Versions list approved snapshots only.
- Compare endpoints compare backend-owned snapshots or pending submission against the live snapshot. UI clients do not diff manifests locally.
- Catalog-lite discovery returns only approved, healthy enough, policy-authorized capabilities.
Review permissions are explicit. platform_admin, security_admin, break_glass_admin, or scoped registry_reviewer can review. Owners cannot approve or reject their own submissions. Batch approval is approve-only and skips ineligible records.
What can go wrong?
Section titled “What can go wrong?”- A newer pending submission makes an older review request stale with
409 stale_submission. - Changed review content returns
409 manifest_hash_mismatch. - Self-approval returns a denied result.
- Disabled, archived, rejected, unhealthy route-blocked, unapproved, or policy-denied servers do not become discoverable tools.
- Denied mutations return
403 permission_deniedwith a sanitized message and metadata-only admin audit. - Manifest bodies, validation errors, change pointers, and UI logs must not carry tokens, headers, credentials, or secret material.
Source truth
Section titled “Source truth”- contracts/jsonschema/mcp-server.schema.json
- contracts/jsonschema/catalog-lite.schema.json
- contracts/openapi/admin-api.yaml
- Read Admin Console Tour for the current browser routes.
- Read Identity, Policy, Credentials for reviewer permissions and policy filtering.
- Read Audit And Deny Diagnostics when approval or discovery fails.
Type set in Geist, Source Serif 4, and Departure Mono.