@clicktime/mcp-server
Version:
ClickTime MCP Tech Demo for AI agents to interact with ClickTime API
66 lines (65 loc) • 1.9 kB
TypeScript
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;
}