make registerAppTool more interchangeable w/ server.registerTool (#219)
This commit is contained in:
parent
ecc593bcec
commit
2730f796f7
1 changed files with 11 additions and 6 deletions
|
|
@ -11,7 +11,9 @@ import {
|
||||||
McpUiToolMeta,
|
McpUiToolMeta,
|
||||||
} from "../app.js";
|
} from "../app.js";
|
||||||
import type {
|
import type {
|
||||||
|
BaseToolCallback,
|
||||||
McpServer,
|
McpServer,
|
||||||
|
RegisteredTool,
|
||||||
ResourceMetadata,
|
ResourceMetadata,
|
||||||
ToolCallback,
|
ToolCallback,
|
||||||
ReadResourceCallback,
|
ReadResourceCallback,
|
||||||
|
|
@ -33,6 +35,7 @@ export interface ToolConfig {
|
||||||
title?: string;
|
title?: string;
|
||||||
description?: string;
|
description?: string;
|
||||||
inputSchema?: ZodRawShapeCompat | AnySchema;
|
inputSchema?: ZodRawShapeCompat | AnySchema;
|
||||||
|
outputSchema?: ZodRawShapeCompat | AnySchema;
|
||||||
annotations?: ToolAnnotations;
|
annotations?: ToolAnnotations;
|
||||||
_meta?: Record<string, unknown>;
|
_meta?: Record<string, unknown>;
|
||||||
}
|
}
|
||||||
|
|
@ -100,15 +103,17 @@ export interface McpUiAppResourceConfig extends ResourceMetadata {
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
export function registerAppTool<
|
export function registerAppTool<
|
||||||
TInputSchema extends ZodRawShapeCompat | AnySchema | undefined = undefined,
|
OutputArgs extends ZodRawShapeCompat | AnySchema,
|
||||||
|
InputArgs extends undefined | ZodRawShapeCompat | AnySchema = undefined,
|
||||||
>(
|
>(
|
||||||
server: Pick<McpServer, "registerTool">,
|
server: Pick<McpServer, "registerTool">,
|
||||||
name: string,
|
name: string,
|
||||||
config: Omit<McpUiAppToolConfig, "inputSchema"> & {
|
config: McpUiAppToolConfig & {
|
||||||
inputSchema?: TInputSchema;
|
inputSchema?: InputArgs;
|
||||||
|
outputSchema?: OutputArgs;
|
||||||
},
|
},
|
||||||
handler: ToolCallback<TInputSchema>,
|
cb: ToolCallback<InputArgs>,
|
||||||
): void {
|
): RegisteredTool {
|
||||||
// Normalize metadata for backward compatibility:
|
// Normalize metadata for backward compatibility:
|
||||||
// - If _meta.ui.resourceUri is set, also set the legacy flat key
|
// - If _meta.ui.resourceUri is set, also set the legacy flat key
|
||||||
// - If the legacy flat key is set, also set _meta.ui.resourceUri
|
// - If the legacy flat key is set, also set _meta.ui.resourceUri
|
||||||
|
|
@ -125,7 +130,7 @@ export function registerAppTool<
|
||||||
normalizedMeta = { ...meta, ui: { ...uiMeta, resourceUri: legacyUri } };
|
normalizedMeta = { ...meta, ui: { ...uiMeta, resourceUri: legacyUri } };
|
||||||
}
|
}
|
||||||
|
|
||||||
server.registerTool(name, { ...config, _meta: normalizedMeta }, handler);
|
return server.registerTool(name, { ...config, _meta: normalizedMeta }, cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue