MCP server for reading, writing and removing file metadata using ExifTool
The server defines 4 tools with complete input schemas and reasonable descriptions. Naming follows verb-noun conventions (read_metadata, write_metadata, remove_metadata, list_supported_formats). Descriptions are moderately detailed (ranges 114-239 chars, within the 10-1024 baseline). All parameters have types and descriptions. However, several issues reduce the score: (1) output schemas are not documented, no description of what read_metadata, write_metadata, or remove_metadata return; (2) error handling is basic, responses are unstructured text without actionable recovery guidance; (3) no input validation beyond file existence check for read_metadata; (4) the tags parameter in read_metadata and remove_metadata lacks constraints (array of strings with no enum or pattern to guide LLM); (5) parameter descriptions include example values (e.g., 'DateTimeOriginal', 'Make', 'Model'), which can cause LLMs to reuse them literally; (6) no indication of which tools are idempotent or destructive in the tool definitions themselves (tool annotations missing).
List all file formats supported by ExifTool for metadata extraction.
Read metadata from a file using ExifTool. Supports images, videos, audio files, PDFs, and many other formats. Returns detailed metadata including EXIF, IPTC, XMP, and format-specific information.
Remove metadata from a file using ExifTool. Can remove all metadata or specific tags.
Write or update metadata tags in a file using ExifTool. Creates a backup by default. Can set multiple tags at once.
Output schemas not documented. read_metadata, write_metadata, and remove_metadata return TextContent with unstructured JSON text. LLM cannot plan downstream tool calls or extract structured data.
Parameter descriptions include example values (e.g., 'DateTimeOriginal', 'Make', 'Model' in tags param). LLMs tend to reuse example values literally rather than adapting to context.
tags parameter in read_metadata and remove_metadata is an unconstrained string array. No enum, pattern, or validation. LLM cannot know valid tag names without trial-and-error or external knowledge.
Error responses return plain text without actionable recovery guidance. 'Error: exiftool not installed...' tells LLM to stop; does not guide next step (install, check PATH, etc.). No error categorization (retryable, user-fixable, fatal).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 46 | - | v1 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). write_metadata and remove_metadata should be marked destructive; read_metadata and list_supported_formats should be marked read-only. Agents cannot infer safety semantics.
No input validation for write_metadata. tags parameter is described as 'key-value pairs' but has no schema validation. Invalid tag names silently fail or produce misleading exiftool stderr.
list_supported_formats has no parameters but its description does not explain what the output will contain (a list of file extensions? format names? a summary table?). Output structure is undocumented.