exif-mcp is a Model Context Protocol (MCP) server designed to let large language models (or humans) read image metadata on demand, running fully offline. It is built on the excellent exifr library, parses extremely fast, and does not depend on any external tools, making it both efficient and secure.
Main capabilities: it supports extracting multiple metadata segments from images, including EXIF, GPS, XMP, ICC, IPTC, JFIF, and IHDR. It supports common formats such as JPEG, TIFF, HEIC/AVIF, and PNG. Image sources are flexible and can be read from the file system, URL, base64 data, or a buffer. It provides dedicated tools, such as getting orientation, rotation information, GPS coordinates, and thumbnails.
Usage: configure exif-mcp in Claude's configuration file (claude_desktop_config.json), and after restarting Claude, you can have it inspect images or find files taken by a specific camera. It is recommended to use it together with file system MCP tools so that Claude can find files and list directories. The server uses the MCP SDK's StdioServerTransport and is compatible with any MCP client that supports STDIO transport. mcp-proxy can be used for remote access. Debug via MCP Inspector: start npx @modelcontextprotocol/inspector node dist/server.js, then connect using STDIO transport and call tools, for example read-metadata with the argument { "image" : { "kind" : "path", "path" : "/path/to/image.jpg" } }. A command-line approach can also be used: npx @modelcontextprotocol/inspector --cli node dist/server.js --method tools/call --tool-name read-exif --tool-arg image='{"kind": "path", "path": "/path/to/image.jpeg"}' --tool-arg pick="[]".
Use cases: analyzing image libraries (for example, the most commonly used camera, lens distribution, which day of the week has the most shots, the most frequently visited locations), debugging image processing code. This tool is widely used by the reverse geolocation service PlaceSpotter for development and testing.
Limitations: the server provides standardized error handling for common issues, including unsupported formats or missing metadata, network fetch failures, oversized payloads, and internal exifr errors. Specific configuration details, the complete list of available tools, input parameter formats, and so on are not fully covered in the materials; it is recommended to refer to the project repository.