Commit graph ext-apps/specification/draft
Author SHA1 Message Date
Ido Salomon
a31e48a11e
fix: host may request user consent (#126) 2025-12-11 20:07:58 +01:00
Ido Salomon
ad19d2fdb1
fix: ui/tool-cancelled -> ui/notifications/tool-cancelled (#118) 2025-12-10 03:13:59 +01:00
Andrew Harvard
4953cd320e
Add media-src to CSP for video and audio support (#109)
This adds the media-src directive to the Content Security Policy to enable
MCP Apps to play video and audio content.

Changes:
- Add media-src to the restrictive default CSP in the spec
- Add media-src to the CSP construction from metadata in the spec
- Update resourceDomains documentation in spec to include media
- Update resourceDomains JSDoc in src/types.ts to include media-src

Fixes modelcontextprotocol/ext-apps#106
2025-12-10 01:10:58 +02:00
Liad Yosef
ba1a27e465
fix: change size-changed to be in correct tense (#83)
* fix: change size-changed to be in correct tense

* sdk changes
2025-12-08 12:14:56 +01:00
Anton Pidkuiko
c587e076a0
fix: correct host-context-changed notification name in spec (#78)
Update `ui/host-context-change` to `ui/notifications/host-context-changed`
to match the SDK implementation and follow the notifications naming convention.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-08 03:12:24 +02:00
Jonathan Hefner
3d0a39b9b0
Merge pull request #74 from modelcontextprotocol/docs/safe-area-insets-comment
docs: remove "Mobile" from safeAreaInsets comment
2025-12-05 17:13:11 -06:00
Anton Pidkuiko
0af15322af
fix: use profile parameter for MIME type instead of suffix (#75)
Change MIME type from `text/html+mcp` to `text/html;profile=mcp-app`
to follow RFC 6838 recommendations for custom media types.

The `+suffix` format (like `text/html+mcp`) is intended for structured
syntax suffixes (e.g., `+json`, `+xml`) that describe the underlying
format. Since MCP Apps doesn't define a new syntax but rather a profile
of HTML, using a profile parameter is more semantically correct.

Fixes #59

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-04 20:28:58 +02:00
Anton Pidkuiko MacBook
2e0a7b41ff
docs: remove "Mobile" from safeAreaInsets comment
Safe area insets apply on web as well, not just mobile devices.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 11:30:16 +00:00
Ido Salomon
bb243187d4
docs: ui/size-change -> ui/notifications/size-change (#69) 2025-12-03 00:35:24 +02:00
Anton Pidkuiko
9d8b705598
fix: remove "system" from theme options (#40)
The host should resolve "system" to either "light" or "dark" before
passing the theme to the app. Apps only need to know the actual
resolved theme value.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Olivier Chafik <ochafik@anthropic.com>
2025-12-01 20:31:08 +00:00
Ido Salomon
a9b96cd365
fix: remove carousel display mode (#56) 2025-12-01 22:29:49 +02:00
Anton Pidkuiko MacBook
a446e80b5f
fix: use camelCase for CSP domain fields in specification
Change connect_domains and resource_domains to connectDomains and
resourceDomains for consistency with the rest of the specification
which uses camelCase naming convention.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 16:48:07 +00:00
Liad Yosef
34316a2180
minor: renumber mermaid diagrams (#36) 2025-11-27 03:14:26 +02:00
Olivier Chafik
3df49c38dc
fix iframe resizing (#19)
* reshuffle build / start scripts

* fix resize logic

* prettier

* extract RESOURCE_URI_META_KEY constant

* Update message-transport.ts

* Update package.json
2025-11-25 02:39:33 +00:00
Jonathan Hefner
120a673904 Fix UIResource \_meta type to match actual usage pattern
The UIResource interface incorrectly specified `_meta?: UIResourceMeta`
when it should be `_meta?: { ui?: UIResourceMeta }` to match the
resources/read response format and all usage examples throughout the
document.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 09:06:02 -06:00
Jonathan Hefner
9aa129fe34 Fix indentation of domain and prefersBorder in UiResourceMeta example
The domain and prefersBorder properties are now properly indented to be
at the same hierarchical level as csp within the ui object.

Addresses PR comment:
https://github.com/modelcontextprotocol/ext-apps/pull/5#discussion_r2553064940

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:58:48 -06:00
Jonathan Hefner
ae9d87f530 Convert UIResource documentation to TypeDoc comments
Replace inline comments with comprehensive TypeDoc comments that explain
the purpose and usage of each property. Add examples and clarify
constraints (MUST/SHOULD) for better developer understanding.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:58:48 -06:00
Jonathan Hefner
a8107a6733 Convert UiResourceMeta documentation to TypeDoc comments
Move metadata field documentation from separate prose section into
TypeDoc comments on the UiResourceMeta interface properties. This
consolidates the documentation and eliminates duplication while making
it more maintainable and IDE-friendly.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:58:45 -06:00
Jonathan Hefner
0d65458552 Improve CSP example formatting and clarity in apps specification
Change CSP code block from yaml to typescript fence, add context showing
where csp variable originates (resource.\_meta?.ui?.csp), rename
cspHeader to cspValue for accuracy, and remove Content-Security-Policy:
prefix since the variable holds just the policy value, not a complete
HTTP header.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:57:05 -06:00
Jonathan Hefner
cc08467772 Complete JSON-RPC message examples in Data Passing section
The tool input and tool result examples now show fully formed JSON-RPC
messages with all required fields (jsonrpc, id/method, result/params) to
better demonstrate the protocol format. Also fixes MDX parsing error in
Client\<>Server heading by escaping angle brackets.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:57:05 -06:00
Jonathan Hefner
1eaf7377ca Fix indentation in Mermaid sequence diagrams
Corrects the indentation of nested block structures (alt, opt, par,
loop) in all four Mermaid sequence diagrams. Content inside nested
blocks is now properly indented relative to the block keywords, making
the hierarchical structure clearer and more readable.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:57:01 -06:00
Jonathan Hefner
4aa2eb8dbe Remove unnecessary quotes from TypeScript property names
Unquote ui, csp, domain, and prefersBorder properties in the
resources/read response TypeScript example to follow standard TypeScript
syntax conventions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:53:00 -06:00
Jonathan Hefner
06c37b045b Convert notification examples from JSON to TypeScript format
Changes code blocks for notification examples to use `typescript` fence
instead of `json`. This properly represents TypeScript types (like
Record<string, unknown>, CallToolResult, Partial<HostContext>) without
quotes, matching the format used elsewhere in the specification.

Affected notifications:

- ui/notifications/tool-input
- ui/notifications/tool-input-partial
- ui/notifications/tool-result
- ui/tool-cancelled
- ui/resource-teardown
- ui/size-change
- ui/host-context-change
- ui/notifications/sandbox-ready
- ui/notifications/sandbox-resource-ready

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:53:00 -06:00
Jonathan Hefner
31dccb95f4 Fix resource list change notification name format
Corrected `resources/notifications/list_changed` to
`notifications/resources/list_changed` on line 208 to follow standard
MCP notification naming pattern (`notifications/{category}/{event}`).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:53:00 -06:00
Jonathan Hefner
86d72db632 Standardize notification naming and fix formatting in MCP Apps spec
Updates the MCP Apps specification to consistently use the
`ui/notifications/` prefix for all notification methods (e.g.,
`ui/notifications/sandbox-ready`, `ui/notifications/tool-result`). Also
removes trailing whitespace, fixes tab/space inconsistencies, improves
code formatting with proper backticks, and clarifies terminology
throughout the document.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:53:00 -06:00
Olivier Chafik
3ef1d3b227
Merge pull request #3 from modelcontextprotocol/sep-hostcontext-comment-fields
Move HostContext field descriptions to JSDoc comments
2025-11-23 03:32:08 +00:00
yannj-fr
635f3247a5 fix minor typos 2025-11-22 13:08:37 +01:00
Anton Pidkuiko MacBook
c65006acb4
fix: use text/html+mcp mimeType format
Change from text/vnd.mcp.ui+html to text/html+mcp.

Rationale:
- It's an unregistered subtype, allowed for private use
- The +suffix form indicates MCP-specific semantics (postMessage protocol)
- Content is still valid HTML and can be rendered as-such
- Following RFC 6838, +mcp could be registered as an official suffix

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 21:38:19 +00:00
Liad Yosef
f96c526e7f
docs: update UI resource format and metadata fields (#4)
* Update UI resource format and metadata fields

Create a unified object of UIResourceMetadata, as agreed in the SEP doc:
```
interface UiResourceMeta {
  csp?: {
    connectDomains?: string[],
    resourceDomains?: string[],
  },
  domain?: string,
  prefersBorder?: boolean,
}
```

* fix: json style

* fix: style
2025-11-21 23:13:40 +02:00
Jonathan Hefner
4e08951da6 Move HostContext field descriptions to JSDoc comments
Converted the HostContext interface documentation from a separate "Field
Descriptions" section to JSDoc-style comments above each field. This
improves consistency with other interfaces in the specification and
keeps documentation closer to the code.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 14:49:25 -06:00
Anton Pidkuiko MacBook
bd5a34ba07
fix: use consistent text/vnd.mcp.ui+html mimeType throughout
Replace all occurrences of text/html with text/vnd.mcp.ui+html
in the specification and example code for consistency.

The spec already defined text/vnd.mcp.ui+html in the capability
negotiation section but used text/html in other places.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 19:32:46 +00:00
Olivier Chafik
69c814dae2
spec: ui/notifications/tool-input (no final 's') 2025-11-21 19:03:37 +00:00
Ido Salomon
f84985631d
spec: update SEP number 2025-11-21 19:47:38 +02:00
Ido Salomon
a8b6e2a516 update 2025-11-21 19:33:22 +02:00
Ido Salomon
d0dbea388c spec: SEP draft 2025-11-21 19:30:00 +02:00