Skip to main content
Glama
nickbaumann98

EverArt Forge MCP Server

view_image

Open stored images in your default viewer to review generated artwork from the EverArt Forge MCP Server.

Instructions

Open a stored image in the default image viewer

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filenameYesName of the image file to view

Implementation Reference

  • The handler for the 'view_image' tool. It takes a filename argument, constructs the full path using STORAGE_DIR, verifies the file exists, reads it for potential inline display, opens the image in the system's default viewer using the 'open' library, and returns a success message with the file path.
    case "view_image": { try { const args = request.params.arguments as any; // Validate filename if (!args.filename || typeof args.filename !== 'string') { return errorResponse({ type: EverArtErrorType.VALIDATION_ERROR, message: "filename is required and must be a string" }); } const filename = args.filename; const filepath = path.join(STORAGE_DIR, filename); try { // Check if file exists await fs.access(filepath); } catch (accessError) { // List available files to help the user const availableFiles = await listStoredImages(); let errorMsg = `Image not found: ${filename}`; if (availableFiles.length > 0) { const suggestions = availableFiles .filter(f => f.toLowerCase().includes(filename.toLowerCase()) || filename.toLowerCase().includes(f.toLowerCase().split('_').pop() || '')) .slice(0, 3); if (suggestions.length > 0) { errorMsg += `\n\nDid you mean one of these?\n` + suggestions.map(s => `• ${s}`).join('\n'); } errorMsg += `\n\nUse 'list_images' to see all available images.`; } return errorResponse({ type: EverArtErrorType.VALIDATION_ERROR, message: errorMsg }); } // Read the image for inline display let imageData: string | undefined; let mimeType: string = 'application/octet-stream'; try { const content = await fs.readFile(filepath); imageData = content.toString('base64'); const ext = path.extname(filename).slice(1).toLowerCase(); mimeType = getMimeType(ext); } catch (error) { console.warn("Unable to read image for inline display:", error); // Continue without inline display if reading fails } await open(filepath); // Skip opening in external viewer since we'll show in MCP try { // If we got here, cancel the auto-open to avoid duplicate windows // await open(filepath); } catch (openError) { // Ignore error } return { content: [ { type: "text", text: `✅ Viewing image: ${filename}` }, { type: "text", text: `Image opened in default viewer.\nFile path: file://${filepath}` } ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : "Unknown error"; return errorResponse({ type: EverArtErrorType.UNKNOWN_ERROR, message: `Error viewing image: ${errorMessage}` }); } }
  • src/index.ts:427-440 (registration)
    Tool registration in the ListToolsRequestSchema handler, including the tool's name, description, and input schema definition.
    { name: "view_image", description: "Open a stored image in the default image viewer", inputSchema: { type: "object", properties: { filename: { type: "string", description: "Name of the image file to view", }, }, required: ["filename"], }, },
  • Input schema for the 'view_image' tool, specifying a required 'filename' string parameter.
    inputSchema: { type: "object", properties: { filename: { type: "string", description: "Name of the image file to view", }, }, required: ["filename"], },

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/nickbaumann98/everart-forge-mcp'

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