fix(types): forbid csp/permissions on McpUiToolMeta via never (#624)
* fix(types): forbid csp/permissions on McpUiToolMeta via never Hosts read _meta.ui.csp and _meta.ui.permissions from the resource (resources/read content item, with resources/list entry as fallback), never from the tool. Typing them as `never` on McpUiToolMeta gives TypeScript users a compile-time error pointing at McpUiResourceMeta instead of silently accepting and ignoring them. Companion to anthropics/apps#38705 (host-side console.warn). Refs anthropics/claude-ai-mcp#40. * drop misleading #40 link from McpUiToolMeta.csp JSDoc
This commit is contained in:
parent
3fb521b71f
commit
4995746759
3 changed files with 28 additions and 0 deletions
6
src/generated/schema.json
generated
6
src/generated/schema.json
generated
|
|
@ -5300,6 +5300,12 @@
|
|||
],
|
||||
"description": "Tool visibility scope - who can access the tool."
|
||||
}
|
||||
},
|
||||
"csp": {
|
||||
"not": {}
|
||||
},
|
||||
"permissions": {
|
||||
"not": {}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
|
|
|||
11
src/generated/schema.ts
generated
11
src/generated/schema.ts
generated
|
|
@ -730,6 +730,17 @@ export const McpUiToolMetaSchema = z.object({
|
|||
.describe(
|
||||
'Who can access this tool. Default: ["model", "app"]\n- "model": Tool visible to and callable by the agent\n- "app": Tool callable by the app from this server only',
|
||||
),
|
||||
/**
|
||||
* `csp` belongs on the UI **resource** (see {@link McpUiResourceMeta}),
|
||||
* not the tool. Hosts read it from the `resources/read` content item
|
||||
* (with `resources/list` entry as fallback) and ignore it here.
|
||||
*/
|
||||
csp: z.never().optional(),
|
||||
/**
|
||||
* `permissions` belongs on the UI **resource** (see {@link McpUiResourceMeta}),
|
||||
* not the tool. Hosts ignore it here.
|
||||
*/
|
||||
permissions: z.never().optional(),
|
||||
});
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -783,6 +783,17 @@ export interface McpUiToolMeta {
|
|||
* - "app": Tool callable by the app from this server only
|
||||
*/
|
||||
visibility?: McpUiToolVisibility[];
|
||||
/**
|
||||
* `csp` belongs on the UI **resource** (see {@link McpUiResourceMeta}),
|
||||
* not the tool. Hosts read it from the `resources/read` content item
|
||||
* (with `resources/list` entry as fallback) and ignore it here.
|
||||
*/
|
||||
csp?: never;
|
||||
/**
|
||||
* `permissions` belongs on the UI **resource** (see {@link McpUiResourceMeta}),
|
||||
* not the tool. Hosts ignore it here.
|
||||
*/
|
||||
permissions?: never;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue