exif mcp
一种MCP服务器,允许LLM(或人类)完全离线按需读取图像元数据。基于优秀的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配置文件(Claude_desktop_config.json)中:
"mcpServers": {
"exif-mcp": {
"command": "node",
"args": [
"/path/to/exif-mcp/dist/server.js"
]
}
},重启克劳德。现在,您可以让Claude为您检查图像,或者查找用特定相机拍摄的文件。这与文件系统MCP工具结合使用效果最佳,这样Claude就可以找到文件并列出目录。
启动服务器
# Start the server
npm start
# For development with auto-reload
npm run dev服务器使用 StdioServerTransport 通过MCP SDK,使其与支持STDIO传输的任何MCP客户端兼容。
您可以使用mcp代理启用远程访问。
可用工具
服务器提供以下工具:
| 工具名称 | 描述 |
|---|---|
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检查器进行调试
- 启动检查器:
npx @modelcontextprotocol/inspector node dist/server.js - 使用STDIO传输通过MCP检查器连接到它
- 调用工具。,
read-metadata带参数:
{
"image": {
"kind": "path",
"path": "/path/to/image.jpg"
}
}- 您还可以使用MCP检查器命令行,如下所示:
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条款
致谢
- exifr -速度极快且功能强大的EXIF解析库
