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 座標、サムネイルを取得します
Related MCP server: Smart Photo Journal MCP Server
インストール
# 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を再起動してください。これで、Claudeに画像の検査や、例えば特定のカメラで撮影されたファイルを検索するよう指示できます。これは、ファイルシステムMCPツールと組み合わせることで、Claudeがファイルを検索したりディレクトリを一覧表示したりするのに最も効果的です。
サーバーの起動
# Start the server
npm start
# For development with auto-reload
npm run devサーバーは MCP SDK のStdioServerTransportを使用するため、STDIO トランスポートをサポートするすべての MCP クライアントと互換性があります。
mcp-proxy を使用してリモート アクセスを有効にすることができます。
利用可能なツール
サーバーによって提供されるツールは次のとおりです。
ツール名 | 説明 |
| すべてのメタデータセグメントまたは指定されたメタデータセグメントを読み取ります |
| EXIFデータを具体的に読み取ります |
| XMPデータを読み取ります |
| ICCカラープロファイルデータを読み取ります |
| IPTCメタデータを読み取る |
| JFIFセグメントデータを読み取る |
| IHDRセグメントデータを読み取ります |
| 画像の向きを取得します(1~8) |
| 回転と反転の情報を取得します |
| GPS座標を抽出します |
| 埋め込まれたサムネイルを抽出します |
MCP Inspectorによるデバッグ
インスペクターを起動します:
npx @modelcontextprotocol/inspector node dist/server.jsSTDIOトランスポートを使用してMCP Inspectorで接続します。
ツール (例: パラメータ付き
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 解析ライブラリ