Summary
There is confusion and inconsistency in how MCP clients should handle structuredContent vs regular content fields in tool responses. This is causing fragmentation where different clients behave differently with the same servers.
Problem Details
From Discord discussion:
- Inconsistent client support: Only Cursor currently supports
structuredContent, while other clients (CC/Windsurf) ignore it
- Different server responses: Some servers return different data in
structuredContent vs content instead of treating content as a backwards-compatible stringified version
- Untested outputs: Because only one client supports it,
structuredContent outputs are poorly tested and of lower quality
- Unclear specification: The spec doesn't clearly define:
- How clients MUST handle
structuredContent when present
- Whether
content should always be a stringified version of structuredContent
- The exact backwards compatibility requirements
Current Behavior
Different clients handle this differently:
- Cursor: Uses
structuredContent when available, stringifies it to content
- Most other clients: Ignore
structuredContent entirely
- This leads to servers performing differently across different clients
Expected Behavior
The specification should clearly define:
- How clients MUST handle
structuredContent when present
- The relationship between
structuredContent and content fields
- Backwards compatibility requirements for servers
- Whether clients that support
structuredContent should prefer it over content
Proposed Solution
Update the specification to be more explicit about:
- Client requirements for handling
structuredContent
- Server requirements for populating both fields consistently
- The intended fallback behavior for backwards compatibility
References
cc: @dsp-ant
Summary
There is confusion and inconsistency in how MCP clients should handle
structuredContentvs regularcontentfields in tool responses. This is causing fragmentation where different clients behave differently with the same servers.Problem Details
From Discord discussion:
structuredContent, while other clients (CC/Windsurf) ignore itstructuredContentvscontentinstead of treatingcontentas a backwards-compatible stringified versionstructuredContentoutputs are poorly tested and of lower qualitystructuredContentwhen presentcontentshould always be a stringified version ofstructuredContentCurrent Behavior
Different clients handle this differently:
structuredContentwhen available, stringifies it tocontentstructuredContententirelyExpected Behavior
The specification should clearly define:
structuredContentwhen presentstructuredContentandcontentfieldsstructuredContentshould prefer it overcontentProposed Solution
Update the specification to be more explicit about:
structuredContentReferences
cc: @dsp-ant