UNPKG

@clicktime/mcp-server

Version:

ClickTime MCP Tech Demo for AI agents to interact with ClickTime API

66 lines (65 loc) 1.9 kB
import { Resource } from '@modelcontextprotocol/sdk/types.js'; export declare class ResourceHandlers { private allowedDirectories; private readonly maxFileSize; private directoryCache; /** * SECURITY: Validate and sanitize environment variable access */ private static getSecureHomeDirectory; constructor(allowedPaths?: string[]); /** * SECURITY: Validate file path against directory traversal attacks * Robust validation that handles symlinks and ensures path is within allowed directories */ private validateFilePath; /** * SECURITY: Additional validation for file safety with real path resolution */ private validateFileAccess; /** * SECURITY: Additional URI validation to prevent injection attacks */ private validateUri; /** * List available resources */ listResources(): Promise<Resource[]>; /** * Read resource content with enhanced security validation */ readResource(request: { uri: string; }): Promise<{ contents: Array<{ uri: string; mimeType?: string; text?: string; blob?: Uint8Array; }>; }>; /** * Process resource as receipt for expense creation */ processReceiptResource(resourceUri: string): Promise<{ receipt: string; receiptFileType: string; fileName: string; }>; /** * Scan directory for image files with security validation */ private scanDirectoryForImages; /** * Get MIME type from file extension (ClickTime-compatible only) */ private getMimeTypeFromExtension; /** * Add allowed directory for file access */ addAllowedDirectory(directory: string): void; /** * Get user-friendly instructions for file access */ getFileAccessInstructions(): string; }