Skip to main content
Glama

read-xmp

Extract XMP metadata from images using the exif-mcp server. Supports reading extended XMP segments and handles input from paths, URLs, base64, or buffers.

Instructions

Read XMP metadata from an image with option for extended XMP segments

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
extendedNo
imageYes

Implementation Reference

  • Handler function for the 'read-xmp' tool: destructures args, loads image buffer using loadImage, builds XMP-specific exifr options, parses metadata, validates XMP presence, returns success response with metadata or error.
    async (args, extra) => { try { const { image, extended } = args; const buf = await loadImage(image); const opts = buildXmpOptions(extended); const meta = await exifr.parse(buf, opts); if (!meta || !meta.xmp) { return createErrorResponse('No XMP metadata found in image'); } return createSuccessResponse(meta); } catch (error) { return createErrorResponse(`Error reading XMP data: ${error instanceof Error ? error.message : String(error)}`); } }
  • Registration of the 'read-xmp' tool with the MCP server using server.tool(), including name, description, input schema, and handler function. Assigned to tools object for reference.
    const readXmpTool = server.tool('read-xmp', "Read XMP metadata from an image with option for extended XMP segments", { image: ImageSourceSchema, extended: z.boolean().optional() }, async (args, extra) => { try { const { image, extended } = args; const buf = await loadImage(image); const opts = buildXmpOptions(extended); const meta = await exifr.parse(buf, opts); if (!meta || !meta.xmp) { return createErrorResponse('No XMP metadata found in image'); } return createSuccessResponse(meta); } catch (error) { return createErrorResponse(`Error reading XMP data: ${error instanceof Error ? error.message : String(error)}`); } } ); tools['read-xmp'] = readXmpTool;
  • Input schema for 'read-xmp' tool: requires 'image' (ImageSourceSchema) and optional 'extended' boolean flag.
    { image: ImageSourceSchema, extended: z.boolean().optional() },
  • Helper function buildXmpOptions creates exifr.parse options tailored for XMP extraction, enabling only xmp: true and multiSegment if extended is true.
    export function buildXmpOptions(extended?: boolean): ExifrOptions { return { tiff: false, xmp: true, icc: false, iptc: false, jfif: false, ihdr: false, multiSegment: extended ?? false }; }

Other Tools

Related 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/stass/exif-mcp'

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