SPDX-License-Identifier: MIT
Copyright (c) 2026 Pablo Cano
Decision: MCP protocol eras (2026-07-28 + legacy)
- Status: Accepted
- Date: 2026-09-04
- Release: 1.0.0-rc.6
- Spec consulted: https://modelcontextprotocol.io/specification/2026-07-28
Context
Certified Studio hosts (Cursor ACP, Codex app-server) currently speak MCP
2025-11-25 with a stateful initialize handshake and elicitation/create.
MCP revision 2026-07-28 is stateless: server/discover, per-request _meta
protocol version, deterministic tools/list ordering, list cache metadata,
and resultType envelopes. The official conformance runner talks HTTP
(--url), not stdio.
DynosAI remains a stdio MCP server. Remote Streamable HTTP, Tasks and Apps are out of scope for RC6.
Decision
Keep one MCPServer and split only protocol-era shaping:
mcp.py # tools, dispatch, elicitation, stdio serve
mcp_protocol.py # versions, `_meta` keys, errors
mcp_protocol_legacy.py # 2025-11-25 / 2025-06-18 initialize + list/call shape
mcp_protocol_2026.py # discover, stateless list/call envelopes
Supported versions, in advertisement order:
2026-07-28
2025-11-25
2025-06-18
Rules:
- Legacy clients keep
initialize/notifications/initialized, current Cursor/Codex tool-call and elicitation behaviour, and-32002when no protocol has been negotiated. 2026-07-28clients may omitinitialize.server/discoverandtools/list/tools/callwithparams._meta["io.modelcontextprotocol/protocolVersion"]are enough.- Unsupported versions return JSON-RPC
-32022withdata.supported. - Human gates for 2025 hosts stay
elicitation/create(form mode). RC7 adds 2026 Multi Round-Tripinput_requiredfor the same DynosAI DB authority. ClientinputResponses/requestStateare never the source of authority. - Exactly 31 frozen public MCP names. No Tasks, Apps, resources, sampling or remote HTTP transport.
- Supported protocol revisions are recorded separately from the protocol a provider actually negotiated on the wire (MATRIX observed protocols).
Official @modelcontextprotocol/conformance server --url is HTTP-oriented.
RC6/RC7 conformance evidence is the in-repo characterization suite plus an honest
record if the official HTTP runner is not applicable to stdio.
RC7 amendment (2026-09-04)
- Every 2026 request must carry
_metaprotocolVersion and clientCapabilities. A later request without those fields fails; session negotiation is not reused. clientCapabilities: {}replaces prior optional capabilities for that request.initialize/pingwith 2026-07-28 are rejected (-32601). 2025 handshake remains frozen.server/discoverinstructions are provider-neutral (cacheScope=public).