Replies: 2 comments
|
Thanks @yannj-fr for mentioning this! const readUiResourceHandler = (uri, extra) => {
const isClaude =
extra?.requestInfo?.headers?.["user-agent"] === "Claude-User";
let contentMetaOverrides: { domain?: string } = {};
if (isClaude) {
contentMetaOverrides = { domain: `${hash}.claudemcpcontent.com` };
}
return {
contents: [
{
uri: uri.href,
mimeType,
text: html,
_meta: { ...defaultContentMeta, ...contentMetaOverrides },
},
],
};
};But my understanding was to allow app builders to opt-in on individual MCP hosts. How would this be achieved with your |
|
We also recently ran into this issue when trying to submit on both ChatGPT and Claude. On ChatGPT, Perhaps a new field like |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Pre-submission Checklist
Your Idea
Context
The current handling of ui.domain in the MCP apps spec leads to fragmentation across host implementations.
Today:
This creates a portability issue:
-The same MCP app results in different origins depending on the host
-Developers must understand host-specific policies
Problem
ui.domain is currently underspecified in terms of:
-Deterministic derivation
-Cross-host consistency
-Intended use (security boundary vs persistence vs isolation)
As a result:
-Implementations diverge
-Apps are not portable without adaptation
-Cross-platform state persistence is effectively impossible
Proposal
Introduce a standardized, host-agnostic origin scheme.
Allocate: mcpappscontent.com
We (mcpappsbuilders.com) have bought this domain, and are really happy to offer it for this purpose.
Governance: neutral body (e.g. Agentic AI Foundation or equivalent)
hash.mcpappscontent.com
hash = stable hash of MCP app identifier (e.g. MCP URL or manifest digest)
If request_portability = true:
Host MUST use: hash.mcpappscontent.com
Host only needs to serve a blank HTML shell, Actual UI content is still injected from MCP resources (unchanged model)
Rationale
Same app → same origin across all compliant hosts
Developers can reason about storage, caching, and security once
Hosts already generate synthetic origins
This only standardizes the derivation
Backward compatibility
Fully opt-in
Existing host-specific schemes remain valid
Ecosystem alignment
Enables consistent behavior across:
Security Considerations
Additional Benefits
Open Questions
What should be the canonical input for the hash?
Conclusion
Standardizing ui.domain behind an opt-in portability flag removes unnecessary divergence while preserving host flexibility. The implementation cost is minimal, and the upside for developer experience and ecosystem cohesion is significant.
Scope
All reactions