exif-mcp

exif-mcp

site icon
2025.05.03 1
TypeScript图像元数据提取图像分析位置服务内容生成位置服务
exif-mcp 是一个基于 MCP(Model Context Protocol)的服务,专门用于从图像中提取元数据。它完全离线工作,不依赖任何外部工具,支持多种图像格式(如 JPEG、PNG、TIFF、HEIC)和元数据段(如 EXIF、GPS、XMP 等)。该服务适用于图像元数据分析、图像库管理、调试图像处理代码等场景。
View on GitHub

Overview

基本能力

产品定位

exif-mcp 是一个专注于图像元数据提取和分析的 MCP 服务,旨在为开发者和用户提供高效、安全的本地元数据处理能力。

核心功能

  • 本地操作:完全离线工作,无需远程网络
  • 多段元数据提取:支持 EXIF、GPS、XMP、ICC、IPTC、JFIF 和 IHDR 元数据
  • 多种输入格式:支持 JPEG、TIFF、HEIC/AVIF 和 PNG
  • 灵活的图像来源:可从文件系统、URL、base64 数据或缓冲区读取
  • 专用工具:提供图像方向、旋转信息、GPS 坐标和缩略图提取

适用场景

  • 分析图像元数据并可视化
  • 分析图像库:常用相机、镜头分布、拍摄日期分布、常用拍摄地点等
  • 调试图像处理代码
  • 与文件系统 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 提取嵌入的缩略图

常见问题解答

  • 支持的图像格式:JPEG、TIFF、HEIC/AVIF、PNG
  • 错误处理:支持标准化错误处理,包括不支持的格式、网络获取失败、过大的负载和内部 exifr 错误

使用教程

使用依赖

确保已安装 Node.js 和 npm。

安装教程

# 克隆仓库
git clone https://github.com/stass/exif-mcp.git
cd exif-mcp

# 安装依赖
npm install

# 构建项目
npm run build

调试方式

  1. 启动检查器:
npx @modelcontextprotocol/inspector node dist/server.js
  1. 使用 MCP 检查器连接 STDIO 传输
  2. 调用工具,例如 read-metadata,参数如下:
{
  "image": {
    "kind": "path",
    "path": "/path/to/image.jpg"
  }
}
  1. 也可以使用 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="[]"

开发

运行测试

# 运行测试
npm test

# 运行测试(观察模式)
pm run test:watch

项目结构

exif-mcp/
├── src/
│   ├── server.ts         # 主入口
│   ├── tools/
│   │   ├── index.ts      # 工具注册
│   │   ├── loaders.ts    # 图像加载工具
│   │   └── segments.ts   # exifr 选项构建器
│   └── types/
│       └── image.ts      # 类型定义
├── tests/                # 测试文件
└── README.md

许可证

该项目遵循 BSD-2-Clause 开源许可条款,请参阅 BSD-2-Clause 了解完整条款。