Replies: 1 comment
-
|
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 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
Beta Was this translation helpful? Give feedback.
All reactions