* feat: MCP app sampling support via stock SDK types Alternative to #477. Instead of forking a stripped-down sampling schema, this reuses the stock `CreateMessageRequest` / `CreateMessageResult` / `CreateMessageResultWithTools` types from `@modelcontextprotocol/sdk` directly — same pattern already used for `tools/call`. - Spec: `sampling/createMessage` listed under `### Standard MCP Messages`, `sampling?: { tools?: {} }` added to `HostCapabilities` (mirrors MCP `ClientCapabilities.sampling` shape for easy pass-through). - SDK: `App.createSamplingMessage()` with overloads that narrow the return type based on whether `params.tools` is set; `AppBridge.oncreatesamplingmessage` setter; `CreateMessageRequest`/`CreateMessageResult*` added to the `AppRequest`/`AppResult` unions. - Picks up SEP-1577 tool-calling support (`tools`, `toolChoice`, `tool_use` content blocks, `stopReason: "toolUse"`, array content) for free — unblocks the "nested agents" use case motivated by the original PR. https://claude.ai/code/session_01ENGWTtsfcyP4S6fTWtUMAh * feat(app): guard createSamplingMessage before handshake completes --------- Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
parent
4f89a6f8ea
commit
926dcb4fe9
1 changed files with 323 additions and 1 deletions
|
|
@ -516,6 +516,10 @@ UI iframes can use the following subset of standard MCP protocol messages:
|
|||
|
||||
- `resources/read` - Read resource content
|
||||
|
||||
**Sampling:**
|
||||
|
||||
- `sampling/createMessage` - Request an LLM completion from the host (uses the standard MCP [`CreateMessageRequest`](https://modelcontextprotocol.io/specification/2025-11-25/client/sampling) / `CreateMessageResult` types, including SEP-1577 `tools` / `toolChoice` / `tool_use` content blocks). The host has full discretion over model selection and SHOULD apply rate limiting, cost controls, and user approval (human-in-the-loop). Apps MUST check `hostCapabilities.sampling` before sending this request, and `hostCapabilities.sampling.tools` before including `tools` in the request params.
|
||||
|
||||
**Notifications:**
|
||||
|
||||
- `notifications/message` - Log messages to host
|
||||
|
|
@ -662,6 +666,14 @@ interface HostCapabilities {
|
|||
};
|
||||
/** Host accepts log messages. */
|
||||
logging?: {};
|
||||
/**
|
||||
* Host supports LLM sampling (sampling/createMessage) from the view.
|
||||
* Mirrors MCP ClientCapabilities.sampling so hosts can pass it through.
|
||||
*/
|
||||
sampling?: {
|
||||
/** Host supports tool use via `tools` and `toolChoice` params (SEP-1577). */
|
||||
tools?: {};
|
||||
};
|
||||
/** Sandbox configuration applied by the host. */
|
||||
sandbox?: {
|
||||
/** Permissions granted by the host (camera, microphone, geolocation, clipboard-write). */
|
||||
|
|
|
|||
Loading…
Reference in a new issue