关于 exif-mcp
exif-mcp 是一个 MCP 服务,可离线读取图片元数据,包括 EXIF、XMP、GPS 等。它基于 exifr 库实现,不依赖外部工具,适合需要分析或调试图片元数据的用户。
主要功能
- 01完全离线运行
- 02支持 EXIF、GPS、XMP、ICC、IPTC 等元数据段
- 03支持 JPEG、TIFF、HEIC/AVIF、PNG 格式
- 04可从文件路径、URL、base64 或缓冲区读取图片
- 05提供方向、旋转、GPS 坐标与缩略图工具
适用场景
- 01分析图片元数据并进行可视化
- 02统计图片库中的拍摄设备、镜头或拍摄地点分布
- 03排查图像处理代码的调试问题
MCP 相关
该项目是一个 MCP 服务,通过 read-metadata、gps-coordinates、thumbnail 等工具向 MCP 客户端提供图片元数据读取能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
exif-mcp
一款 MCP 服务,可让大模型(或人类)按需读取图像元数据,完全离线运行。它基于出色的 exifr 库,速度极快,且不依赖任何外部工具。
使用场景:
- 分析图像元数据并将其可视化
- 分析你的图像库:我最常用哪些相机?镜头分布如何?我在哪些星期几拍的照片最多?最喜欢哪些地点?
- 调试图像处理代码。
反向地理定位服务 PlaceSpotter 在开发和测试过程中广泛使用此工具。
概述
exif-mcp 是一款模型上下文协议(MCP)服务,提供用于提取图像中各类元数据段的工具。它使用 TypeScript 构建,并借助出色的 exifr 库解析 JPEG、PNG、TIFF 和 HEIC 等常见格式图像中的元数据。该服务无需执行任何外部工具即可解析图像元数据,因此效率极高且安全可靠。
功能
- 本地运行:完全离线运行,无需远程网络连接
- 多种元数据段:提取 EXIF、GPS、XMP、ICC、IPTC、JFIF 和 IHDR 元数据
- 多种输入格式:支持 JPEG、TIFF、HEIC/AVIF 和 PNG
- 灵活的图像来源:可从文件系统、URL、base64 数据或缓冲区读取
- 专用工具:获取方向、旋转信息、GPS 坐标和缩略图
安装
# Clone the repository
git clone https://github.com/stass/exif-mcp.git
cd exif-mcp
# Install dependencies
npm install
# Build the project
npm run build
使用方法
Claude Desktop
将以下内容放入 Claude 配置文件(claude_desktop_config.json):
"mcpServers": {
"exif-mcp": {
"command": "node",
"args": [
"/path/to/exif-mcp/dist/server.js"
]
}
},
重启 Claude。现在,你可以让 Claude 检查图像,或查找使用特定相机拍摄的文件等。搭配文件系统 MCP 工具使用效果最佳,这样 Claude 就能查找文件并列出目录。
启动服务
# Start the server
npm start
# For development with auto-reload
npm run dev
该服务使用 MCP SDK 中的 StdioServerTransport,因此兼容任何支持 STDIO 传输的 MCP 客户端。
你可以使用 mcp-proxy 启用远程访问。
可用工具
该服务提供以下工具:
| 工具名称 | 描述 |
|---|---|
read-metadata | 读取所有或指定的元数据段 |
read-exif | 专门读取 EXIF 数据 |
read-xmp | 读取 XMP 数据 |
read-icc | 读取 ICC 色彩配置文件数据 |
read-iptc | 读取 IPTC 元数据 |
read-jfif | 读取 JFIF 段数据 |
read-ihdr | 读取 IHDR 段数据 |
orientation | 获取图像方向(1-8) |
rotation-info | 获取旋转和翻转信息 |
gps-coordinates | 提取 GPS 坐标 |
thumbnail | 提取嵌入的缩略图 |
使用 MCP Inspector 调试
- 启动 Inspector:
npx @modelcontextprotocol/inspector node dist/server.js - 使用 STDIO 传输通过 MCP Inspector 连接
- 调用一个工具,例如使用以下参数调用
read-metadata:{ "image": { "kind": "path", "path": "/path/to/image.jpg" } } - 你也可以像这样使用 MCP Inspector 命令行:
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="[]"
图像来源类型
该服务支持多种提供图像数据的方式:
// From local file system
{
"kind": "path",
"path": "/path/to/image.jpg"
}
// From URL (http, https, or file://)
{
"kind": "url",
"url": "https://example.com/image.jpg"
}
// From base64 data (raw or data URI)
{
"kind": "base64",
"data": "data:image/jpeg;base64,/9j/4AAQSkZ..."
}
// From base64 buffer
{
"kind": "buffer",
"buffer": "/9j/4AAQSkZ..."
}
开发
运行测试
# Run tests
npm test
# Run tests with watch mode
npm run test:watch
项目结构
exif-mcp/
├── src/
│ ├── server.ts # Main entry point
│ ├── tools/
│ │ ├── index.ts # Tool registration
│ │ ├── loaders.ts # Image loading utilities
│ │ └── segments.ts # exifr options builders
│ └── types/
│ └── image.ts # Type definitions
├── tests/ # Test files
└── README.md
错误处理
该服务针对常见问题提供标准化的错误处理:
- 不支持的格式或缺失的元数据
- 网络获取失败
- 负载过大
- exifr 内部错误
许可证
BSD 2-clause
致谢
- exifr - 速度极快且稳健的 EXIF 解析库
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。