s

stass

@stass/exif-mcp
0 Stars 339 次浏览 stass 更新于 2026-08-23
该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

exif-mcp

一个允许LLM(或人类)按需读取图像元数据的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坐标和缩略图

安装

csh

克隆仓库

git clone https://github.com/stass/exif-mcp.git
cd exif-mcp

安装依赖

npm install

构建项目

npm run build

使用

Claude Desktop

将以下内容放入Claude配置文件(claude_desktop_config.json)中:
json
"mcpServers": {
"exif-mcp": {
"command": "node",
"args": [
"/path/to/exif-mcp/dist/server.js"
]
}
},

重启Claude。现在您可以要求Claude为您检查图像,例如查找用特定相机拍摄的文件。结合文件系统MCP工具使用效果最佳,这样Claude可以找到文件并列出目录。

启动服务器

csh

启动服务器

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 提取嵌入的缩略图

使用MCP Inspector调试

  1. 启动检查器:npx @modelcontextprotocol/inspector node dist/server.js

  2. 使用STDIO传输通过MCP Inspector连接到它

  3. 调用工具,例如read-metadata,带参数:
    json
    {
    "image": {
    "kind": "path",
    "path": "/path/to/image.jpg"
    }
    }

  4. 您也可以像这样使用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="[]"

图像源类型

服务器支持多种方式提供图像数据:

typescript
// 从本地文件系统
{
"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..."
}## 开发

运行测试

bash

运行测试

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

错误处理

服务器为常见问题提供了标准化的错误处理:

  • 不支持的格式或缺少元数据
  • 网络抓取失败
  • 超大负载
  • 内部 exifr 错误

许可证

BSD 2-clause

致谢

  • exifr - 极快且强大的 EXIF 解析库

相关 MCP 服务