export interface CallToolRequest { readonly params: { readonly arguments?: Readonly>; readonly name: string; }; } export type McpJsonObject = Readonly>; export interface McpRequestHandlerExtra { readonly mcpReq: { /** The request's `_meta`, without the reserved `io.modelcontextprotocol/*` keys. */ readonly _meta?: Readonly>; /** The reserved `io.modelcontextprotocol/*` keys the request carried. */ readonly envelope?: Readonly>; readonly signal: AbortSignal; }; } export interface McpToolAnnotations { readonly destructiveHint?: boolean; readonly idempotentHint?: boolean; readonly openWorldHint?: boolean; readonly readOnlyHint?: boolean; } export interface StandardSchemaIssue { readonly message: string; readonly path?: readonly (PropertyKey | { readonly key: PropertyKey })[]; } export type StandardSchemaResult = | { readonly value: TOutput; readonly issues?: undefined } | { readonly issues: readonly StandardSchemaIssue[] }; export interface StandardSchemaWithJSON { readonly "~standard": { readonly version: 1; readonly vendor: string; readonly types?: { readonly input: TInput; readonly output: TOutput }; readonly validate: ( value: unknown, ) => StandardSchemaResult | Promise>; readonly jsonSchema: { readonly input: (options: { readonly target: string }) => Record; readonly output: (options: { readonly target: string }) => Record; }; }; } export interface StandardSchemaV1 { readonly "~standard": { readonly version: 1; readonly vendor: string; readonly types?: { readonly input: TInput; readonly output: TOutput }; }; } export interface CacheHint { readonly cacheScope?: "private" | "public"; readonly ttlMs?: number; } export type CacheableResultMethod = | "prompts/list" | "resources/list" | "resources/read" | "resources/templates/list" | "server/discover" | "tools/list"; export interface McpServerOptions { readonly cacheHints?: Partial>; readonly capabilities?: McpJsonObject; readonly instructions?: string; } export declare class Server { constructor(info: { readonly name: string; readonly version: string }, options?: McpServerOptions); setRequestHandler( method: "tools/list", handler: ( request: { readonly params: Readonly> }, context: McpRequestHandlerExtra, ) => Result | Promise, ): void; setRequestHandler( method: "tools/call", handler: ( request: CallToolRequest, context: McpRequestHandlerExtra, ) => Result | Promise, ): void; /** Spec methods validated by the SDK's own wire schemas. */ setRequestHandler( method: "resources/list" | "resources/read" | "resources/templates/list", handler: ( request: { readonly params?: McpJsonObject }, context: McpRequestHandlerExtra, ) => Result | Promise, ): void; /** Custom (non-spec) methods: params are validated by the given schema. */ setRequestHandler( method: string, schemas: { readonly params: StandardSchemaV1 }, handler: (params: TParams, context: McpRequestHandlerExtra) => Result | Promise, ): void; } export declare class McpServer { readonly server: Server; constructor(info: { readonly name: string; readonly version: string }, options?: McpServerOptions); registerTool( name: string, config: { readonly annotations?: McpToolAnnotations; readonly description?: string; readonly inputSchema: StandardSchemaWithJSON; readonly outputSchema?: StandardSchemaWithJSON; }, callback: ( input: TOutput, context: McpRequestHandlerExtra, ) => unknown | Promise, ): void; } export declare class ProtocolError extends Error { constructor(code: number, message: string, data?: unknown); readonly code: number; readonly data?: unknown; } export declare const ProtocolErrorCode: { readonly InternalError: -32603; readonly InvalidParams: -32602; readonly InvalidRequest: -32600; readonly MethodNotFound: -32601; }; /** A resource miss, with data `{ uri }`. */ export declare class ResourceNotFoundError extends ProtocolError { constructor(uri: string, message?: string); } export interface McpRequestContext { readonly era: "legacy" | "modern"; readonly requestInfo: Request; } export interface McpHandler { close(): Promise; fetch(request: Request, options?: { readonly parsedBody?: unknown }): Promise; } export declare function fromJsonSchema( schema: Readonly>, ): StandardSchemaWithJSON; export declare function hostHeaderValidationResponse( request: Request, allowedHostnames: readonly string[], ): Response | undefined; export declare function originValidationResponse( request: Request, allowedOriginHostnames: readonly string[], ): Response | undefined; export declare function createMcpHandler( factory: (context: McpRequestContext) => McpServer | Server | Promise, options?: { readonly legacy?: "reject" | "stateless"; readonly onerror?: (error: Error) => void; readonly responseMode?: "auto" | "json" | "stream"; }, ): McpHandler;