MCP server entry (v1)
mcp-server-entry.v1.schema.json
Overview
The common entry core plus an embedded, verbatim, valid server.json document, validated against schemas/vendor/server.schema.json (internal project documentation Section 3.5.4). All GA4GH additions live inside server._meta['org.ga4gh/ai-registry'], the upstream schema's own sanctioned extension point, so the embedded server document remains lift-out-able: stripping that one key MUST leave a valid, unmodified server.json publishable to registry.modelcontextprotocol.io. server.packages[] and server.remotes[] already cover any externally hosted distribution mechanism (an npm/PyPI/OCI/NuGet registry package, a direct-download URL, or a remote streamable-http/SSE endpoint), so this schema adds no separate hosting field.
Full specification: spec/mcp-server-card.md
This schema extends entry-core.v1.schema.json via allOf: every entry-core field is also required or available on this entry type, in addition to the fields below. This entry type additionally requires: server, ga4gh_standards. Of those, ga4gh_standards is an entry-core field promoted from optional to required for this entry type, without redeclaring its shape. No properties beyond entry-core's and those listed below are permitted on this entry type.
Properties
typestringoptionalAlways "mcp-server" for entries of this type.
- Fixed value: "mcp-server"
serverobject (embedded external schema + extension)requiredThe official MCP Registry server.json schema, vendored verbatim (not rendered here). This entry embeds a full, valid server.json document; GA4GH's own additions live only inside its _meta['org.ga4gh/ai-registry'] extension point, shown below. View server.schema.json on the repository ↗
Additional fields beyond those listed here are permitted.
_metaobjectrequiredAdditional fields beyond those listed here are permitted.
org.ga4gh/ai-registryobjectrequiredThe sole GA4GH extension point inside the embedded server.json document (internal project documentation Section 3.5.4). Every GA4GH addition lives here, never as a sibling key on the server document itself.
Additional fields beyond those listed here are permitted.
ga4gh_standardsarray of stringrequiredWhich GA4GH API specification(s) this server implements, and at what version, e.g. "trs@2.0.1". A bare kebab-case identifier with an optional @version suffix whose version part starts with a digit, so "trs@v2.0.1" is not a second spelling of "trs@2.0.1". This is the precise implementation claim; the common core's ga4gh_standards[] is the coarse, version-free browse facet. scripts/validate.ts enforces that stripping the @version suffix from every item here yields a subset of the common core array.
- Minimum items: 1
- Items must be unique
safety_classificationarray of objectoptionalSame shape as the common core's safety_classification[] (internal project documentation Section 3.3).
Same shape as entry-core's SafetyClassification definition, shown inline below.
schemestringrequiredThe issuing scheme. Closed enumeration, backed by schemas/vocab/safety-schemes.json; extensible by adding a value, never by editing an existing one's meaning.
- Allowed values: "ga4gh-gase", "ga4gh-agent-runtime-risk"
levelstringrequiredThe level, in the issuing scheme's own notation: e.g. "GASL-2" or "GASL-3E" for ga4gh-gase; "0" through "4" for ga4gh-agent-runtime-risk. Never normalised or cross-mapped to the other scheme.
- Length: 1–unbounded characters
certifying_bodystringoptionalWho issued or performed the certification, if known.
evaluation_datestringoptionalWhen the classification was evaluated.
- Format: date
valid_untilstringoptionalWhen the classification expires, if it does.
- Format: date
evidence_uristringoptionalLink to the certification record or evaluation report.
- Format: uri
sourcestringrequiredHow this classification entered the registry.
- Allowed values: "submitter-attested", "maintainer-verified", "synced-from-endpoint"
duoarray of stringoptionalOptional Data Use Ontology / consent metadata associated with data this server exposes.
protocol_erastringoptionalOptional, submitter-asserted: which MCP protocol era (2026-07-28 revision) this server supports -- "legacy" (pre-2026-07-28 stateful sessions only), "modern" (the stateless, per-request-versioned era only), or "dual" (both). A GA4GH addition, not an upstream field: confirmed by direct comparison against the live registry.modelcontextprotocol.io server.schema.json (2025-09-16, the same version vendored at schemas/vendor/server.schema.json) that the official MCP Registry spec carries no equivalent field as of this property's addition, so this does not duplicate or diverge from an upstream mechanism.
- Allowed values: "legacy", "modern", "dual"
Raw schema
View raw schema JSON
View this file on the repository ↗
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://registry.biocommons.ai/schemas/mcp-server-entry.v1.schema.json",
"x-ga4gh-schema-revision": "1.1.1",
"title": "GA4GH AI Registry: MCP server entry (v1)",
"description": "The common entry core plus an embedded, verbatim, valid server.json document, validated against schemas/vendor/server.schema.json (internal project documentation Section 3.5.4). All GA4GH additions live inside server._meta['org.ga4gh/ai-registry'], the upstream schema's own sanctioned extension point, so the embedded server document remains lift-out-able: stripping that one key MUST leave a valid, unmodified server.json publishable to registry.modelcontextprotocol.io. server.packages[] and server.remotes[] already cover any externally hosted distribution mechanism (an npm/PyPI/OCI/NuGet registry package, a direct-download URL, or a remote streamable-http/SSE endpoint), so this schema adds no separate hosting field.",
"allOf": [
{
"$ref": "entry-core.v1.schema.json"
},
{
"type": "object",
"properties": {
"type": {
"const": "mcp-server"
},
"server": {
"allOf": [
{
"$ref": "vendor/server.schema.json#/definitions/ServerDetail"
},
{
"type": "object",
"required": [
"_meta"
],
"properties": {
"_meta": {
"type": "object",
"required": [
"org.ga4gh/ai-registry"
],
"properties": {
"org.ga4gh/ai-registry": {
"type": "object",
"description": "The sole GA4GH extension point inside the embedded server.json document (internal project documentation Section 3.5.4). Every GA4GH addition lives here, never as a sibling key on the server document itself.",
"required": [
"ga4gh_standards"
],
"properties": {
"ga4gh_standards": {
"type": "array",
"description": "Which GA4GH API specification(s) this server implements, and at what version, e.g. \"trs@2.0.1\". A bare kebab-case identifier with an optional @version suffix whose version part starts with a digit, so \"trs@v2.0.1\" is not a second spelling of \"trs@2.0.1\". This is the precise implementation claim; the common core's ga4gh_standards[] is the coarse, version-free browse facet. scripts/validate.ts enforces that stripping the @version suffix from every item here yields a subset of the common core array.",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9-]*(@[0-9][0-9A-Za-z.-]*)?$"
},
"minItems": 1,
"uniqueItems": true
},
"safety_classification": {
"type": "array",
"description": "Same shape as the common core's safety_classification[] (internal project documentation Section 3.3).",
"items": {
"$ref": "entry-core.v1.schema.json#/$defs/SafetyClassification"
}
},
"duo": {
"type": "array",
"description": "Optional Data Use Ontology / consent metadata associated with data this server exposes.",
"items": {
"type": "string"
}
},
"protocol_era": {
"type": "string",
"enum": [
"legacy",
"modern",
"dual"
],
"description": "Optional, submitter-asserted: which MCP protocol era (2026-07-28 revision) this server supports -- \"legacy\" (pre-2026-07-28 stateful sessions only), \"modern\" (the stateless, per-request-versioned era only), or \"dual\" (both). A GA4GH addition, not an upstream field: confirmed by direct comparison against the live registry.modelcontextprotocol.io server.schema.json (2025-09-16, the same version vendored at schemas/vendor/server.schema.json) that the official MCP Registry spec carries no equivalent field as of this property's addition, so this does not duplicate or diverge from an upstream mechanism."
}
}
}
}
}
}
}
]
}
},
"required": [
"server",
"ga4gh_standards"
]
}
],
"unevaluatedProperties": false
}