exif-mcp について
exif-mcp は、EXIF・XMP・GPS などの画像メタデータをオフラインで読み取る MCP サーバーです。外部ツールを使わず exifr ライブラリに基づいて動作するため、画像ファイルのメタデータを分析・デバッグしたい利用者に向いています。
主な機能
- 01完全オフラインでの動作
- 02EXIF・GPS・XMP・ICC・IPTC セグメントの読み取り
- 03JPEG・TIFF・HEIC/AVIF・PNG への対応
- 04ファイルパス・URL・base64・バッファからの読み込み
- 05向き・回転・GPS 座標・サムネイルの取得ツール
活用シーン
- 01画像メタデータの分析と可視化
- 02画像ライブラリ内のカメラやレンズの使用状況の集計
- 03画像処理コードのデバッグ
MCP 対応
MCP サーバーとして、read-metadata、gps-coordinates、thumbnail などのツールを STDIO 経由で MCP クライアントに提供し、画像メタデータの読み取りを可能にします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
exif-mcp
LLM(または人間)がオンデマンドで画像のメタデータを完全にオフラインで読み取れる MCP サーバーです。優れた exifr ライブラリを基盤としており、非常に高速で、外部ツールに依存しません。
ユースケース:
- 画像のメタデータを分析して可視化する
- 画像ライブラリを分析する:最もよく使っているカメラは何か?レンズの分布は?どの曜日に最も多く写真を撮っているか?お気に入りの場所は?
- 画像加工コードのデバッグ
このツールは、逆ジオロケーションサービス PlaceSpotter の開発とテストで広く使われています。
概要
exif-mcp は、画像からさまざまなメタデータセグメントを抽出するツールを提供する Model Context Protocol(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 に画像の確認や、特定のカメラで撮影されたファイルの検索などを依頼できます。Claude がファイルを検索してディレクトリを一覧表示できるように、ファイルシステム MCP ツールと組み合わせて使うのがおすすめです。
サーバーの起動
# 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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。