io.github.joshmsimpson/exiftool
by joshmsimpson
README.md
# MCP ExifTool Server
mcp-name: io.github.joshmsimpson/exiftool
An MCP (Model Context Protocol) server that provides access to ExifTool for reading, writing, and removing metadata from a wide range of file types.
## Features
- **Read metadata** from over 150 file formats
- **Write metadata** to files with automatic backup creation
- **Remove metadata** selectively or completely from files
- **Extract specific tags** or retrieve all available metadata
- **Support for multiple metadata standards**: EXIF, IPTC, XMP, GPS, and manufacturer-specific formats
### Supported File Formats
**Image Formats:**
- **RAW Camera Formats**: ARW, CR2, CR3, CRW, DNG, ERF, FFF, GPR, IIQ, K25, KDC, MEF, MRW, NEF, NRW, ORF, PEF, RAF, RAW, RW2, RWL, SR2, SRF, SRW, X3F
- **Raster Images**: BMP, FLIF, GIF, HDR, HEIC, HEIF, JPEG, JPEG 2000, JXL, JXR, PCX, PGF, PNG, PPM, TIFF, WebP
- **Specialized Images**: AVIF, BPG, DPX, EXR, FITS, FLIR, FPX, ICO, LFP, MIFF, PSD, PSP, QTIF, SVG
**Video Formats:**
- **Containers**: 3GP, AVI, F4V, FLV, GLV, M2TS, MOV, MP4, MKV, MPEG, R3D, VOB, WebM, WTV
- **Other Video**: DV, DVR-MS, INSV, LRV, MQV
**Audio Formats:**
- **Lossless**: AIFF, FLAC, LA, OFR, PAC, WAV, WV
- **Lossy**: AAC, APE, DSF, M4A, MP3, MPC, OGG, OPUS, RA, WMA
**Document Formats:**
- **Office**: DOC, DOCX, XLSX, PPTX, XLS, KEY, NUMBERS, PAGES
- **Other Documents**: PDF, EPS, RTF, TXT, XML, JSON
- **eBooks**: EPUB, MOBI, AZW
**Archive Formats:**
- 7z, GZ, RAR, ZIP
**Other Formats:**
- **Fonts**: AFM, OTF, PFA, TTF
- And many more specialized formats
## Prerequisites
**ExifTool must be installed on your system.** This MCP server is a wrapper that calls the ExifTool command-line tool.
### Installing ExifTool
**macOS:**
```bash
brew install exiftool
```
**Ubuntu/Debian:**
```bash
sudo apt-get install libimage-exiftool-perl
```
**Windows:**
Download from https://exiftool.org/
**Verify installation:**
```bash
exiftool -ver
```
## Installation
```bash
pip install exiftool-mcp
```
## Usage
### With Claude Desktop
Add this to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"exiftool": {
"command": "exiftool-mcp"
}
}
}
```
### With Other MCP Clients
The server communicates via stdio and follows the Model Context Protocol specification.
## Available Tools
### `read_metadata`
Read metadata from a file using ExifTool.
**Parameters:**
- `file_path` (required): Path to the file (absolute or relative)
- `tags` (optional): Array of specific metadata tags to extract (e.g., `["DateTimeOriginal", "Make", "Model"]`)
**Example:**
```json
{
"file_path": "/path/to/image.jpg",
"tags": ["DateTimeOriginal", "Make", "Model", "GPSLatitude", "GPSLongitude"]
}
```
### `write_metadata`
Write or update metadata tags in a file using ExifTool. Creates a backup by default.
**Parameters:**
- `file_path` (required): Path to the file (absolute or relative)
- `tags` (required): Dictionary of metadata tags to write (e.g., `{"Artist": "John Doe", "Copyright": "2025"}`)
- `overwrite_original` (optional): If true, overwrites the original file without creating a backup. Default is false.
**Example:**
```json
{
"file_path": "/path/to/image.jpg",
"tags": {
"Artist": "John Doe",
"Copyright": "2025",
"Comment": "Beautiful sunset"
},
"overwrite_original": false
}
```
### `remove_metadata`
Remove metadata from a file using ExifTool. Can remove all metadata or specific tags.
**Parameters:**
- `file_path` (required): Path to the file (absolute or relative)
- `tags` (optional): Array of specific metadata tags to remove (e.g., `["GPS*", "Comment"]`). If not specified, all metadata is removed.
- `overwrite_original` (optional): If true, overwrites the original file without creating a backup. Default is false.
**Example:**
```json
{
"file_path": "/path/to/image.jpg",
"tags": ["GPS*", "Location*"],
"overwrite_original": false
}
```
### `list_supported_formats`
List all file formats supported by ExifTool.
**Parameters:** None
## Examples
### Reading all metadata from an image
```
Use the read_metadata tool with file_path: "photo.jpg"
```
### Reading specific EXIF tags
```
Use the read_metadata tool with:
- file_path: "photo.jpg"
- tags: ["DateTimeOriginal", "Make", "Model", "LensModel"]
```
### Writing metadata to a file
```
Use the write_metadata tool with:
- file_path: "photo.jpg"
- tags: {"Artist": "Jane Smith", "Copyright": "2025", "Rating": "5"}
```
### Removing GPS data from a photo
```
Use the remove_metadata tool with:
- file_path: "photo.jpg"
- tags: ["GPS*"]
```
### Removing all metadata from a file
```
Use the remove_metadata tool with:
- file_path: "photo.jpg"
(no tags specified removes all metadata)
```
### Checking supported formats
```
Use the list_supported_formats tool
```
## Development
### Setup
```bash
git clone https://github.com/joshmsimpson/exiftool_mcp.git
cd exiftool_mcp
pip install -e .
```
### Running locally
```bash
python -m exiftool_mcp.server
```
## License
MIT
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## Links
- [GitHub Repository](https://github.com/joshmsimpson/exiftool_mcp)
- [PyPI Package](https://pypi.org/project/exiftool-mcp/)
- [ExifTool Official Site](https://exiftool.org/)
- [Model Context Protocol](https://modelcontextprotocol.io/)
- [MCP Registry](https://github.com/modelcontextprotocol/registry)
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues