diff --git a/src/server/index.ts b/src/server/index.ts index 9f51f913..d926b210 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -53,56 +53,6 @@ export type ServerOptions = ProtocolOptions & { capabilities?: ServerCapabilities; }; -/** - * Callback for a tool handler registered with Server.tool(). - * - * Parameters will include tool arguments, if applicable, as well as other request handler context. - */ -export type ToolCallback = - Args extends ZodRawShape - ? ( - args: z.objectOutputType, - extra: RequestHandlerExtra, - ) => CallToolResult | Promise - : (extra: RequestHandlerExtra) => CallToolResult | Promise; - -type RegisteredTool = { - description?: string; - inputSchema?: AnyZodObject; - callback: ToolCallback; -}; - -const EMPTY_OBJECT_JSON_SCHEMA = { - type: "object" as const, -}; - -export type ResourceMetadata = Omit; - -export type ListResourcesCallback = () => - | ListResourcesResult - | Promise; - -export type ReadResourceCallback = ( - uri: URL, -) => ReadResourceResult | Promise; - -type RegisteredResource = { - name: string; - metadata?: ResourceMetadata; - readCallback: ReadResourceCallback; -}; - -export type ReadResourceTemplateCallback = ( - uri: URL, - variables: Variables, -) => ReadResourceResult | Promise; - -type RegisteredResourceTemplate = { - resourceTemplate: ResourceTemplate; - metadata?: ResourceMetadata; - readCallback: ReadResourceTemplateCallback; -}; - /** * An MCP server on top of a pluggable transport. * @@ -753,3 +703,65 @@ export class ResourceTemplate { return this._listCallback; } } + +/** + * Callback for a tool handler registered with Server.tool(). + * + * Parameters will include tool arguments, if applicable, as well as other request handler context. + */ +export type ToolCallback = + Args extends ZodRawShape + ? ( + args: z.objectOutputType, + extra: RequestHandlerExtra, + ) => CallToolResult | Promise + : (extra: RequestHandlerExtra) => CallToolResult | Promise; + +type RegisteredTool = { + description?: string; + inputSchema?: AnyZodObject; + callback: ToolCallback; +}; + +const EMPTY_OBJECT_JSON_SCHEMA = { + type: "object" as const, +}; + +/** + * Additional, optional information for annotating a resource. + */ +export type ResourceMetadata = Omit; + +/** + * Callback to list all resources matching a given template. + */ +export type ListResourcesCallback = () => + | ListResourcesResult + | Promise; + +/** + * Callback to read a resource at a given URI. + */ +export type ReadResourceCallback = ( + uri: URL, +) => ReadResourceResult | Promise; + +type RegisteredResource = { + name: string; + metadata?: ResourceMetadata; + readCallback: ReadResourceCallback; +}; + +/** + * Callback to read a resource at a given URI, following a filled-in URI template. + */ +export type ReadResourceTemplateCallback = ( + uri: URL, + variables: Variables, +) => ReadResourceResult | Promise; + +type RegisteredResourceTemplate = { + resourceTemplate: ResourceTemplate; + metadata?: ResourceMetadata; + readCallback: ReadResourceTemplateCallback; +};