@eaperezc/mcpgen 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/errors/McpError.ts","../../src/logging/types.ts","../../src/logging/Logger.ts","../../src/context/RequestContext.ts","../../src/tools/BaseTool.ts","../../src/tools/registry.ts","../../src/resources/BaseResource.ts","../../src/resources/registry.ts","../../src/prompts/BasePrompt.ts","../../src/prompts/registry.ts","../../src/testing/TestClient.ts"],"names":["logger","text"],"mappings":"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","file":"index.js","sourcesContent":["import { McpErrorCode, McpErrorOptions } from './types.js';\n\n/**\n * Base error class for all MCP-related errors\n */\nexport class McpError extends Error {\n public readonly code: McpErrorCode;\n public readonly details?: Record<string, unknown>;\n public readonly timestamp: Date;\n\n constructor(options: McpErrorOptions) {\n super(options.message);\n this.name = 'McpError';\n this.code = options.code;\n this.details = options.details;\n this.timestamp = new Date();\n\n if (options.cause) {\n this.cause = options.cause;\n }\n\n // Maintains proper stack trace for where our error was thrown\n Error.captureStackTrace?.(this, this.constructor);\n }\n\n /**\n * Convert error to a JSON-serializable object\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n details: this.details,\n timestamp: this.timestamp.toISOString(),\n stack: this.stack,\n };\n }\n\n /**\n * Create an error for tool not found\n */\n static toolNotFound(toolName: string): McpError {\n return new McpError({\n code: McpErrorCode.TOOL_NOT_FOUND,\n message: `Tool '${toolName}' not found`,\n details: { toolName },\n });\n }\n\n /**\n * Create an error for resource not found\n */\n static resourceNotFound(uri: string): McpError {\n return new McpError({\n code: McpErrorCode.RESOURCE_NOT_FOUND,\n message: `Resource '${uri}' not found`,\n details: { uri },\n });\n }\n\n /**\n * Create an error for prompt not found\n */\n static promptNotFound(promptName: string): McpError {\n return new McpError({\n code: McpErrorCode.PROMPT_NOT_FOUND,\n message: `Prompt '${promptName}' not found`,\n details: { promptName },\n });\n }\n\n /**\n * Create a validation error\n */\n static validationError(message: string, details?: Record<string, unknown>): McpError {\n return new McpError({\n code: McpErrorCode.VALIDATION_ERROR,\n message,\n details,\n });\n }\n\n /**\n * Create an authentication error\n */\n static authError(\n code:\n | McpErrorCode.AUTH_INVALID_TOKEN\n | McpErrorCode.AUTH_TOKEN_EXPIRED\n | McpErrorCode.AUTH_INSUFFICIENT_SCOPE\n | McpErrorCode.AUTH_MISSING_CREDENTIALS,\n message: string\n ): McpError {\n return new McpError({\n code,\n message,\n });\n }\n\n /**\n * Create an internal error\n */\n static internal(message: string, cause?: Error): McpError {\n return new McpError({\n code: McpErrorCode.INTERNAL_ERROR,\n message,\n cause,\n });\n }\n}\n","/**\n * Log levels in order of severity\n */\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\n/**\n * Log entry structure\n */\nexport interface LogEntry {\n level: LogLevel;\n message: string;\n timestamp: Date;\n correlationId?: string;\n context?: Record<string, unknown>;\n error?: Error;\n}\n\n/**\n * Logger configuration options\n */\nexport interface LoggerConfig {\n /** Minimum log level to output */\n level: LogLevel;\n /** Whether to output in JSON format (for production) */\n json?: boolean;\n /** Whether to include timestamps */\n timestamps?: boolean;\n /** Custom context to include in all logs */\n defaultContext?: Record<string, unknown>;\n /** Pretty print output (for development) */\n pretty?: boolean;\n}\n\n/**\n * Logger transport interface for custom outputs\n */\nexport interface LogTransport {\n log(entry: LogEntry): void;\n}\n\n/**\n * Log level priority for filtering\n */\nexport const LOG_LEVEL_PRIORITY: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n};\n","import pino, { Logger as PinoLogger } from 'pino';\nimport { LogLevel, LoggerConfig, LOG_LEVEL_PRIORITY } from './types.js';\n\n/**\n * Structured logger with support for correlation IDs and contextual logging\n */\nexport class Logger {\n private pino: PinoLogger;\n private config: LoggerConfig;\n private defaultContext: Record<string, unknown>;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = {\n level: config.level ?? 'info',\n json: config.json ?? process.env['NODE_ENV'] === 'production',\n timestamps: config.timestamps ?? true,\n pretty: config.pretty ?? process.env['NODE_ENV'] !== 'production',\n defaultContext: config.defaultContext ?? {},\n };\n\n this.defaultContext = this.config.defaultContext ?? {};\n\n this.pino = pino({\n level: this.config.level,\n transport: this.config.pretty\n ? {\n target: 'pino-pretty',\n options: {\n colorize: true,\n translateTime: 'SYS:standard',\n ignore: 'pid,hostname',\n },\n }\n : undefined,\n formatters: {\n level: (label) => ({ level: label }),\n },\n timestamp: this.config.timestamps ? pino.stdTimeFunctions.isoTime : false,\n });\n }\n\n /**\n * Check if a log level should be output\n */\n private shouldLog(level: LogLevel): boolean {\n return LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[this.config.level];\n }\n\n /**\n * Create a child logger with additional context\n */\n child(context: Record<string, unknown>): Logger {\n const child = new Logger(this.config);\n child.defaultContext = { ...this.defaultContext, ...context };\n child.pino = this.pino.child(context);\n return child;\n }\n\n /**\n * Log a debug message\n */\n debug(message: string, context?: Record<string, unknown>): void {\n if (this.shouldLog('debug')) {\n this.pino.debug({ ...this.defaultContext, ...context }, message);\n }\n }\n\n /**\n * Log an info message\n */\n info(message: string, context?: Record<string, unknown>): void {\n if (this.shouldLog('info')) {\n this.pino.info({ ...this.defaultContext, ...context }, message);\n }\n }\n\n /**\n * Log a warning message\n */\n warn(message: string, context?: Record<string, unknown>): void {\n if (this.shouldLog('warn')) {\n this.pino.warn({ ...this.defaultContext, ...context }, message);\n }\n }\n\n /**\n * Log an error message\n */\n error(message: string, error?: Error | Record<string, unknown>): void {\n if (this.shouldLog('error')) {\n if (error instanceof Error) {\n this.pino.error(\n {\n ...this.defaultContext,\n err: {\n message: error.message,\n name: error.name,\n stack: error.stack,\n },\n },\n message\n );\n } else {\n this.pino.error({ ...this.defaultContext, ...error }, message);\n }\n }\n }\n\n /**\n * Log with correlation ID for request tracing\n */\n withCorrelationId(correlationId: string): Logger {\n return this.child({ correlationId });\n }\n\n /**\n * Set the log level\n */\n setLevel(level: LogLevel): void {\n this.config.level = level;\n this.pino.level = level;\n }\n\n /**\n * Get the current log level\n */\n getLevel(): LogLevel {\n return this.config.level;\n }\n}\n\n/**\n * Default logger instance\n */\nexport const logger = new Logger();\n","import { AsyncLocalStorage } from 'node:async_hooks';\nimport { randomUUID } from 'node:crypto';\nimport { Logger, logger as defaultLogger } from '../logging/index.js';\nimport { RequestContextData, AuthContext } from './types.js';\n\n/**\n * AsyncLocalStorage instance for request-scoped context\n */\nconst asyncLocalStorage = new AsyncLocalStorage<RequestContextData>();\n\n/**\n * Create a new request context\n */\nexport function createRequestContext(\n correlationId?: string,\n logger?: Logger\n): RequestContextData {\n const id = correlationId ?? randomUUID();\n const contextLogger = (logger ?? defaultLogger).withCorrelationId(id);\n\n return {\n correlationId: id,\n startTime: new Date(),\n logger: contextLogger,\n custom: new Map(),\n };\n}\n\n/**\n * Run a function within a request context\n */\nexport function runInRequestContext<T>(\n fn: () => T,\n context?: RequestContextData\n): T {\n const ctx = context ?? createRequestContext();\n return asyncLocalStorage.run(ctx, fn);\n}\n\n/**\n * Run an async function within a request context\n */\nexport async function runInRequestContextAsync<T>(\n fn: () => Promise<T>,\n context?: RequestContextData\n): Promise<T> {\n const ctx = context ?? createRequestContext();\n return asyncLocalStorage.run(ctx, fn);\n}\n\n/**\n * Get the current request context\n * @returns The current context or undefined if not in a context\n */\nexport function getRequestContext(): RequestContextData | undefined {\n return asyncLocalStorage.getStore();\n}\n\n/**\n * Get the current request context or throw if not in a context\n */\nexport function requireRequestContext(): RequestContextData {\n const context = getRequestContext();\n if (!context) {\n throw new Error('No request context available. Ensure code is running within runInRequestContext.');\n }\n return context;\n}\n\n/**\n * Get the correlation ID from current context\n */\nexport function getCorrelationId(): string | undefined {\n return getRequestContext()?.correlationId;\n}\n\n/**\n * Get the logger from current context\n */\nexport function getContextLogger(): Logger {\n return getRequestContext()?.logger ?? defaultLogger;\n}\n\n/**\n * Set authentication context for current request\n */\nexport function setAuthContext(auth: AuthContext): void {\n const context = requireRequestContext();\n context.auth = auth;\n}\n\n/**\n * Get authentication context from current request\n */\nexport function getAuthContext(): AuthContext | undefined {\n return getRequestContext()?.auth;\n}\n\n/**\n * Set a custom value in the context\n */\nexport function setContextValue<T>(key: string, value: T): void {\n const context = requireRequestContext();\n context.custom.set(key, value);\n}\n\n/**\n * Get a custom value from the context\n */\nexport function getContextValue<T>(key: string): T | undefined {\n return getRequestContext()?.custom.get(key) as T | undefined;\n}\n\n/**\n * Get the request duration in milliseconds\n */\nexport function getRequestDuration(): number | undefined {\n const context = getRequestContext();\n if (!context) return undefined;\n return Date.now() - context.startTime.getTime();\n}\n","import { z } from 'zod';\nimport { ToolResult, ToolMetadata } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\nimport { getContextLogger } from '../context/index.js';\n\n/**\n * Base class for defining MCP tools\n *\n * @example\n * ```typescript\n * class GreetTool extends BaseTool {\n * name = 'greet';\n * description = 'Greets a user';\n * schema = z.object({\n * name: z.string().describe('Name to greet'),\n * });\n *\n * async execute(input: z.infer<typeof this.schema>): Promise<ToolResult> {\n * return { content: { greeting: `Hello, ${input.name}!` } };\n * }\n * }\n * ```\n */\nexport abstract class BaseTool<TSchema extends z.ZodType = z.ZodType> {\n /** Unique tool name */\n abstract readonly name: string;\n\n /** Human-readable description of what the tool does */\n abstract readonly description: string;\n\n /** Zod schema for input validation */\n abstract readonly schema: TSchema;\n\n /** Required scopes for this tool (optional) */\n readonly scopes: string[] = [];\n\n /**\n * Execute the tool with validated input\n */\n abstract execute(input: z.infer<TSchema>): Promise<ToolResult> | ToolResult;\n\n /**\n * Validate and execute the tool\n */\n async run(input: unknown): Promise<ToolResult> {\n const logger = getContextLogger();\n\n // Validate input\n const parseResult = this.schema.safeParse(input);\n if (!parseResult.success) {\n const errors = parseResult.error.errors.map((e) => ({\n path: e.path.join('.'),\n message: e.message,\n }));\n\n logger.warn('Tool input validation failed', {\n tool: this.name,\n errors,\n });\n\n throw new McpError({\n code: McpErrorCode.TOOL_VALIDATION_ERROR,\n message: `Invalid input for tool '${this.name}'`,\n details: { errors },\n });\n }\n\n try {\n logger.debug('Executing tool', { tool: this.name });\n const result = await this.execute(parseResult.data);\n logger.debug('Tool executed successfully', { tool: this.name });\n return result;\n } catch (error) {\n if (error instanceof McpError) {\n throw error;\n }\n\n logger.error('Tool execution failed', error instanceof Error ? error : undefined);\n\n throw new McpError({\n code: McpErrorCode.TOOL_EXECUTION_ERROR,\n message: `Tool '${this.name}' execution failed: ${error instanceof Error ? error.message : 'Unknown error'}`,\n cause: error instanceof Error ? error : undefined,\n });\n }\n }\n\n /**\n * Get tool metadata for registration\n */\n getMetadata(): ToolMetadata {\n return {\n name: this.name,\n description: this.description,\n inputSchema: this.schema,\n scopes: this.scopes,\n };\n }\n\n /**\n * Convert schema to JSON Schema format for MCP protocol\n */\n getJsonSchema(): Record<string, unknown> {\n // Use zod's built-in JSON schema conversion if available\n // Otherwise, provide a basic conversion\n return zodToJsonSchema(this.schema);\n }\n}\n\n/**\n * Convert Zod schema to JSON Schema (basic implementation)\n * Uses internal Zod properties - cast to any for access\n */\nfunction zodToJsonSchema(schema: z.ZodType): Record<string, unknown> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const def = schema._def as any;\n const typeName = def.typeName as string | undefined;\n\n if (typeName === 'ZodObject') {\n const shape = (schema as z.ZodObject<z.ZodRawShape>).shape;\n const properties: Record<string, unknown> = {};\n const required: string[] = [];\n\n for (const [key, value] of Object.entries(shape)) {\n const zodValue = value as z.ZodType;\n properties[key] = zodToJsonSchema(zodValue);\n\n // Check if required (not optional)\n if (!zodValue.isOptional()) {\n required.push(key);\n }\n }\n\n return {\n type: 'object',\n properties,\n required: required.length > 0 ? required : undefined,\n };\n }\n\n if (typeName === 'ZodString') {\n const result: Record<string, unknown> = { type: 'string' };\n if (def.description) result['description'] = def.description;\n return result;\n }\n\n if (typeName === 'ZodNumber') {\n const result: Record<string, unknown> = { type: 'number' };\n if (def.description) result['description'] = def.description;\n return result;\n }\n\n if (typeName === 'ZodBoolean') {\n const result: Record<string, unknown> = { type: 'boolean' };\n if (def.description) result['description'] = def.description;\n return result;\n }\n\n if (typeName === 'ZodArray') {\n return {\n type: 'array',\n items: zodToJsonSchema(def.type),\n };\n }\n\n if (typeName === 'ZodOptional') {\n return zodToJsonSchema(def.innerType);\n }\n\n if (typeName === 'ZodDefault') {\n const inner = zodToJsonSchema(def.innerType);\n return { ...inner, default: def.defaultValue() };\n }\n\n // Fallback\n return {};\n}\n","import { BaseTool } from './BaseTool.js';\nimport { InlineToolDefinition, ToolHandler, ToolResult } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\nimport { z } from 'zod';\n\n/**\n * Wrapper for inline tool definitions\n */\nclass InlineTool<TSchema extends z.ZodType> extends BaseTool<TSchema> {\n readonly name: string;\n readonly description: string;\n readonly schema: TSchema;\n readonly scopes: string[];\n private handler: ToolHandler<z.infer<TSchema>>;\n\n constructor(name: string, definition: InlineToolDefinition<TSchema>) {\n super();\n this.name = name;\n this.description = definition.description;\n this.schema = definition.schema;\n this.scopes = definition.scopes ?? [];\n this.handler = definition.handler;\n }\n\n async execute(input: z.infer<TSchema>): Promise<ToolResult> {\n return this.handler(input);\n }\n}\n\n/**\n * Registry for managing tools\n */\nexport class ToolRegistry {\n private tools: Map<string, BaseTool> = new Map();\n\n /**\n * Register a tool instance\n */\n register(tool: BaseTool): void {\n if (this.tools.has(tool.name)) {\n throw new McpError({\n code: McpErrorCode.TOOL_ALREADY_REGISTERED,\n message: `Tool '${tool.name}' is already registered`,\n details: { toolName: tool.name },\n });\n }\n this.tools.set(tool.name, tool);\n }\n\n /**\n * Register an inline tool definition\n */\n registerInline<TSchema extends z.ZodType>(\n name: string,\n definition: InlineToolDefinition<TSchema>\n ): void {\n const tool = new InlineTool(name, definition);\n this.register(tool);\n }\n\n /**\n * Get a tool by name\n */\n get(name: string): BaseTool | undefined {\n return this.tools.get(name);\n }\n\n /**\n * Get a tool by name or throw if not found\n */\n getOrThrow(name: string): BaseTool {\n const tool = this.tools.get(name);\n if (!tool) {\n throw McpError.toolNotFound(name);\n }\n return tool;\n }\n\n /**\n * Check if a tool exists\n */\n has(name: string): boolean {\n return this.tools.has(name);\n }\n\n /**\n * Remove a tool\n */\n remove(name: string): boolean {\n return this.tools.delete(name);\n }\n\n /**\n * Get all registered tools\n */\n getAll(): BaseTool[] {\n return Array.from(this.tools.values());\n }\n\n /**\n * Get all tool names\n */\n getNames(): string[] {\n return Array.from(this.tools.keys());\n }\n\n /**\n * Get the number of registered tools\n */\n get size(): number {\n return this.tools.size;\n }\n\n /**\n * Clear all tools\n */\n clear(): void {\n this.tools.clear();\n }\n}\n","import { ResourceResult, ResourceMetadata, ResourceContent } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\nimport { getContextLogger } from '../context/index.js';\n\n/**\n * Base class for defining MCP resources\n *\n * @example\n * ```typescript\n * class ConfigResource extends BaseResource {\n * uri = 'config://app';\n * name = 'App Configuration';\n * description = 'Application configuration settings';\n *\n * async read(): Promise<ResourceResult> {\n * const config = await loadConfig();\n * return {\n * contents: [{ type: 'text', text: JSON.stringify(config, null, 2) }]\n * };\n * }\n * }\n * ```\n */\nexport abstract class BaseResource {\n /** Unique resource URI */\n abstract readonly uri: string;\n\n /** Human-readable name */\n abstract readonly name: string;\n\n /** Description of the resource */\n readonly description?: string;\n\n /** MIME type of the resource content */\n readonly mimeType?: string = 'text/plain';\n\n /** Required scopes for this resource (optional) */\n readonly scopes: string[] = [];\n\n /**\n * Read the resource content\n */\n abstract read(): Promise<ResourceResult> | ResourceResult;\n\n /**\n * Safely read the resource with error handling\n */\n async safeRead(): Promise<ResourceResult> {\n const logger = getContextLogger();\n\n try {\n logger.debug('Reading resource', { uri: this.uri });\n const result = await this.read();\n logger.debug('Resource read successfully', { uri: this.uri });\n return result;\n } catch (error) {\n if (error instanceof McpError) {\n throw error;\n }\n\n logger.error('Resource read failed', error instanceof Error ? error : undefined);\n\n throw new McpError({\n code: McpErrorCode.RESOURCE_READ_ERROR,\n message: `Failed to read resource '${this.uri}': ${error instanceof Error ? error.message : 'Unknown error'}`,\n cause: error instanceof Error ? error : undefined,\n details: { uri: this.uri },\n });\n }\n }\n\n /**\n * Get resource metadata for registration\n */\n getMetadata(): ResourceMetadata {\n return {\n uri: this.uri,\n name: this.name,\n description: this.description,\n mimeType: this.mimeType,\n scopes: this.scopes,\n };\n }\n\n /**\n * Helper to create text content\n */\n protected text(content: string): ResourceContent {\n return { type: 'text', text: content };\n }\n\n /**\n * Helper to create JSON content\n */\n protected json(data: unknown): ResourceContent {\n return { type: 'text', text: JSON.stringify(data, null, 2) };\n }\n\n /**\n * Helper to create blob content\n */\n protected blob(data: string, mimeType: string): ResourceContent {\n return { type: 'blob', data, mimeType };\n }\n}\n","import { BaseResource } from './BaseResource.js';\nimport { InlineResourceDefinition, ResourceHandler, ResourceResult } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\n\n/**\n * Wrapper for inline resource definitions\n */\nclass InlineResource extends BaseResource {\n readonly uri: string;\n readonly name: string;\n readonly description?: string;\n readonly mimeType?: string;\n readonly scopes: string[];\n private handler: ResourceHandler;\n\n constructor(uri: string, definition: InlineResourceDefinition) {\n super();\n this.uri = uri;\n this.name = definition.name;\n this.description = definition.description;\n this.mimeType = definition.mimeType;\n this.scopes = definition.scopes ?? [];\n this.handler = definition.read;\n }\n\n async read(): Promise<ResourceResult> {\n return this.handler();\n }\n}\n\n/**\n * Registry for managing resources\n */\nexport class ResourceRegistry {\n private resources: Map<string, BaseResource> = new Map();\n\n /**\n * Register a resource instance\n */\n register(resource: BaseResource): void {\n if (this.resources.has(resource.uri)) {\n throw new McpError({\n code: McpErrorCode.RESOURCE_ALREADY_REGISTERED,\n message: `Resource '${resource.uri}' is already registered`,\n details: { uri: resource.uri },\n });\n }\n this.resources.set(resource.uri, resource);\n }\n\n /**\n * Register an inline resource definition\n */\n registerInline(uri: string, definition: InlineResourceDefinition): void {\n const resource = new InlineResource(uri, definition);\n this.register(resource);\n }\n\n /**\n * Get a resource by URI\n */\n get(uri: string): BaseResource | undefined {\n return this.resources.get(uri);\n }\n\n /**\n * Get a resource by URI or throw if not found\n */\n getOrThrow(uri: string): BaseResource {\n const resource = this.resources.get(uri);\n if (!resource) {\n throw McpError.resourceNotFound(uri);\n }\n return resource;\n }\n\n /**\n * Check if a resource exists\n */\n has(uri: string): boolean {\n return this.resources.has(uri);\n }\n\n /**\n * Remove a resource\n */\n remove(uri: string): boolean {\n return this.resources.delete(uri);\n }\n\n /**\n * Get all registered resources\n */\n getAll(): BaseResource[] {\n return Array.from(this.resources.values());\n }\n\n /**\n * Get all resource URIs\n */\n getUris(): string[] {\n return Array.from(this.resources.keys());\n }\n\n /**\n * Get the number of registered resources\n */\n get size(): number {\n return this.resources.size;\n }\n\n /**\n * Clear all resources\n */\n clear(): void {\n this.resources.clear();\n }\n}\n","import { z } from 'zod';\nimport { PromptResult, PromptMetadata, PromptMessage, PromptArgumentMetadata } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\nimport { getContextLogger } from '../context/index.js';\n\n/**\n * Base class for defining MCP prompts\n *\n * @example\n * ```typescript\n * class SummarizePrompt extends BasePrompt {\n * name = 'summarize';\n * description = 'Summarize a piece of text';\n *\n * arguments = z.object({\n * text: z.string().describe('Text to summarize'),\n * style: z.enum(['brief', 'detailed']).optional().describe('Summary style'),\n * });\n *\n * async render(args: z.infer<typeof this.arguments>): Promise<PromptResult> {\n * const style = args.style ?? 'brief';\n * return {\n * messages: [{\n * role: 'user',\n * content: `Please provide a ${style} summary of the following text:\\n\\n${args.text}`\n * }]\n * };\n * }\n * }\n * ```\n */\nexport abstract class BasePrompt<TArgs extends z.ZodType = z.ZodType> {\n /** Unique prompt name */\n abstract readonly name: string;\n\n /** Human-readable description */\n readonly description?: string;\n\n /** Zod schema for arguments validation */\n readonly arguments?: TArgs;\n\n /** Required scopes for this prompt (optional) */\n readonly scopes: string[] = [];\n\n /**\n * Render the prompt with given arguments\n */\n abstract render(args: z.infer<TArgs>): Promise<PromptResult> | PromptResult;\n\n /**\n * Validate arguments and render the prompt\n */\n async safeRender(args: unknown): Promise<PromptResult> {\n const logger = getContextLogger();\n\n // Validate arguments if schema is defined\n if (this.arguments) {\n const parseResult = this.arguments.safeParse(args);\n if (!parseResult.success) {\n const errors = parseResult.error.errors.map((e) => ({\n path: e.path.join('.'),\n message: e.message,\n }));\n\n logger.warn('Prompt argument validation failed', {\n prompt: this.name,\n errors,\n });\n\n throw new McpError({\n code: McpErrorCode.VALIDATION_ERROR,\n message: `Invalid arguments for prompt '${this.name}'`,\n details: { errors },\n });\n }\n args = parseResult.data;\n }\n\n try {\n logger.debug('Rendering prompt', { prompt: this.name });\n const result = await this.render(args as z.infer<TArgs>);\n logger.debug('Prompt rendered successfully', { prompt: this.name });\n return result;\n } catch (error) {\n if (error instanceof McpError) {\n throw error;\n }\n\n logger.error('Prompt render failed', error instanceof Error ? error : undefined);\n\n throw new McpError({\n code: McpErrorCode.PROMPT_RENDER_ERROR,\n message: `Failed to render prompt '${this.name}': ${error instanceof Error ? error.message : 'Unknown error'}`,\n cause: error instanceof Error ? error : undefined,\n details: { promptName: this.name },\n });\n }\n }\n\n /**\n * Get prompt metadata for registration\n */\n getMetadata(): PromptMetadata {\n return {\n name: this.name,\n description: this.description,\n arguments: this.getArgumentsMetadata(),\n scopes: this.scopes,\n };\n }\n\n /**\n * Get arguments metadata from schema\n */\n private getArgumentsMetadata(): PromptArgumentMetadata[] {\n if (!this.arguments) return [];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const def = this.arguments._def as any;\n if (def.typeName !== 'ZodObject') return [];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const shape = (this.arguments as unknown as z.ZodObject<z.ZodRawShape>).shape;\n const result: PromptArgumentMetadata[] = [];\n\n for (const [name, value] of Object.entries(shape)) {\n const zodValue = value as z.ZodType;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const zodDef = zodValue._def as any;\n result.push({\n name,\n description: zodDef.description,\n required: !zodValue.isOptional(),\n });\n }\n\n return result;\n }\n\n /**\n * Helper to create a user message\n */\n protected user(content: string): PromptMessage {\n return { role: 'user', content };\n }\n\n /**\n * Helper to create an assistant message\n */\n protected assistant(content: string): PromptMessage {\n return { role: 'assistant', content };\n }\n}\n","import { z } from 'zod';\nimport { BasePrompt } from './BasePrompt.js';\nimport { InlinePromptDefinition, PromptHandler, PromptResult } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\n\n/**\n * Wrapper for inline prompt definitions\n */\nclass InlinePrompt<TArgs extends z.ZodType> extends BasePrompt<TArgs> {\n readonly name: string;\n readonly description?: string;\n readonly arguments?: TArgs;\n readonly scopes: string[];\n private handler: PromptHandler<z.infer<TArgs>>;\n\n constructor(name: string, definition: InlinePromptDefinition<TArgs>) {\n super();\n this.name = name;\n this.description = definition.description;\n this.arguments = definition.arguments;\n this.scopes = definition.scopes ?? [];\n this.handler = definition.render;\n }\n\n async render(args: z.infer<TArgs>): Promise<PromptResult> {\n return this.handler(args);\n }\n}\n\n/**\n * Registry for managing prompts\n */\nexport class PromptRegistry {\n private prompts: Map<string, BasePrompt> = new Map();\n\n /**\n * Register a prompt instance\n */\n register(prompt: BasePrompt): void {\n if (this.prompts.has(prompt.name)) {\n throw new McpError({\n code: McpErrorCode.PROMPT_ALREADY_REGISTERED,\n message: `Prompt '${prompt.name}' is already registered`,\n details: { promptName: prompt.name },\n });\n }\n this.prompts.set(prompt.name, prompt);\n }\n\n /**\n * Register an inline prompt definition\n */\n registerInline<TArgs extends z.ZodType>(\n name: string,\n definition: InlinePromptDefinition<TArgs>\n ): void {\n const prompt = new InlinePrompt(name, definition);\n this.register(prompt);\n }\n\n /**\n * Get a prompt by name\n */\n get(name: string): BasePrompt | undefined {\n return this.prompts.get(name);\n }\n\n /**\n * Get a prompt by name or throw if not found\n */\n getOrThrow(name: string): BasePrompt {\n const prompt = this.prompts.get(name);\n if (!prompt) {\n throw McpError.promptNotFound(name);\n }\n return prompt;\n }\n\n /**\n * Check if a prompt exists\n */\n has(name: string): boolean {\n return this.prompts.has(name);\n }\n\n /**\n * Remove a prompt\n */\n remove(name: string): boolean {\n return this.prompts.delete(name);\n }\n\n /**\n * Get all registered prompts\n */\n getAll(): BasePrompt[] {\n return Array.from(this.prompts.values());\n }\n\n /**\n * Get all prompt names\n */\n getNames(): string[] {\n return Array.from(this.prompts.keys());\n }\n\n /**\n * Get the number of registered prompts\n */\n get size(): number {\n return this.prompts.size;\n }\n\n /**\n * Clear all prompts\n */\n clear(): void {\n this.prompts.clear();\n }\n}\n","import { z } from 'zod';\nimport { BaseTool, ToolRegistry } from '../tools/index.js';\nimport { BaseResource, ResourceRegistry, ResourceResult } from '../resources/index.js';\nimport { BasePrompt, PromptRegistry, PromptResult } from '../prompts/index.js';\nimport { McpServer } from '../server/index.js';\nimport { runInRequestContextAsync, createRequestContext, setAuthContext } from '../context/index.js';\nimport { Logger } from '../logging/index.js';\nimport {\n TestClientConfig,\n TestToolResult,\n TestResourceResult,\n TestPromptResult,\n MockToolConfig,\n MockResourceConfig,\n MockPromptConfig,\n} from './types.js';\n\n/**\n * Mock tool implementation for testing\n */\nclass MockTool extends BaseTool {\n readonly name: string;\n readonly description: string;\n readonly schema = z.object({}).passthrough();\n\n private response?: unknown;\n private error?: Error;\n private customHandler?: (input: unknown) => Promise<unknown> | unknown;\n\n constructor(config: MockToolConfig) {\n super();\n this.name = config.name;\n this.description = config.description ?? `Mock tool: ${config.name}`;\n this.response = config.response;\n this.error = config.error;\n this.customHandler = config.handler;\n }\n\n async execute(input: unknown) {\n if (this.error) {\n throw this.error;\n }\n if (this.customHandler) {\n const result = await this.customHandler(input);\n return { content: result };\n }\n return { content: this.response ?? { success: true } };\n }\n}\n\n/**\n * Mock resource implementation for testing\n */\nclass MockResource extends BaseResource {\n readonly uri: string;\n readonly name: string;\n\n private content?: string | unknown;\n private error?: Error;\n private customHandler?: () => Promise<unknown> | unknown;\n\n constructor(config: MockResourceConfig) {\n super();\n this.uri = config.uri;\n this.name = config.name ?? `Mock resource: ${config.uri}`;\n this.content = config.content;\n this.error = config.error;\n this.customHandler = config.handler;\n }\n\n async read(): Promise<ResourceResult> {\n if (this.error) {\n throw this.error;\n }\n if (this.customHandler) {\n const result = await this.customHandler();\n const text = typeof result === 'string' ? result : JSON.stringify(result);\n return { contents: [{ type: 'text', text }] };\n }\n const text = typeof this.content === 'string' ? this.content : JSON.stringify(this.content ?? {});\n return { contents: [{ type: 'text', text }] };\n }\n}\n\n/**\n * Mock prompt implementation for testing\n */\nclass MockPrompt extends BasePrompt {\n readonly name: string;\n readonly description?: string;\n readonly arguments = z.object({}).passthrough();\n\n private messages?: Array<{ role: 'user' | 'assistant'; content: string }>;\n private error?: Error;\n private customHandler?: (args: unknown) => Promise<PromptResult> | PromptResult;\n\n constructor(config: MockPromptConfig) {\n super();\n this.name = config.name;\n this.description = config.description;\n this.messages = config.messages;\n this.error = config.error;\n this.customHandler = config.handler;\n }\n\n async render(args: unknown): Promise<PromptResult> {\n if (this.error) {\n throw this.error;\n }\n if (this.customHandler) {\n return this.customHandler(args);\n }\n return {\n messages: this.messages ?? [{ role: 'user', content: 'Mock prompt' }],\n };\n }\n}\n\n/**\n * In-memory test client for testing MCP servers\n *\n * @example\n * ```typescript\n * import { describe, it, expect } from 'vitest';\n * import { createTestClient } from 'mcpkit/testing';\n * import { GreetTool } from './tools/GreetTool';\n *\n * describe('GreetTool', () => {\n * it('should greet the user', async () => {\n * const client = createTestClient();\n * client.registerTool(new GreetTool());\n *\n * const result = await client.callTool('greet', { name: 'Alice' });\n * expect(result.content).toEqual({ greeting: 'Hello, Alice!' });\n * });\n * });\n * ```\n */\nexport class TestClient {\n private toolRegistry = new ToolRegistry();\n private resourceRegistry = new ResourceRegistry();\n private promptRegistry = new PromptRegistry();\n private config: TestClientConfig;\n private logger: Logger;\n\n constructor(config: TestClientConfig = {}) {\n this.config = config;\n this.logger = new Logger({\n level: config.debug ? 'debug' : 'error',\n pretty: true,\n });\n }\n\n /**\n * Create a test client from an existing McpServer\n */\n static fromServer(server: McpServer, config?: TestClientConfig): TestClient {\n const client = new TestClient(config);\n\n // Copy registries from server\n for (const tool of server.getToolRegistry().getAll()) {\n client.toolRegistry.register(tool);\n }\n for (const resource of server.getResourceRegistry().getAll()) {\n client.resourceRegistry.register(resource);\n }\n for (const prompt of server.getPromptRegistry().getAll()) {\n client.promptRegistry.register(prompt);\n }\n\n return client;\n }\n\n /**\n * Register a tool for testing\n */\n registerTool(tool: BaseTool): this {\n this.toolRegistry.register(tool);\n return this;\n }\n\n /**\n * Register a resource for testing\n */\n registerResource(resource: BaseResource): this {\n this.resourceRegistry.register(resource);\n return this;\n }\n\n /**\n * Register a prompt for testing\n */\n registerPrompt(prompt: BasePrompt): this {\n this.promptRegistry.register(prompt);\n return this;\n }\n\n /**\n * Register a mock tool\n */\n mockTool(config: MockToolConfig): this {\n this.toolRegistry.register(new MockTool(config));\n return this;\n }\n\n /**\n * Register a mock resource\n */\n mockResource(config: MockResourceConfig): this {\n this.resourceRegistry.register(new MockResource(config));\n return this;\n }\n\n /**\n * Register a mock prompt\n */\n mockPrompt(config: MockPromptConfig): this {\n this.promptRegistry.register(new MockPrompt(config));\n return this;\n }\n\n /**\n * Call a tool\n */\n async callTool(name: string, input?: unknown): Promise<TestToolResult> {\n return runInRequestContextAsync(async () => {\n if (this.config.auth) {\n setAuthContext(this.config.auth);\n }\n\n const tool = this.toolRegistry.getOrThrow(name);\n return tool.run(input ?? {});\n }, createRequestContext(undefined, this.logger));\n }\n\n /**\n * Read a resource\n */\n async readResource(uri: string): Promise<TestResourceResult> {\n return runInRequestContextAsync(async () => {\n if (this.config.auth) {\n setAuthContext(this.config.auth);\n }\n\n const resource = this.resourceRegistry.getOrThrow(uri);\n return resource.safeRead();\n }, createRequestContext(undefined, this.logger));\n }\n\n /**\n * Render a prompt\n */\n async renderPrompt(name: string, args?: unknown): Promise<TestPromptResult> {\n return runInRequestContextAsync(async () => {\n if (this.config.auth) {\n setAuthContext(this.config.auth);\n }\n\n const prompt = this.promptRegistry.getOrThrow(name);\n return prompt.safeRender(args ?? {});\n }, createRequestContext(undefined, this.logger));\n }\n\n /**\n * List all registered tools\n */\n listTools(): string[] {\n return this.toolRegistry.getNames();\n }\n\n /**\n * List all registered resources\n */\n listResources(): string[] {\n return this.resourceRegistry.getUris();\n }\n\n /**\n * List all registered prompts\n */\n listPrompts(): string[] {\n return this.promptRegistry.getNames();\n }\n\n /**\n * Check if a tool exists\n */\n hasTool(name: string): boolean {\n return this.toolRegistry.has(name);\n }\n\n /**\n * Check if a resource exists\n */\n hasResource(uri: string): boolean {\n return this.resourceRegistry.has(uri);\n }\n\n /**\n * Check if a prompt exists\n */\n hasPrompt(name: string): boolean {\n return this.promptRegistry.has(name);\n }\n\n /**\n * Clear all registered items\n */\n clear(): this {\n this.toolRegistry.clear();\n this.resourceRegistry.clear();\n this.promptRegistry.clear();\n return this;\n }\n}\n\n/**\n * Create a new test client\n */\nexport function createTestClient(config?: TestClientConfig): TestClient {\n return new TestClient(config);\n}\n"]}
1
+ {"version":3,"sources":["../../src/errors/McpError.ts","../../src/logging/types.ts","../../src/logging/Logger.ts","../../src/context/RequestContext.ts","../../src/tools/BaseTool.ts","../../src/tools/registry.ts","../../src/resources/BaseResource.ts","../../src/resources/registry.ts","../../src/prompts/BasePrompt.ts","../../src/prompts/registry.ts","../../src/testing/TestClient.ts"],"names":["logger","text"],"mappings":"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","file":"index.js","sourcesContent":["import { McpErrorCode, McpErrorOptions } from './types.js';\n\n/**\n * Base error class for all MCP-related errors\n */\nexport class McpError extends Error {\n public readonly code: McpErrorCode;\n public readonly details?: Record<string, unknown>;\n public readonly timestamp: Date;\n\n constructor(options: McpErrorOptions) {\n super(options.message);\n this.name = 'McpError';\n this.code = options.code;\n this.details = options.details;\n this.timestamp = new Date();\n\n if (options.cause) {\n this.cause = options.cause;\n }\n\n // Maintains proper stack trace for where our error was thrown\n Error.captureStackTrace?.(this, this.constructor);\n }\n\n /**\n * Convert error to a JSON-serializable object\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n details: this.details,\n timestamp: this.timestamp.toISOString(),\n stack: this.stack,\n };\n }\n\n /**\n * Create an error for tool not found\n */\n static toolNotFound(toolName: string): McpError {\n return new McpError({\n code: McpErrorCode.TOOL_NOT_FOUND,\n message: `Tool '${toolName}' not found`,\n details: { toolName },\n });\n }\n\n /**\n * Create an error for resource not found\n */\n static resourceNotFound(uri: string): McpError {\n return new McpError({\n code: McpErrorCode.RESOURCE_NOT_FOUND,\n message: `Resource '${uri}' not found`,\n details: { uri },\n });\n }\n\n /**\n * Create an error for prompt not found\n */\n static promptNotFound(promptName: string): McpError {\n return new McpError({\n code: McpErrorCode.PROMPT_NOT_FOUND,\n message: `Prompt '${promptName}' not found`,\n details: { promptName },\n });\n }\n\n /**\n * Create a validation error\n */\n static validationError(message: string, details?: Record<string, unknown>): McpError {\n return new McpError({\n code: McpErrorCode.VALIDATION_ERROR,\n message,\n details,\n });\n }\n\n /**\n * Create an authentication error\n */\n static authError(\n code:\n | McpErrorCode.AUTH_INVALID_TOKEN\n | McpErrorCode.AUTH_TOKEN_EXPIRED\n | McpErrorCode.AUTH_INSUFFICIENT_SCOPE\n | McpErrorCode.AUTH_MISSING_CREDENTIALS,\n message: string\n ): McpError {\n return new McpError({\n code,\n message,\n });\n }\n\n /**\n * Create an internal error\n */\n static internal(message: string, cause?: Error): McpError {\n return new McpError({\n code: McpErrorCode.INTERNAL_ERROR,\n message,\n cause,\n });\n }\n}\n","/**\n * Log levels in order of severity\n */\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\n/**\n * Log entry structure\n */\nexport interface LogEntry {\n level: LogLevel;\n message: string;\n timestamp: Date;\n correlationId?: string;\n context?: Record<string, unknown>;\n error?: Error;\n}\n\n/**\n * Logger configuration options\n */\nexport interface LoggerConfig {\n /** Minimum log level to output */\n level: LogLevel;\n /** Whether to output in JSON format (for production) */\n json?: boolean;\n /** Whether to include timestamps */\n timestamps?: boolean;\n /** Custom context to include in all logs */\n defaultContext?: Record<string, unknown>;\n /** Pretty print output (for development) */\n pretty?: boolean;\n}\n\n/**\n * Logger transport interface for custom outputs\n */\nexport interface LogTransport {\n log(entry: LogEntry): void;\n}\n\n/**\n * Log level priority for filtering\n */\nexport const LOG_LEVEL_PRIORITY: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n};\n","import pino, { Logger as PinoLogger } from 'pino';\nimport { LogLevel, LoggerConfig, LOG_LEVEL_PRIORITY } from './types.js';\n\n/**\n * Structured logger with support for correlation IDs and contextual logging\n */\nexport class Logger {\n private pino: PinoLogger;\n private config: LoggerConfig;\n private defaultContext: Record<string, unknown>;\n\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = {\n level: config.level ?? 'info',\n json: config.json ?? process.env['NODE_ENV'] === 'production',\n timestamps: config.timestamps ?? true,\n pretty: config.pretty ?? process.env['NODE_ENV'] !== 'production',\n defaultContext: config.defaultContext ?? {},\n };\n\n this.defaultContext = this.config.defaultContext ?? {};\n\n this.pino = pino({\n level: this.config.level,\n transport: this.config.pretty\n ? {\n target: 'pino-pretty',\n options: {\n colorize: true,\n translateTime: 'SYS:standard',\n ignore: 'pid,hostname',\n },\n }\n : undefined,\n formatters: {\n level: (label) => ({ level: label }),\n },\n timestamp: this.config.timestamps ? pino.stdTimeFunctions.isoTime : false,\n });\n }\n\n /**\n * Check if a log level should be output\n */\n private shouldLog(level: LogLevel): boolean {\n return LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[this.config.level];\n }\n\n /**\n * Create a child logger with additional context\n */\n child(context: Record<string, unknown>): Logger {\n const child = new Logger(this.config);\n child.defaultContext = { ...this.defaultContext, ...context };\n child.pino = this.pino.child(context);\n return child;\n }\n\n /**\n * Log a debug message\n */\n debug(message: string, context?: Record<string, unknown>): void {\n if (this.shouldLog('debug')) {\n this.pino.debug({ ...this.defaultContext, ...context }, message);\n }\n }\n\n /**\n * Log an info message\n */\n info(message: string, context?: Record<string, unknown>): void {\n if (this.shouldLog('info')) {\n this.pino.info({ ...this.defaultContext, ...context }, message);\n }\n }\n\n /**\n * Log a warning message\n */\n warn(message: string, context?: Record<string, unknown>): void {\n if (this.shouldLog('warn')) {\n this.pino.warn({ ...this.defaultContext, ...context }, message);\n }\n }\n\n /**\n * Log an error message\n */\n error(message: string, error?: Error | Record<string, unknown>): void {\n if (this.shouldLog('error')) {\n if (error instanceof Error) {\n this.pino.error(\n {\n ...this.defaultContext,\n err: {\n message: error.message,\n name: error.name,\n stack: error.stack,\n },\n },\n message\n );\n } else {\n this.pino.error({ ...this.defaultContext, ...error }, message);\n }\n }\n }\n\n /**\n * Log with correlation ID for request tracing\n */\n withCorrelationId(correlationId: string): Logger {\n return this.child({ correlationId });\n }\n\n /**\n * Set the log level\n */\n setLevel(level: LogLevel): void {\n this.config.level = level;\n this.pino.level = level;\n }\n\n /**\n * Get the current log level\n */\n getLevel(): LogLevel {\n return this.config.level;\n }\n}\n\n/**\n * Default logger instance\n */\nexport const logger = new Logger();\n","import { AsyncLocalStorage } from 'node:async_hooks';\nimport { randomUUID } from 'node:crypto';\nimport { Logger, logger as defaultLogger } from '../logging/index.js';\nimport { RequestContextData, AuthContext } from './types.js';\n\n/**\n * AsyncLocalStorage instance for request-scoped context\n */\nconst asyncLocalStorage = new AsyncLocalStorage<RequestContextData>();\n\n/**\n * Create a new request context\n */\nexport function createRequestContext(\n correlationId?: string,\n logger?: Logger\n): RequestContextData {\n const id = correlationId ?? randomUUID();\n const contextLogger = (logger ?? defaultLogger).withCorrelationId(id);\n\n return {\n correlationId: id,\n startTime: new Date(),\n logger: contextLogger,\n custom: new Map(),\n };\n}\n\n/**\n * Run a function within a request context\n */\nexport function runInRequestContext<T>(\n fn: () => T,\n context?: RequestContextData\n): T {\n const ctx = context ?? createRequestContext();\n return asyncLocalStorage.run(ctx, fn);\n}\n\n/**\n * Run an async function within a request context\n */\nexport async function runInRequestContextAsync<T>(\n fn: () => Promise<T>,\n context?: RequestContextData\n): Promise<T> {\n const ctx = context ?? createRequestContext();\n return asyncLocalStorage.run(ctx, fn);\n}\n\n/**\n * Get the current request context\n * @returns The current context or undefined if not in a context\n */\nexport function getRequestContext(): RequestContextData | undefined {\n return asyncLocalStorage.getStore();\n}\n\n/**\n * Get the current request context or throw if not in a context\n */\nexport function requireRequestContext(): RequestContextData {\n const context = getRequestContext();\n if (!context) {\n throw new Error('No request context available. Ensure code is running within runInRequestContext.');\n }\n return context;\n}\n\n/**\n * Get the correlation ID from current context\n */\nexport function getCorrelationId(): string | undefined {\n return getRequestContext()?.correlationId;\n}\n\n/**\n * Get the logger from current context\n */\nexport function getContextLogger(): Logger {\n return getRequestContext()?.logger ?? defaultLogger;\n}\n\n/**\n * Set authentication context for current request\n */\nexport function setAuthContext(auth: AuthContext): void {\n const context = requireRequestContext();\n context.auth = auth;\n}\n\n/**\n * Get authentication context from current request\n */\nexport function getAuthContext(): AuthContext | undefined {\n return getRequestContext()?.auth;\n}\n\n/**\n * Set a custom value in the context\n */\nexport function setContextValue<T>(key: string, value: T): void {\n const context = requireRequestContext();\n context.custom.set(key, value);\n}\n\n/**\n * Get a custom value from the context\n */\nexport function getContextValue<T>(key: string): T | undefined {\n return getRequestContext()?.custom.get(key) as T | undefined;\n}\n\n/**\n * Get the request duration in milliseconds\n */\nexport function getRequestDuration(): number | undefined {\n const context = getRequestContext();\n if (!context) return undefined;\n return Date.now() - context.startTime.getTime();\n}\n","import { z } from 'zod';\nimport { ToolResult, ToolMetadata } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\nimport { getContextLogger } from '../context/index.js';\n\n/**\n * Base class for defining MCP tools\n *\n * @example\n * ```typescript\n * class GreetTool extends BaseTool {\n * name = 'greet';\n * description = 'Greets a user';\n * schema = z.object({\n * name: z.string().describe('Name to greet'),\n * });\n *\n * async execute(input: z.infer<typeof this.schema>): Promise<ToolResult> {\n * return { content: { greeting: `Hello, ${input.name}!` } };\n * }\n * }\n * ```\n */\nexport abstract class BaseTool<TSchema extends z.ZodType = z.ZodType> {\n /** Unique tool name */\n abstract readonly name: string;\n\n /** Human-readable description of what the tool does */\n abstract readonly description: string;\n\n /** Zod schema for input validation */\n abstract readonly schema: TSchema;\n\n /** Required scopes for this tool (optional) */\n readonly scopes: string[] = [];\n\n /**\n * Execute the tool with validated input\n */\n abstract execute(input: z.infer<TSchema>): Promise<ToolResult> | ToolResult;\n\n /**\n * Validate and execute the tool\n */\n async run(input: unknown): Promise<ToolResult> {\n const logger = getContextLogger();\n\n // Validate input\n const parseResult = this.schema.safeParse(input);\n if (!parseResult.success) {\n const errors = parseResult.error.errors.map((e) => ({\n path: e.path.join('.'),\n message: e.message,\n }));\n\n logger.warn('Tool input validation failed', {\n tool: this.name,\n errors,\n });\n\n throw new McpError({\n code: McpErrorCode.TOOL_VALIDATION_ERROR,\n message: `Invalid input for tool '${this.name}'`,\n details: { errors },\n });\n }\n\n try {\n logger.debug('Executing tool', { tool: this.name });\n const result = await this.execute(parseResult.data);\n logger.debug('Tool executed successfully', { tool: this.name });\n return result;\n } catch (error) {\n if (error instanceof McpError) {\n throw error;\n }\n\n logger.error('Tool execution failed', error instanceof Error ? error : undefined);\n\n throw new McpError({\n code: McpErrorCode.TOOL_EXECUTION_ERROR,\n message: `Tool '${this.name}' execution failed: ${error instanceof Error ? error.message : 'Unknown error'}`,\n cause: error instanceof Error ? error : undefined,\n });\n }\n }\n\n /**\n * Get tool metadata for registration\n */\n getMetadata(): ToolMetadata {\n return {\n name: this.name,\n description: this.description,\n inputSchema: this.schema,\n scopes: this.scopes,\n };\n }\n\n /**\n * Convert schema to JSON Schema format for MCP protocol\n */\n getJsonSchema(): Record<string, unknown> {\n // Use zod's built-in JSON schema conversion if available\n // Otherwise, provide a basic conversion\n return zodToJsonSchema(this.schema);\n }\n}\n\n/**\n * Convert Zod schema to JSON Schema (basic implementation)\n * Uses internal Zod properties - cast to any for access\n */\nfunction zodToJsonSchema(schema: z.ZodType): Record<string, unknown> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const def = schema._def as any;\n const typeName = def.typeName as string | undefined;\n\n if (typeName === 'ZodObject') {\n const shape = (schema as z.ZodObject<z.ZodRawShape>).shape;\n const properties: Record<string, unknown> = {};\n const required: string[] = [];\n\n for (const [key, value] of Object.entries(shape)) {\n const zodValue = value as z.ZodType;\n properties[key] = zodToJsonSchema(zodValue);\n\n // Check if required (not optional)\n if (!zodValue.isOptional()) {\n required.push(key);\n }\n }\n\n return {\n type: 'object',\n properties,\n required: required.length > 0 ? required : undefined,\n };\n }\n\n if (typeName === 'ZodString') {\n const result: Record<string, unknown> = { type: 'string' };\n if (def.description) result['description'] = def.description;\n return result;\n }\n\n if (typeName === 'ZodNumber') {\n const result: Record<string, unknown> = { type: 'number' };\n if (def.description) result['description'] = def.description;\n return result;\n }\n\n if (typeName === 'ZodBoolean') {\n const result: Record<string, unknown> = { type: 'boolean' };\n if (def.description) result['description'] = def.description;\n return result;\n }\n\n if (typeName === 'ZodArray') {\n return {\n type: 'array',\n items: zodToJsonSchema(def.type),\n };\n }\n\n if (typeName === 'ZodOptional') {\n return zodToJsonSchema(def.innerType);\n }\n\n if (typeName === 'ZodDefault') {\n const inner = zodToJsonSchema(def.innerType);\n return { ...inner, default: def.defaultValue() };\n }\n\n // Fallback\n return {};\n}\n","import { BaseTool } from './BaseTool.js';\nimport { InlineToolDefinition, ToolHandler, ToolResult } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\nimport { z } from 'zod';\n\n/**\n * Wrapper for inline tool definitions\n */\nclass InlineTool<TSchema extends z.ZodType> extends BaseTool<TSchema> {\n readonly name: string;\n readonly description: string;\n readonly schema: TSchema;\n readonly scopes: string[];\n private handler: ToolHandler<z.infer<TSchema>>;\n\n constructor(name: string, definition: InlineToolDefinition<TSchema>) {\n super();\n this.name = name;\n this.description = definition.description;\n this.schema = definition.schema;\n this.scopes = definition.scopes ?? [];\n this.handler = definition.handler;\n }\n\n async execute(input: z.infer<TSchema>): Promise<ToolResult> {\n return this.handler(input);\n }\n}\n\n/**\n * Registry for managing tools\n */\nexport class ToolRegistry {\n private tools: Map<string, BaseTool> = new Map();\n\n /**\n * Register a tool instance\n */\n register(tool: BaseTool): void {\n if (this.tools.has(tool.name)) {\n throw new McpError({\n code: McpErrorCode.TOOL_ALREADY_REGISTERED,\n message: `Tool '${tool.name}' is already registered`,\n details: { toolName: tool.name },\n });\n }\n this.tools.set(tool.name, tool);\n }\n\n /**\n * Register an inline tool definition\n */\n registerInline<TSchema extends z.ZodType>(\n name: string,\n definition: InlineToolDefinition<TSchema>\n ): void {\n const tool = new InlineTool(name, definition);\n this.register(tool);\n }\n\n /**\n * Get a tool by name\n */\n get(name: string): BaseTool | undefined {\n return this.tools.get(name);\n }\n\n /**\n * Get a tool by name or throw if not found\n */\n getOrThrow(name: string): BaseTool {\n const tool = this.tools.get(name);\n if (!tool) {\n throw McpError.toolNotFound(name);\n }\n return tool;\n }\n\n /**\n * Check if a tool exists\n */\n has(name: string): boolean {\n return this.tools.has(name);\n }\n\n /**\n * Remove a tool\n */\n remove(name: string): boolean {\n return this.tools.delete(name);\n }\n\n /**\n * Get all registered tools\n */\n getAll(): BaseTool[] {\n return Array.from(this.tools.values());\n }\n\n /**\n * Get all tool names\n */\n getNames(): string[] {\n return Array.from(this.tools.keys());\n }\n\n /**\n * Get the number of registered tools\n */\n get size(): number {\n return this.tools.size;\n }\n\n /**\n * Clear all tools\n */\n clear(): void {\n this.tools.clear();\n }\n}\n","import { ResourceResult, ResourceMetadata, ResourceContent } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\nimport { getContextLogger } from '../context/index.js';\n\n/**\n * Base class for defining MCP resources\n *\n * @example\n * ```typescript\n * class ConfigResource extends BaseResource {\n * uri = 'config://app';\n * name = 'App Configuration';\n * description = 'Application configuration settings';\n *\n * async read(): Promise<ResourceResult> {\n * const config = await loadConfig();\n * return {\n * contents: [{ type: 'text', text: JSON.stringify(config, null, 2) }]\n * };\n * }\n * }\n * ```\n */\nexport abstract class BaseResource {\n /** Unique resource URI */\n abstract readonly uri: string;\n\n /** Human-readable name */\n abstract readonly name: string;\n\n /** Description of the resource */\n readonly description?: string;\n\n /** MIME type of the resource content */\n readonly mimeType?: string = 'text/plain';\n\n /** Required scopes for this resource (optional) */\n readonly scopes: string[] = [];\n\n /**\n * Read the resource content\n */\n abstract read(): Promise<ResourceResult> | ResourceResult;\n\n /**\n * Safely read the resource with error handling\n */\n async safeRead(): Promise<ResourceResult> {\n const logger = getContextLogger();\n\n try {\n logger.debug('Reading resource', { uri: this.uri });\n const result = await this.read();\n logger.debug('Resource read successfully', { uri: this.uri });\n return result;\n } catch (error) {\n if (error instanceof McpError) {\n throw error;\n }\n\n logger.error('Resource read failed', error instanceof Error ? error : undefined);\n\n throw new McpError({\n code: McpErrorCode.RESOURCE_READ_ERROR,\n message: `Failed to read resource '${this.uri}': ${error instanceof Error ? error.message : 'Unknown error'}`,\n cause: error instanceof Error ? error : undefined,\n details: { uri: this.uri },\n });\n }\n }\n\n /**\n * Get resource metadata for registration\n */\n getMetadata(): ResourceMetadata {\n return {\n uri: this.uri,\n name: this.name,\n description: this.description,\n mimeType: this.mimeType,\n scopes: this.scopes,\n };\n }\n\n /**\n * Helper to create text content\n */\n protected text(content: string): ResourceContent {\n return { type: 'text', text: content };\n }\n\n /**\n * Helper to create JSON content\n */\n protected json(data: unknown): ResourceContent {\n return { type: 'text', text: JSON.stringify(data, null, 2) };\n }\n\n /**\n * Helper to create blob content\n */\n protected blob(data: string, mimeType: string): ResourceContent {\n return { type: 'blob', data, mimeType };\n }\n}\n","import { BaseResource } from './BaseResource.js';\nimport { InlineResourceDefinition, ResourceHandler, ResourceResult } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\n\n/**\n * Wrapper for inline resource definitions\n */\nclass InlineResource extends BaseResource {\n readonly uri: string;\n readonly name: string;\n readonly description?: string;\n readonly mimeType?: string;\n readonly scopes: string[];\n private handler: ResourceHandler;\n\n constructor(uri: string, definition: InlineResourceDefinition) {\n super();\n this.uri = uri;\n this.name = definition.name;\n this.description = definition.description;\n this.mimeType = definition.mimeType;\n this.scopes = definition.scopes ?? [];\n this.handler = definition.read;\n }\n\n async read(): Promise<ResourceResult> {\n return this.handler();\n }\n}\n\n/**\n * Registry for managing resources\n */\nexport class ResourceRegistry {\n private resources: Map<string, BaseResource> = new Map();\n\n /**\n * Register a resource instance\n */\n register(resource: BaseResource): void {\n if (this.resources.has(resource.uri)) {\n throw new McpError({\n code: McpErrorCode.RESOURCE_ALREADY_REGISTERED,\n message: `Resource '${resource.uri}' is already registered`,\n details: { uri: resource.uri },\n });\n }\n this.resources.set(resource.uri, resource);\n }\n\n /**\n * Register an inline resource definition\n */\n registerInline(uri: string, definition: InlineResourceDefinition): void {\n const resource = new InlineResource(uri, definition);\n this.register(resource);\n }\n\n /**\n * Get a resource by URI\n */\n get(uri: string): BaseResource | undefined {\n return this.resources.get(uri);\n }\n\n /**\n * Get a resource by URI or throw if not found\n */\n getOrThrow(uri: string): BaseResource {\n const resource = this.resources.get(uri);\n if (!resource) {\n throw McpError.resourceNotFound(uri);\n }\n return resource;\n }\n\n /**\n * Check if a resource exists\n */\n has(uri: string): boolean {\n return this.resources.has(uri);\n }\n\n /**\n * Remove a resource\n */\n remove(uri: string): boolean {\n return this.resources.delete(uri);\n }\n\n /**\n * Get all registered resources\n */\n getAll(): BaseResource[] {\n return Array.from(this.resources.values());\n }\n\n /**\n * Get all resource URIs\n */\n getUris(): string[] {\n return Array.from(this.resources.keys());\n }\n\n /**\n * Get the number of registered resources\n */\n get size(): number {\n return this.resources.size;\n }\n\n /**\n * Clear all resources\n */\n clear(): void {\n this.resources.clear();\n }\n}\n","import { z } from 'zod';\nimport { PromptResult, PromptMetadata, PromptMessage, PromptArgumentMetadata } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\nimport { getContextLogger } from '../context/index.js';\n\n/**\n * Base class for defining MCP prompts\n *\n * @example\n * ```typescript\n * class SummarizePrompt extends BasePrompt {\n * name = 'summarize';\n * description = 'Summarize a piece of text';\n *\n * arguments = z.object({\n * text: z.string().describe('Text to summarize'),\n * style: z.enum(['brief', 'detailed']).optional().describe('Summary style'),\n * });\n *\n * async render(args: z.infer<typeof this.arguments>): Promise<PromptResult> {\n * const style = args.style ?? 'brief';\n * return {\n * messages: [{\n * role: 'user',\n * content: `Please provide a ${style} summary of the following text:\\n\\n${args.text}`\n * }]\n * };\n * }\n * }\n * ```\n */\nexport abstract class BasePrompt<TArgs extends z.ZodType = z.ZodType> {\n /** Unique prompt name */\n abstract readonly name: string;\n\n /** Human-readable description */\n readonly description?: string;\n\n /** Zod schema for arguments validation */\n readonly arguments?: TArgs;\n\n /** Required scopes for this prompt (optional) */\n readonly scopes: string[] = [];\n\n /**\n * Render the prompt with given arguments\n */\n abstract render(args: z.infer<TArgs>): Promise<PromptResult> | PromptResult;\n\n /**\n * Validate arguments and render the prompt\n */\n async safeRender(args: unknown): Promise<PromptResult> {\n const logger = getContextLogger();\n\n // Validate arguments if schema is defined\n if (this.arguments) {\n const parseResult = this.arguments.safeParse(args);\n if (!parseResult.success) {\n const errors = parseResult.error.errors.map((e) => ({\n path: e.path.join('.'),\n message: e.message,\n }));\n\n logger.warn('Prompt argument validation failed', {\n prompt: this.name,\n errors,\n });\n\n throw new McpError({\n code: McpErrorCode.VALIDATION_ERROR,\n message: `Invalid arguments for prompt '${this.name}'`,\n details: { errors },\n });\n }\n args = parseResult.data;\n }\n\n try {\n logger.debug('Rendering prompt', { prompt: this.name });\n const result = await this.render(args as z.infer<TArgs>);\n logger.debug('Prompt rendered successfully', { prompt: this.name });\n return result;\n } catch (error) {\n if (error instanceof McpError) {\n throw error;\n }\n\n logger.error('Prompt render failed', error instanceof Error ? error : undefined);\n\n throw new McpError({\n code: McpErrorCode.PROMPT_RENDER_ERROR,\n message: `Failed to render prompt '${this.name}': ${error instanceof Error ? error.message : 'Unknown error'}`,\n cause: error instanceof Error ? error : undefined,\n details: { promptName: this.name },\n });\n }\n }\n\n /**\n * Get prompt metadata for registration\n */\n getMetadata(): PromptMetadata {\n return {\n name: this.name,\n description: this.description,\n arguments: this.getArgumentsMetadata(),\n scopes: this.scopes,\n };\n }\n\n /**\n * Get arguments metadata from schema\n */\n private getArgumentsMetadata(): PromptArgumentMetadata[] {\n if (!this.arguments) return [];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const def = this.arguments._def as any;\n if (def.typeName !== 'ZodObject') return [];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const shape = (this.arguments as unknown as z.ZodObject<z.ZodRawShape>).shape;\n const result: PromptArgumentMetadata[] = [];\n\n for (const [name, value] of Object.entries(shape)) {\n const zodValue = value as z.ZodType;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const zodDef = zodValue._def as any;\n result.push({\n name,\n description: zodDef.description,\n required: !zodValue.isOptional(),\n });\n }\n\n return result;\n }\n\n /**\n * Helper to create a user message\n */\n protected user(content: string): PromptMessage {\n return { role: 'user', content };\n }\n\n /**\n * Helper to create an assistant message\n */\n protected assistant(content: string): PromptMessage {\n return { role: 'assistant', content };\n }\n}\n","import { z } from 'zod';\nimport { BasePrompt } from './BasePrompt.js';\nimport { InlinePromptDefinition, PromptHandler, PromptResult } from './types.js';\nimport { McpError, McpErrorCode } from '../errors/index.js';\n\n/**\n * Wrapper for inline prompt definitions\n */\nclass InlinePrompt<TArgs extends z.ZodType> extends BasePrompt<TArgs> {\n readonly name: string;\n readonly description?: string;\n readonly arguments?: TArgs;\n readonly scopes: string[];\n private handler: PromptHandler<z.infer<TArgs>>;\n\n constructor(name: string, definition: InlinePromptDefinition<TArgs>) {\n super();\n this.name = name;\n this.description = definition.description;\n this.arguments = definition.arguments;\n this.scopes = definition.scopes ?? [];\n this.handler = definition.render;\n }\n\n async render(args: z.infer<TArgs>): Promise<PromptResult> {\n return this.handler(args);\n }\n}\n\n/**\n * Registry for managing prompts\n */\nexport class PromptRegistry {\n private prompts: Map<string, BasePrompt> = new Map();\n\n /**\n * Register a prompt instance\n */\n register(prompt: BasePrompt): void {\n if (this.prompts.has(prompt.name)) {\n throw new McpError({\n code: McpErrorCode.PROMPT_ALREADY_REGISTERED,\n message: `Prompt '${prompt.name}' is already registered`,\n details: { promptName: prompt.name },\n });\n }\n this.prompts.set(prompt.name, prompt);\n }\n\n /**\n * Register an inline prompt definition\n */\n registerInline<TArgs extends z.ZodType>(\n name: string,\n definition: InlinePromptDefinition<TArgs>\n ): void {\n const prompt = new InlinePrompt(name, definition);\n this.register(prompt);\n }\n\n /**\n * Get a prompt by name\n */\n get(name: string): BasePrompt | undefined {\n return this.prompts.get(name);\n }\n\n /**\n * Get a prompt by name or throw if not found\n */\n getOrThrow(name: string): BasePrompt {\n const prompt = this.prompts.get(name);\n if (!prompt) {\n throw McpError.promptNotFound(name);\n }\n return prompt;\n }\n\n /**\n * Check if a prompt exists\n */\n has(name: string): boolean {\n return this.prompts.has(name);\n }\n\n /**\n * Remove a prompt\n */\n remove(name: string): boolean {\n return this.prompts.delete(name);\n }\n\n /**\n * Get all registered prompts\n */\n getAll(): BasePrompt[] {\n return Array.from(this.prompts.values());\n }\n\n /**\n * Get all prompt names\n */\n getNames(): string[] {\n return Array.from(this.prompts.keys());\n }\n\n /**\n * Get the number of registered prompts\n */\n get size(): number {\n return this.prompts.size;\n }\n\n /**\n * Clear all prompts\n */\n clear(): void {\n this.prompts.clear();\n }\n}\n","import { z } from 'zod';\nimport { BaseTool, ToolRegistry } from '../tools/index.js';\nimport { BaseResource, ResourceRegistry, ResourceResult } from '../resources/index.js';\nimport { BasePrompt, PromptRegistry, PromptResult } from '../prompts/index.js';\nimport { McpServer } from '../server/index.js';\nimport { runInRequestContextAsync, createRequestContext, setAuthContext } from '../context/index.js';\nimport { Logger } from '../logging/index.js';\nimport {\n TestClientConfig,\n TestToolResult,\n TestResourceResult,\n TestPromptResult,\n MockToolConfig,\n MockResourceConfig,\n MockPromptConfig,\n} from './types.js';\n\n/**\n * Mock tool implementation for testing\n */\nclass MockTool extends BaseTool {\n readonly name: string;\n readonly description: string;\n readonly schema = z.object({}).passthrough();\n\n private response?: unknown;\n private error?: Error;\n private customHandler?: (input: unknown) => Promise<unknown> | unknown;\n\n constructor(config: MockToolConfig) {\n super();\n this.name = config.name;\n this.description = config.description ?? `Mock tool: ${config.name}`;\n this.response = config.response;\n this.error = config.error;\n this.customHandler = config.handler;\n }\n\n async execute(input: unknown) {\n if (this.error) {\n throw this.error;\n }\n if (this.customHandler) {\n const result = await this.customHandler(input);\n return { content: result };\n }\n return { content: this.response ?? { success: true } };\n }\n}\n\n/**\n * Mock resource implementation for testing\n */\nclass MockResource extends BaseResource {\n readonly uri: string;\n readonly name: string;\n\n private content?: string | unknown;\n private error?: Error;\n private customHandler?: () => Promise<unknown> | unknown;\n\n constructor(config: MockResourceConfig) {\n super();\n this.uri = config.uri;\n this.name = config.name ?? `Mock resource: ${config.uri}`;\n this.content = config.content;\n this.error = config.error;\n this.customHandler = config.handler;\n }\n\n async read(): Promise<ResourceResult> {\n if (this.error) {\n throw this.error;\n }\n if (this.customHandler) {\n const result = await this.customHandler();\n const text = typeof result === 'string' ? result : JSON.stringify(result);\n return { contents: [{ type: 'text', text }] };\n }\n const text = typeof this.content === 'string' ? this.content : JSON.stringify(this.content ?? {});\n return { contents: [{ type: 'text', text }] };\n }\n}\n\n/**\n * Mock prompt implementation for testing\n */\nclass MockPrompt extends BasePrompt {\n readonly name: string;\n readonly description?: string;\n readonly arguments = z.object({}).passthrough();\n\n private messages?: Array<{ role: 'user' | 'assistant'; content: string }>;\n private error?: Error;\n private customHandler?: (args: unknown) => Promise<PromptResult> | PromptResult;\n\n constructor(config: MockPromptConfig) {\n super();\n this.name = config.name;\n this.description = config.description;\n this.messages = config.messages;\n this.error = config.error;\n this.customHandler = config.handler;\n }\n\n async render(args: unknown): Promise<PromptResult> {\n if (this.error) {\n throw this.error;\n }\n if (this.customHandler) {\n return this.customHandler(args);\n }\n return {\n messages: this.messages ?? [{ role: 'user', content: 'Mock prompt' }],\n };\n }\n}\n\n/**\n * In-memory test client for testing MCP servers\n *\n * @example\n * ```typescript\n * import { describe, it, expect } from 'vitest';\n * import { createTestClient } from '@eaperezc/mcpgen/testing';\n * import { GreetTool } from './tools/GreetTool';\n *\n * describe('GreetTool', () => {\n * it('should greet the user', async () => {\n * const client = createTestClient();\n * client.registerTool(new GreetTool());\n *\n * const result = await client.callTool('greet', { name: 'Alice' });\n * expect(result.content).toEqual({ greeting: 'Hello, Alice!' });\n * });\n * });\n * ```\n */\nexport class TestClient {\n private toolRegistry = new ToolRegistry();\n private resourceRegistry = new ResourceRegistry();\n private promptRegistry = new PromptRegistry();\n private config: TestClientConfig;\n private logger: Logger;\n\n constructor(config: TestClientConfig = {}) {\n this.config = config;\n this.logger = new Logger({\n level: config.debug ? 'debug' : 'error',\n pretty: true,\n });\n }\n\n /**\n * Create a test client from an existing McpServer\n */\n static fromServer(server: McpServer, config?: TestClientConfig): TestClient {\n const client = new TestClient(config);\n\n // Copy registries from server\n for (const tool of server.getToolRegistry().getAll()) {\n client.toolRegistry.register(tool);\n }\n for (const resource of server.getResourceRegistry().getAll()) {\n client.resourceRegistry.register(resource);\n }\n for (const prompt of server.getPromptRegistry().getAll()) {\n client.promptRegistry.register(prompt);\n }\n\n return client;\n }\n\n /**\n * Register a tool for testing\n */\n registerTool(tool: BaseTool): this {\n this.toolRegistry.register(tool);\n return this;\n }\n\n /**\n * Register a resource for testing\n */\n registerResource(resource: BaseResource): this {\n this.resourceRegistry.register(resource);\n return this;\n }\n\n /**\n * Register a prompt for testing\n */\n registerPrompt(prompt: BasePrompt): this {\n this.promptRegistry.register(prompt);\n return this;\n }\n\n /**\n * Register a mock tool\n */\n mockTool(config: MockToolConfig): this {\n this.toolRegistry.register(new MockTool(config));\n return this;\n }\n\n /**\n * Register a mock resource\n */\n mockResource(config: MockResourceConfig): this {\n this.resourceRegistry.register(new MockResource(config));\n return this;\n }\n\n /**\n * Register a mock prompt\n */\n mockPrompt(config: MockPromptConfig): this {\n this.promptRegistry.register(new MockPrompt(config));\n return this;\n }\n\n /**\n * Call a tool\n */\n async callTool(name: string, input?: unknown): Promise<TestToolResult> {\n return runInRequestContextAsync(async () => {\n if (this.config.auth) {\n setAuthContext(this.config.auth);\n }\n\n const tool = this.toolRegistry.getOrThrow(name);\n return tool.run(input ?? {});\n }, createRequestContext(undefined, this.logger));\n }\n\n /**\n * Read a resource\n */\n async readResource(uri: string): Promise<TestResourceResult> {\n return runInRequestContextAsync(async () => {\n if (this.config.auth) {\n setAuthContext(this.config.auth);\n }\n\n const resource = this.resourceRegistry.getOrThrow(uri);\n return resource.safeRead();\n }, createRequestContext(undefined, this.logger));\n }\n\n /**\n * Render a prompt\n */\n async renderPrompt(name: string, args?: unknown): Promise<TestPromptResult> {\n return runInRequestContextAsync(async () => {\n if (this.config.auth) {\n setAuthContext(this.config.auth);\n }\n\n const prompt = this.promptRegistry.getOrThrow(name);\n return prompt.safeRender(args ?? {});\n }, createRequestContext(undefined, this.logger));\n }\n\n /**\n * List all registered tools\n */\n listTools(): string[] {\n return this.toolRegistry.getNames();\n }\n\n /**\n * List all registered resources\n */\n listResources(): string[] {\n return this.resourceRegistry.getUris();\n }\n\n /**\n * List all registered prompts\n */\n listPrompts(): string[] {\n return this.promptRegistry.getNames();\n }\n\n /**\n * Check if a tool exists\n */\n hasTool(name: string): boolean {\n return this.toolRegistry.has(name);\n }\n\n /**\n * Check if a resource exists\n */\n hasResource(uri: string): boolean {\n return this.resourceRegistry.has(uri);\n }\n\n /**\n * Check if a prompt exists\n */\n hasPrompt(name: string): boolean {\n return this.promptRegistry.has(name);\n }\n\n /**\n * Clear all registered items\n */\n clear(): this {\n this.toolRegistry.clear();\n this.resourceRegistry.clear();\n this.promptRegistry.clear();\n return this;\n }\n}\n\n/**\n * Create a new test client\n */\nexport function createTestClient(config?: TestClientConfig): TestClient {\n return new TestClient(config);\n}\n"]}
@@ -807,9 +807,18 @@ declare class McpServer {
807
807
  */
808
808
  private getCapabilities;
809
809
  /**
810
- * Set up MCP request handlers
810
+ * Set up MCP request handlers on a server instance
811
811
  */
812
812
  private setupHandlers;
813
+ /**
814
+ * Configure handlers on a given Server instance
815
+ * This is used both for the main server (stdio) and for per-session servers (http)
816
+ */
817
+ private setupHandlersOnServer;
818
+ /**
819
+ * Create a server factory for HTTP transport (creates per-session servers)
820
+ */
821
+ private createServerFactory;
813
822
  /**
814
823
  * Register a tool
815
824
  */
@@ -807,9 +807,18 @@ declare class McpServer {
807
807
  */
808
808
  private getCapabilities;
809
809
  /**
810
- * Set up MCP request handlers
810
+ * Set up MCP request handlers on a server instance
811
811
  */
812
812
  private setupHandlers;
813
+ /**
814
+ * Configure handlers on a given Server instance
815
+ * This is used both for the main server (stdio) and for per-session servers (http)
816
+ */
817
+ private setupHandlersOnServer;
818
+ /**
819
+ * Create a server factory for HTTP transport (creates per-session servers)
820
+ */
821
+ private createServerFactory;
813
822
  /**
814
823
  * Register a tool
815
824
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eaperezc/mcpgen",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "A TypeScript framework for building MCP (Model Context Protocol) servers",
5
5
  "type": "module",
6
6
  "exports": {