一个MCP服务器,允许LLMs(或人类)按需读取图像元数据,完全离线。基于出色的exifr库,它非常快速,并且不依赖任何外部工具。
用例:
此工具被逆向地理定位服务PlaceSpotter广泛用于开发和测试。
exif-mcp是一个模型上下文协议(MCP)服务器,提供从图像中提取各种元数据片段的工具。使用TypeScript构建,它利用了优秀的exifr库来解析JPEG、PNG、TIFF和HEIC等常见格式的图像中的元数据。这使得该服务能够在不执行任何外部工具的情况下解析图像元数据,从而使其高效且安全。
# 克隆仓库
git clone https://github.com/stass/exif-mcp.git
cd exif-mcp
# 安装依赖
npm install
# 构建项目
npm run build
将以下内容放入Claude配置文件(claude_desktop_config.json)中:
"mcpServers": {
"exif-mcp": {
"command": "node",
"args": [
"/path/to/exif-mcp/dist/server.js"
]
}
},
重启Claude。现在你可以让Claude为你检查图像,或者例如找到特定相机拍摄的文件。这与文件系统MCP工具结合使用效果最佳,这样Claude可以找到文件并列出目录。
# 启动服务器
npm start
# 开发模式自动重载
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 | 提取嵌入的缩略图 |
npx @modelcontextprotocol/inspector node dist/server.jsread-metadata,参数如下:
{
"image": {
"kind": "path",
"path": "/path/to/image.jpg"
}
}
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="[]"服务器支持多种方式提供图像数据:
// 从本地文件系统
{
"kind": "path",
"path": "/path/to/image.jpg"
}
// 从URL(http、https或file://)
{
"kind": "url",
"url": "https://example.com/image.jpg"
}
// 从base64数据(原始或data URI)
{
"kind": "base64",
"data": "data:image/jpeg;base64,/9j/4AAQSkZ..."
}
// 从base64缓冲区
{
"kind": "buffer",
"buffer": "/9j/4AAQSkZ..."
}
# 运行测试
npm test
# 监视模式运行测试
npm run test:watch
exif-mcp/
├── src/
│ ├── server.ts # 主入口点
│ ├── tools/
│ │ ├── index.ts # 工具注册
│ │ ├── loaders.ts # 图像加载实用程序
│ │ └── segments.ts # exifr选项构建器
│ └── types/
│ └── image.ts # 类型定义
├── tests/ # 测试文件
└── README.md
服务器为常见的问题提供了标准化的错误处理:
BSD 2条款