Skip to content
{mcpdesc}

Declare transports with their type-specific fields

A transport is Streamable HTTP, stdio, or legacy SSE, selected by type. Each type requires its own fields, such as url or command, and accepts only the properties in its Section 6.2 table.

A Transport Object matches exactly one transport type and contains its required fields and only its defined properties.

Rule ID: mcpdesc.transport.members
Owner: mcpdesc
Surface: Transport
Kind: structural
Requirement level: must
Protocol versions: independent of the MCP protocol version
Document schema locations: #/$defs/transport
Status: internal · Enforcement: internal

Source: expected-valid/discriminated-unions.json · Selected: /transports

[
{
"type": "stdio",
"command": "chess-rating",
"args": [
"serve"
],
"env": {
"MODE": "test"
},
"x-vendor": {
"nested": [
1,
null
]
}
},
{
"type": "streamable-http",
"url": "https://example.test/mcp"
}
]

Source: expected-invalid/malformed-info-transport-tag-resource.json · Selected: /transports/0

{
"type": "stdio",
"args": [
"--verbose"
]
}

Source: expected-invalid/transport-arg-typo.json · Selected: /transports/0

{
"type": "stdio",
"command": "chess-rating",
"arg": [
"serve"
]
}

Source: expected-invalid/transport-independent-defects.json · Selected: /transports

[
{
"type": "stdio",
"command": 5,
"arg": [
"serve"
]
},
{
"type": "stdio",
"command": "chess-rating",
"env": {
"MODE": 1
}
}
]

Source: expected-invalid/transport-discriminator-errors.json · Selected: /transports

[
{
"command": "run"
},
{
"type": "unknown"
},
{
"type": null
},
{
"type": 5
},
null,
"stdio",
5,
[],
true,
{
"type": "stdio"
},
{
"type": "stdio",
"command": "run",
"url": "https://example.test/mcp"
},
{
"type": "stdio",
"command": "run",
"X-vendor": true
}
]

transport.yaml at immutable tag v0.9.0-rc.3.