[Enh]: Support MCP protocol revision 2026-07-28 (stateless transport, server/discover, cacheable lists)
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
从 MCP 2026-07-28 规范和 #3429 中的差距分析开始;同时审查相关的 #3658 packaging issue。此 issue 请求的是路线图或明确的决策,而不是实现,因此当 DAB 的支持立场与任何适用的 milestone 或 label 一并记录后,即可视为完成。
由索引模型根据 Issue 内容生成。
描述
Summary
DAB's MCP server advertises and implements 2025-06-18 as a fixed default
(McpProtocolDefaults.DEFAULT_PROTOCOL_VERSION). Two spec revisions have shipped since:
2025-11-25 and 2026-07-28. #3429 analysed the gap to 2025-11-25 and was closed without
a follow-up item, and there is currently no issue tracking 2026-07-28 at all.
This issue asks for a decision and, if applicable, a roadmap entry — not necessarily an
immediate implementation.
Why this revision is different
2026-07-28 is not additive; it restructures the transport and lifecycle:
- Protocol-level sessions and the
Mcp-Session-Idheader are removed. - The
initialize/notifications/initializedhandshake is removed. Every request
carries its protocol version and client capabilities in_meta. - A new
server/discoverRPC is mandatory for advertising versions, capabilities and identity. - The GET stream endpoint and
resources/subscribeare replaced bysubscriptions/listen. - SSE resumability (
Last-Event-ID) is removed. MCP-Protocol-Version,Mcp-MethodandMcp-Nameheaders become required, with
server-side header/body validation (-32020 HeaderMismatch).- All results carry a
resultType; server-initiated requests are replaced by the
Multi Round-Trip Requests (MRTR) pattern. ping,logging/setLevelare removed; Roots, Sampling and Logging are deprecated.
Because the handshake itself is gone, the compatibility burden shifts entirely to clients.
The spec defines a probe-and-fall-back path, but a server that only speaks 2025-06-18
depends on every client retaining that path indefinitely. #3429 documented this failure mode
in practice (a client disconnecting on version downgrade over stdio).
What DAB would gain beyond conformance
Several of the changes map onto capabilities DAB users already ask for:
- Statelessness. With no protocol session, DAB instances become trivially scalable behind
a load balancer, and a restart no longer invalidates in-flight clients. It also removes the
Mcp-Session-Idfriction that the MCP Inspector guidance currently works around. ttlMs/cacheScopeontools/list,resources/list,resources/read. DAB already
has an entity cache with TTL; surfacing it at the protocol level would let clients stop
re-fetching. This matters at scale: our production configuration has 315 entities and
describe_entitiesresponses are substantial.- Deterministic tool ordering (a SHOULD in this revision) improves client-side caching and
LLM prompt-cache hit rates. Should be trivial, since DAB generates the tool surface. Mcp-Nameheader. Lets reverse proxies route, rate-limit and audit per tool without
parsing the request body. Today an operator behind nginx sees onlyPOST /mcpand cannot
tell which entity was read — a real gap for auditing.- Tasks extension (
io.modelcontextprotocol/tasks) is a natural fit for
aggregate_recordsover large tables.
Deployment context
Read-only ERP database exposed through DAB 2.0.9, HTTP transport behind an nginx reverse
proxy, 315 entities, consumed by MCP clients. Nothing is broken today — clients still
negotiate 2025-06-18 successfully over HTTP. The concern is that continued operation
depends on client-side backwards compatibility that operators do not control, while DAB has
no stated position.
Ask
- Is support for
2026-07-28on the roadmap? - If yes, could it be tracked with a milestone/label the way other MCP work is (
2.x,2.3)? - If no — please say so explicitly. A clear "DAB stays on
2025-06-18for now" is genuinely
actionable for operators, who can then plan a translating layer instead of waiting.
(Related: #3658, packagingMicrosoft.DataApiBuilder.Mcpas a NuGet SDK, would make such
a layer considerably cheaper to build.)
References
- Changelog for the revision: https://modelcontextprotocol.io/specification/2026-07-28/changelog
- Streamable HTTP transport: https://modelcontextprotocol.io/specification/2026-07-28/basic/transports/streamable-http
- #3429 — gap analysis for
2025-11-25(closed) - #3658 —
Microsoft.DataApiBuilder.McpNuGet package
- 主要语言
- C#
- 星标
- 1.5k
- 派生
- 372
- 平均合并
- 9 天 2 小时
- 30 天内合并 PR
- 10
环境准备
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Azure/data-api-builder 的其他 Issue
-
pgsql
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3598 ·
维护者通常 1 天内回复
-
2.x cli mcp-server
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3576 ·
维护者通常 1 天内回复
-
2.x health-endpoint
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3570 ·
维护者通常 1 天内回复
-
2.x telemetry
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3564 ·
维护者通常 1 天内回复
-
2.x telemetry
难度 2/5 1-3 小时 新手友好度 70/100
Azure/data-api-builder#3562 ·
维护者通常 1 天内回复
查看 Azure/data-api-builder 的全部 Issue
相似的 Issue
-
area-System.Numerics.Tensors untriaged
难度 2/5 1-3 小时 新手友好度 78/100
dotnet/runtime#134691 · 2 条评论 ·
维护者通常 1 天内回复
-
ci-failure-cause test-failure
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
-
难度 2/5 1-3 小时 新手友好度 78/100
AvaloniaUI/Avalonia#22312 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 68/100