XBSTACK
MCP Compatibility / Protocol Radar

MCP Protocol Radar

A maintainable engineering record that combines read-only public MCP Server observations with real compatibility issues across MCP, Vercel AI SDK, LangGraph, and OpenAI Agents SDK, while explicitly separating XBSTACK local reproductions from upstream-only reports.

Baseline 2026-07-2815 Servers7 Tracked Issues4 Projects2 Locally Verified

Server data generated Aug 31, 2026, 4:04 AM; issue status checked Sep 1, 2026, 6:59 AM. Remote behavior and upstream issue state can change, so this is a point-in-time observation.

Live observations

Public MCP server compatibility matrix

ServerStatusProtocolEraToolsResourcesPromptsAuthLast verified
Context7
https://mcp.context7.com/mcp
Public documentation ↗
Verified 2026-07-28Modern 200 No public auth challenge observedAug 31, 2026, 4:04 AM
Microsoft Learn
https://learn.microsoft.com/api/mcp
Public documentation ↗
Verified 2025-06-18Legacy 300 No public auth challenge observedAug 31, 2026, 4:04 AM
DeepWiki
https://mcp.deepwiki.com/mcp
Public documentation ↗
Verified 2025-11-25Legacy 300 No public auth challenge observedAug 31, 2026, 4:04 AM
GitHub
https://api.githubcopilot.com/mcp/
Public documentation ↗
Verified Unknown Required / observedAug 31, 2026, 4:04 AM
Vercel
https://mcp.vercel.com
Public documentation ↗
Verified Unknown Required / observedAug 31, 2026, 4:04 AM
Atlassian Rovo
https://mcp.atlassian.com/v1/mcp/authv2
Public documentation ↗
Verified Unknown Required / observedAug 31, 2026, 4:04 AM
Cloudflare API
https://mcp.cloudflare.com/mcp
Public documentation ↗
Verified Unknown Required / observedAug 31, 2026, 4:04 AM
Cloudflare Documentation
https://docs.mcp.cloudflare.com/mcp
Public documentation ↗
Verified 2026-07-28Modern 201 No public auth challenge observedAug 31, 2026, 4:04 AM
Cloudflare Workers Bindings
https://bindings.mcp.cloudflare.com/mcp
Public documentation ↗
Verified Unknown Required / observedAug 31, 2026, 4:04 AM
Cloudflare Workers Builds
https://builds.mcp.cloudflare.com/mcp
Public documentation ↗
Verified Unknown Required / observedAug 31, 2026, 4:04 AM
Cloudflare Observability
https://observability.mcp.cloudflare.com/mcp
Public documentation ↗
Verified Unknown Required / observedAug 31, 2026, 4:04 AM
Cloudflare Radar
https://radar.mcp.cloudflare.com/mcp
Public documentation ↗
Verified Unknown Required / observedAug 31, 2026, 4:04 AM
Cloudflare Digital Experience Monitoring
https://dex.mcp.cloudflare.com/mcp
Public documentation ↗
Verified Unknown Required / observedAug 31, 2026, 4:04 AM
Cloudflare GraphQL
https://graphql.mcp.cloudflare.com/mcp
Public documentation ↗
Verified Unknown Required / observedAug 31, 2026, 4:04 AM
Cloudflare Agents SDK Documentation
https://agents.cloudflare.com/mcp
Public documentation ↗
Verified 2025-11-25Legacy 100 No public auth challenge observedAug 31, 2026, 4:04 AM
AI Agent SDK Bug / Compatibility Tracker

MCP, AI SDK, LangGraph, and OpenAI Agents compatibility

A GitHub issue is not automatically an XBSTACK reproduction. Only independently rerun cases receive the “Verified locally” label; the rest retain upstream evidence, affected versions, and an explicit test-pending state so readers can return to check fixes.

modelcontextprotocol/typescript-sdk · 3vercel/ai · 1langchain-ai/langgraph · 2openai/openai-agents-python · 1
modelcontextprotocol/typescript-sdk#2739Open

StreamableHTTPClientTransport leaves POST requests pending when their SSE response ends or errors

A POST receives text/event-stream, but the request-scoped SSE errors or reaches EOF before the matching JSON-RPC response; the transport sees the failure quickly while the request stays pending until protocol timeout.

Verified locally by XBSTACK
Upstream reported versions@modelcontextprotocol/sdk 1.26.0 · @modelcontextprotocol/sdk 1.29.0
XBSTACK verification@modelcontextprotocol/sdk 1.29.0 · @modelcontextprotocol/sdk 1.30.0 · Node.js 22.18.0
Status last checkedSep 1, 2026, 6:59 AM
modelcontextprotocol/typescript-sdk#2735Open

Client.listTools() silently drops pages when a server repeats a cursor

When a server legally repeats an opaque cursor, the auto-aggregating listTools/listPrompts/listResources path can stop early and remove nextCursor, making missing pages look complete.

Upstream reproduction only; XBSTACK test pending
Upstream reported versions@modelcontextprotocol/client 2.0.0
XBSTACK verificationIndependent reproduction pending
Status last checkedSep 1, 2026, 6:59 AM
modelcontextprotocol/typescript-sdk#2721Open

outputSchema always emitted as JSON Schema draft-07, breaking clients that only accept 2020-12

With SDK 1.30.0, McpServer can emit outputSchema as draft-07 when no target is specified; clients that enforce 2020-12 may reject the tool before invocation.

Upstream reproduction only; XBSTACK test pending
Upstream reported versions@modelcontextprotocol/sdk 1.30.0
XBSTACK verificationIndependent reproduction pending
Status last checkedSep 1, 2026, 6:59 AM
vercel/ai#19966Open

WorkflowAgent does not pass abortSignal to tool execute callbacks

WorkflowAgent accepts abortSignal or timeout, but the upstream report shows the effective cancellation signal is not passed into tool execute callbacks; an in-flight fetch, database request, or subprocess can therefore continue after the agent loop stops.

Upstream reproduction marked successful; XBSTACK test pending
Upstream reported versionsai 7.0.82 · @ai-sdk/workflow 2.0.12 · Node.js 24.18.0
XBSTACK verificationIndependent reproduction pending
Status last checkedSep 1, 2026, 6:59 AM
langchain-ai/langgraph#8714Open

aupdate_state raises Ambiguous update where update_state succeeds

The upstream LangGraph 1.2.11 reproduction shows the same state-update sequence succeeds with sync update_state but async aupdate_state raises InvalidUpdateError: Ambiguous update because the two paths use different fallback conditions.

Upstream reproduction only; XBSTACK regression pending
Upstream reported versionslanggraph 1.2.11 · langgraph-checkpoint 4.2.0 · Python 3.12.3
XBSTACK verificationIndependent reproduction pending
Status last checkedSep 1, 2026, 6:59 AM
langchain-ai/langgraph#8693Open

Command resume misclassifies ordinary dictionary values as interrupt maps

Ordinary dictionaries passed through Command(resume=dict) can be misclassified as interrupt-ID maps: an empty dict and a dict with a 32-character hexadecimal key remain interrupted, while a dict with non-string keys can raise TypeError during key matching.

Verified locally by XBSTACK
Upstream reported versionslanggraph 1.2.11 · langgraph main f09cfe8ffc1eeffd68f4b628ed69c30f7cad229f
XBSTACK verificationlanggraph 1.2.10 · langgraph 1.2.11 · Python 3.10.2
Status last checkedSep 1, 2026, 6:59 AM
openai/openai-agents-python#4690Open

Resumed terminal tool output cannot recover after a Session append failure

The upstream report shows that when an approved local tool becomes terminal output and the final Session.add_items append fails, RunState cannot recover the already accepted terminal result; retry re-enters the model and can diverge final output, guardrail evidence, and durable Session history.

Upstream reproduction only; XBSTACK test pending
Upstream reported versionsopenai-agents 0.22.0 · Python 3.13.15 · macOS 26.5 arm64
XBSTACK verificationIndependent reproduction pending
Status last checkedSep 1, 2026, 6:59 AM
Return Visit

Prefer a weekly engineering update?

The weekly keeps only changes that affect engineering decisions, compatibility failures, XBSTACK reproductions, and verified fixes. No filler issue without evidence.

Subscribe to AI Engineering Weekly →
Interpretation

How to read the matrix

Modern

The public endpoint was verified against MCP 2026-07-28 stateless-era behavior, using server/discover and stateless list requests as the preferred path.

Legacy

The endpoint is still identified through a 2025-era initialize/session compatibility flow. Legacy does not mean broken; it describes the observed protocol generation.

Issue state is not local evidence

Upstream Open / Closed status and XBSTACK reproduction are separate evidence chains. verifiedVersions and a local test date appear only after XBSTACK runs the reproduction.

Methodology

How the dataset is generated

Every public endpoint is probed with the same read-only XBSTACK MCP Inspector path: prefer 2026-07-28, fall back to Legacy compatibility detection when needed, and read only discovery plus first-page tools/resources/prompts lists. The public probe never sends tools/call. If a remote endpoint is temporarily unreachable, the generator keeps the last successful observation and marks it historical rather than rewriting a network failure as a protocol conclusion.