Skip to main content
Glama
binary.ts2.44 kB
/** * Binary file handler * Handles binary files that aren't supported by other handlers (Excel, Image) * Uses isBinaryFile for content-based detection * Returns instructions to use start_process with appropriate tools */ import fs from "fs/promises"; import path from "path"; import { isBinaryFile } from 'isbinaryfile'; import { FileHandler, ReadOptions, FileResult, FileInfo } from './base.js'; /** * Binary file handler implementation * Uses content-based detection via isBinaryFile */ export class BinaryFileHandler implements FileHandler { async canHandle(filePath: string): Promise<boolean> { // Content-based binary detection using isBinaryFile try { return await isBinaryFile(filePath); } catch (error) { // If we can't check (file doesn't exist, etc.), don't handle it return false; } } async read(filePath: string, options?: ReadOptions): Promise<FileResult> { const instructions = this.getBinaryInstructions(filePath); return { content: instructions, mimeType: 'text/plain', metadata: { isBinary: true } }; } async write(path: string, content: any): Promise<void> { throw new Error('Cannot write binary files directly. Use start_process with appropriate tools (Python, Node.js libraries, command-line utilities).'); } async getInfo(path: string): Promise<FileInfo> { const stats = await fs.stat(path); return { size: stats.size, created: stats.birthtime, modified: stats.mtime, accessed: stats.atime, isDirectory: stats.isDirectory(), isFile: stats.isFile(), permissions: stats.mode.toString(8).slice(-3), fileType: 'binary', metadata: { isBinary: true } }; } /** * Generate instructions for handling binary files */ private getBinaryInstructions(filePath: string): string { const fileName = path.basename(filePath); return `Cannot read binary file as text: ${fileName} Use start_process + interact_with_process to analyze binary files with appropriate tools (Node.js or Python libraries, command-line utilities, etc.). The read_file tool only handles text files, images, and Excel files.`; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wonderwhy-er/DesktopCommanderMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server