UNPKG

mcpay

Version:

SDK and CLI for MCPay functionality - MCP servers with payment capabilities

142 lines 8.44 kB
import { CallToolRequestSchema, CallToolResultSchema, InitializeRequestSchema, InitializeResultSchema, ListPromptsRequestSchema, ListPromptsResultSchema, ListResourceTemplatesRequestSchema, ListResourceTemplatesResultSchema, ListResourcesRequestSchema, ListResourcesResultSchema, ListToolsRequestSchema, ListToolsResultSchema, NotificationSchema, ReadResourceRequestSchema, ReadResourceResultSchema, RequestSchema, ResultSchema, } from "@modelcontextprotocol/sdk/types.js"; import { z } from "zod"; // Request context for hooks to inspect and modify HTTP request details export const RequestContextSchemaRaw = { headers: z.record(z.string()).optional(), host: z.string().optional(), path: z.string().optional(), }; export const RequestContextSchema = z.object(RequestContextSchemaRaw); // Extend request schemas with optional requestContext export const CallToolRequestSchemaWithContext = CallToolRequestSchema.extend({ requestContext: RequestContextSchema.optional(), }); export const ListPromptsRequestSchemaWithContext = ListPromptsRequestSchema.extend({ requestContext: RequestContextSchema.optional(), }); export const ListToolsRequestSchemaWithContext = ListToolsRequestSchema.extend({ requestContext: RequestContextSchema.optional(), }); export const InitializeRequestSchemaWithContext = InitializeRequestSchema.extend({ requestContext: RequestContextSchema.optional(), }); export const ListResourcesRequestSchemaWithContext = ListResourcesRequestSchema.extend({ requestContext: RequestContextSchema.optional(), }); export const ListResourceTemplatesRequestSchemaWithContext = ListResourceTemplatesRequestSchema.extend({ requestContext: RequestContextSchema.optional(), }); export const ReadResourceRequestSchemaWithContext = ReadResourceRequestSchema.extend({ requestContext: RequestContextSchema.optional(), }); // Generic error type for protocol-level errors (akin to McpError) export const HookChainErrorSchema = z.object({ code: z.number(), message: z.string(), data: z.unknown().optional(), }); // Hook result schemas export const CallToolRequestHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), request: CallToolRequestSchemaWithContext }), z.object({ resultType: z.literal("respond"), response: CallToolResultSchema }), ]); export const CallToolResponseHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), response: CallToolResultSchema }), z.object({ resultType: z.literal("retry"), request: CallToolRequestSchemaWithContext }), z.object({ resultType: z.literal("abort"), reason: z.string(), body: z.unknown().optional() }), ]); export const CallToolErrorHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue") }), z.object({ resultType: z.literal("respond"), response: CallToolResultSchema }), ]); export const ListPromptsErrorHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue") }), z.object({ resultType: z.literal("respond"), response: ListPromptsResultSchema }), ]); export const ListToolsErrorHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue") }), z.object({ resultType: z.literal("respond"), response: ListToolsResultSchema }), ]); export const InitializeErrorHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue") }), z.object({ resultType: z.literal("respond"), response: InitializeResultSchema }), ]); export const OtherErrorHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue") }), z.object({ resultType: z.literal("respond"), response: ResultSchema }), ]); export const TargetErrorHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue") }), z.object({ resultType: z.literal("respond"), response: ResultSchema }), ]); export const NotificationErrorHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue") }), ]); export const TargetNotificationErrorHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue") }), ]); export const ListResourcesRequestHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), request: ListResourcesRequestSchemaWithContext }), z.object({ resultType: z.literal("respond"), response: ListResourcesResultSchema }), ]); export const ListResourcesResponseHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), response: ListResourcesResultSchema }), ]); export const ListResourcesErrorHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue") }), z.object({ resultType: z.literal("respond"), response: ListResourcesResultSchema }), ]); export const ListResourceTemplatesRequestHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), request: ListResourceTemplatesRequestSchemaWithContext }), z.object({ resultType: z.literal("respond"), response: ListResourceTemplatesResultSchema }), ]); export const ListResourceTemplatesResponseHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), response: ListResourceTemplatesResultSchema }), ]); export const ListResourceTemplatesErrorHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue") }), z.object({ resultType: z.literal("respond"), response: ListResourceTemplatesResultSchema }), ]); export const ReadResourceRequestHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), request: ReadResourceRequestSchemaWithContext }), z.object({ resultType: z.literal("respond"), response: ReadResourceResultSchema }), ]); export const ReadResourceResponseHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), response: ReadResourceResultSchema }), ]); export const ReadResourceErrorHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue") }), z.object({ resultType: z.literal("respond"), response: ReadResourceResultSchema }), ]); export const ListPromptsRequestHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), request: ListPromptsRequestSchemaWithContext }), z.object({ resultType: z.literal("respond"), response: ListPromptsResultSchema }), ]); export const ListToolsRequestHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), request: ListToolsRequestSchemaWithContext }), z.object({ resultType: z.literal("respond"), response: ListToolsResultSchema }), ]); export const ListPromptsResponseHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), response: ListPromptsResultSchema }), ]); export const ListToolsResponseHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), response: ListToolsResultSchema }), ]); export const InitializeRequestHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), request: InitializeRequestSchemaWithContext }), z.object({ resultType: z.literal("respond"), response: InitializeResultSchema }), ]); export const InitializeResponseHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), response: InitializeResultSchema }), ]); export const RequestHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), request: RequestSchema }), z.object({ resultType: z.literal("respond"), response: ResultSchema }), ]); export const ResponseHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), response: ResultSchema }), ]); export const NotificationHookResultSchema = z.discriminatedUnion("resultType", [ z.object({ resultType: z.literal("continue"), notification: NotificationSchema }), ]); //# sourceMappingURL=hooks.js.map