MCP Hub
Back to servers

MCP Image Metadata Server

Extracts rich metadata from images including EXIF, GPS, IPTC, and XMP, with x402 payment support for monetized usage.

glama
Updated
May 12, 2026

MCP Image Metadata Server

MCP server for extracting rich metadata from images, monetized via x402 payments.

Live Demo

Server: https://mcp-image-metadata.onrender.com


Quick Start

1. Upload Image

curl -X POST https://mcp-image-metadata.onrender.com/upload \
  -F "image=@your-image.jpg"

Response:

{
  "success": true,
  "filePath": "/tmp/uploads/abc123.jpg",
  "fileName": "abc123.jpg",
  "originalName": "your-image.jpg",
  "size": 12345
}

2. Extract Metadata

curl -X POST https://mcp-image-metadata.onrender.com/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "extract_image_metadata",
      "arguments": {
        "imageUrl": "/tmp/uploads/abc123.jpg",
        "payer": "0xYourWalletAddress"
      }
    }
  }'

Response:

{
  "success": true,
  "data": {
    "file": {
      "width": 1920,
      "height": 1080,
      "format": "jpeg",
      "colorDepth": 3,
      "dpi": 72,
      "fileSize": 456789,
      "mimeType": "image/jpeg"
    },
    "exif": {
      "cameraMake": "Apple",
      "cameraModel": "iPhone 14 Pro",
      "dateTime": "2024:01:15 12:30:00"
    },
    "gps": {
      "latitude": 37.7749,
      "longitude": -122.4194
    }
  },
  "price": 0.002,
  "paymentStatus": "free",
  "freemiumRemaining": 49
}

API Endpoints

EndpointMethodDescription
/mcpPOSTMCP JSON-RPC interface
/uploadPOSTUpload image file
/healthGETHealth check

MCP Tools

1. extract_image_metadata

Extract EXIF, GPS, IPTC, XMP metadata from an image.

Arguments:

{
  "imageUrl": "/tmp/uploads/abc123.jpg",
  "includeOptions": {
    "includeGps": true,
    "includeColor": true,
    "includeThumbnail": false,
    "includeOcr": false,
    "includeDeepHash": false
  },
  "paymentHeader": "...",
  "payer": "0xYourWallet"
}

Response:

{
  "success": true,
  "data": { "file": {...}, "exif": {...}, "gps": {...} },
  "price": 0.002,
  "paymentStatus": "free",
  "freemiumRemaining": 50
}

2. extract_batch_metadata

Extract metadata from multiple images (max 50).

Arguments:

{
  "imageUrls": ["/tmp/uploads/1.jpg", "/tmp/uploads/2.jpg"],
  "options": { "includeGps": true },
  "paymentHeader": "...",
  "payer": "0xYourWallet"
}

3. detect_image_manipulation

Analyze image for signs of manipulation/editing.

Arguments:

{
  "imageUrl": "/tmp/uploads/abc123.jpg",
  "analysisLevel": "standard",
  "paymentHeader": "...",
  "payer": "0xYourWallet"
}

analysisLevel:

  • basic - Basic checks ($0.002)
  • standard - Standard analysis ($0.002)
  • forensic - Deep forensic analysis ($0.015)

4. get_pricing

Get current pricing tiers and freemium status.

Arguments:

{
  "payer": "0xYourWallet"
}

Response:

{
  "pricing": {
    "basic": { "tier": "basic", "price": 0.001 },
    "standard": { "tier": "standard", "price": 0.002 },
    "premium": { "tier": "premium", "price": 0.005 },
    "forensic": { "tier": "forensic", "price": 0.015 }
  },
  "freemium": { "limit": 50, "remaining": 49 }
}

Complete Usage Flow

Step 1: Upload Image

# Upload image
curl -X POST https://mcp-image-metadata.onrender.com/upload \
  -F "image=@photo.jpg"

Response:

{
  "success": true,
  "filePath": "/tmp/uploads/abc123.jpg"
}

Step 2: Extract Metadata

curl -X POST https://mcp-image-metadata.onrender.com/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "extract_image_metadata",
      "arguments": {
        "imageUrl": "/tmp/uploads/abc123.jpg",
        "payer": "0xYourWallet123"
      }
    }
  }'

Step 3: Get Updated Freemium Status

curl -X POST https://mcp-image-metadata.onrender.com/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {
      "name": "get_pricing",
      "arguments": {
        "payer": "0xYourWallet123"
      }
    }
  }'

Pricing

TierPriceDescription
Basic$0.001 USDCFile info, dimensions, color profile
Standard$0.002 USDCBasic + GPS, IPTC, XMP
Premium$0.005 USDCStandard + thumbnail, deep hash
Forensic$0.015 USDCPremium + manipulation analysis

Freemium

  • 50 free requests per wallet address
  • After 50, requires x402 payment
  • Usage tracked in memory (resets on server restart)

x402 Payment Integration

For Agents/Apps

To make paid requests, include the paymentHeader:

{
  "name": "extract_image_metadata",
  "arguments": {
    "imageUrl": "/tmp/uploads/abc123.jpg",
    "payer": "0xYourWallet",
    "paymentHeader": "payment=v1_USDC_..."
  }
}

Payment Flow

  1. Agent calls tool with x402 payment header
  2. Server verifies payment via xpay facilitator
  3. If valid → returns metadata
  4. If invalid → returns error
  5. USDC transfers to your wallet on Base


Deployment

Render (Recommended)

  1. Push to GitHub
  2. Go to render.com → New → Web Service
  3. Connect your repo
  4. Configure:
SettingValue
Namemcp-image-metadata
RegionOregon
Build Commandnpm install && npm run build
Start Commandnode dist/index.js
  1. Add Environment Variables (see above)
  2. Deploy

Local Development

# Install dependencies
npm install

# Build
npm run build

# Run (stdio mode)
npm run dev

# Run with HTTP server
PORT=3000 node dist/index.js

Supported Image Formats

  • JPEG/JPG
  • PNG
  • GIF
  • WebP
  • TIFF
  • HEIC
  • BMP
  • SVG

Tech Stack

  • Node.js 20+
  • TypeScript
  • @modelcontextprotocol/sdk
  • Sharp (image processing)
  • ExifReader (metadata parsing)
  • Express (HTTP server)
  • Multer (file uploads)

License

MIT

Reviews

No reviews yet

Sign in to write a review