Skip to main content
Glama

view_media

Read image files (PNG, JPEG, GIF, WebP, BMP, SVG) from allowed directories, returning base64-encoded data and MIME type for analysis, display, or processing.

Instructions

Read an image file. Returns the base64 encoded data and MIME type. Only works within allowed directories.

SUPPORTED FORMATS: Images: PNG, JPEG, GIF, WebP, BMP, SVG

USAGE: Use this tool to read and encode image files for analysis, display, or processing. The tool streams files efficiently and returns base64-encoded data with proper MIME type detection.

Args: path: Absolute or relative path to the image file within allowed directories

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYes

Implementation Reference

  • Executes the view_media tool: parses arguments, validates path, determines MIME type from file extension, reads file content as base64 using helper, and returns structured content block.
    case "view_media": { const parsed = ReadImageFileArgsSchema.safeParse(args); if (!parsed.success) { throw new Error(`Invalid arguments for view_media: ${parsed.error}`); } const validPath = await validatePath(parsed.data.path); const extension = path.extname(validPath).toLowerCase(); const mimeTypes: Record<string, string> = { ".png": "image/png", ".jpg": "image/jpeg", ".jpeg": "image/jpeg", ".gif": "image/gif", ".webp": "image/webp", ".bmp": "image/bmp", ".svg": "image/svg+xml", }; const mimeType = mimeTypes[extension] || "application/octet-stream"; const data = await readFileAsBase64Stream(validPath); const type = mimeType.startsWith("image/") ? "image" : "blob"; return { content: [{ type, data, mimeType }], }; }
  • Zod schema defining the input for view_media tool: requires a path string.
    const ReadImageFileArgsSchema = z.object({ path: z.string() });
  • index.ts:276-289 (registration)
    Registers the view_media tool in the list of available tools, providing name, detailed description, and input schema reference.
    { name: "view_media", description: "Read an image file. Returns the base64 encoded data and MIME type. " + "Only works within allowed directories.\n\n" + "SUPPORTED FORMATS:\n" + "Images: PNG, JPEG, GIF, WebP, BMP, SVG\n\n" + "USAGE:\n" + "Use this tool to read and encode image files for analysis, display, or processing. " + "The tool streams files efficiently and returns base64-encoded data with proper MIME type detection.\n\n" + "Args:\n" + " path: Absolute or relative path to the image file within allowed directories", inputSchema: zodToJsonSchema(ReadImageFileArgsSchema) as ToolInput, },
  • Utility function to efficiently read any file via stream, concatenate buffers, and return base64-encoded string. Used by the view_media handler.
    async function readFileAsBase64Stream(filePath: string): Promise<string> { return new Promise((resolve, reject) => { const stream = createReadStream(filePath); const chunks: Buffer[] = []; stream.on('data', (chunk) => { chunks.push(chunk as Buffer); }); stream.on('end', () => { const finalBuffer = Buffer.concat(chunks); resolve(finalBuffer.toString('base64')); }); stream.on('error', (err) => reject(err)); }); }

Other Tools

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/4regab/tasksync-mcp'

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