Skip to content

Commit 9911544

Browse files
committed
make registerAppTool more interchangeable w/ server.registerTool
1 parent ecc593b commit 9911544

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/server/index.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import {
1111
McpUiToolMeta,
1212
} from "../app.js";
1313
import type {
14+
BaseToolCallback,
1415
McpServer,
16+
RegisteredTool,
1517
ResourceMetadata,
1618
ToolCallback,
1719
ReadResourceCallback,
@@ -33,6 +35,7 @@ export interface ToolConfig {
3335
title?: string;
3436
description?: string;
3537
inputSchema?: ZodRawShapeCompat | AnySchema;
38+
outputSchema?: ZodRawShapeCompat | AnySchema;
3639
annotations?: ToolAnnotations;
3740
_meta?: Record<string, unknown>;
3841
}
@@ -100,15 +103,17 @@ export interface McpUiAppResourceConfig extends ResourceMetadata {
100103
* ```
101104
*/
102105
export function registerAppTool<
103-
TInputSchema extends ZodRawShapeCompat | AnySchema | undefined = undefined,
106+
OutputArgs extends ZodRawShapeCompat | AnySchema,
107+
InputArgs extends undefined | ZodRawShapeCompat | AnySchema = undefined,
104108
>(
105109
server: Pick<McpServer, "registerTool">,
106110
name: string,
107-
config: Omit<McpUiAppToolConfig, "inputSchema"> & {
108-
inputSchema?: TInputSchema;
111+
config: McpUiAppToolConfig & {
112+
inputSchema?: InputArgs;
113+
outputSchema?: OutputArgs;
109114
},
110-
handler: ToolCallback<TInputSchema>,
111-
): void {
115+
cb: ToolCallback<InputArgs>,
116+
): RegisteredTool {
112117
// Normalize metadata for backward compatibility:
113118
// - If _meta.ui.resourceUri is set, also set the legacy flat key
114119
// - If the legacy flat key is set, also set _meta.ui.resourceUri
@@ -125,7 +130,7 @@ export function registerAppTool<
125130
normalizedMeta = { ...meta, ui: { ...uiMeta, resourceUri: legacyUri } };
126131
}
127132

128-
server.registerTool(name, { ...config, _meta: normalizedMeta }, handler);
133+
return server.registerTool(name, { ...config, _meta: normalizedMeta }, cb);
129134
}
130135

131136
/**

0 commit comments

Comments
 (0)