MCP Image Metadata Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Image Metadata Serverget metadata from https://example.com/photo.jpg"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Related MCP server: Image Metadata AI MCP
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
Endpoint | Method | Description |
| POST | MCP JSON-RPC interface |
| POST | Upload image file |
| GET | Health 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
Tier | Price | Description |
Basic | $0.001 USDC | File info, dimensions, color profile |
Standard | $0.002 USDC | Basic + GPS, IPTC, XMP |
Premium | $0.005 USDC | Standard + thumbnail, deep hash |
Forensic | $0.015 USDC | Premium + 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
Agent calls tool with x402 payment header
Server verifies payment via xpay facilitator
If valid → returns metadata
If invalid → returns error
USDC transfers to your wallet on Base
Deployment
Render (Recommended)
Push to GitHub
Go to render.com → New → Web Service
Connect your repo
Configure:
Setting | Value |
Name | mcp-image-metadata |
Region | Oregon |
Build Command |
|
Start Command |
|
Add Environment Variables (see above)
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.jsSupported Image Formats
JPEG/JPG
PNG
GIF
WebP
TIFF
HEIC
BMP
SVG
Tech Stack
Node.js 20+
TypeScript
@modelcontextprotocol/sdk ^1.29.0
Sharp (image processing)
ExifReader (metadata parsing)
Express (HTTP server)
Multer (file uploads)
Security
This server implements multiple security measures:
Path Traversal Protection: File paths are validated to prevent directory traversal attacks
MIME Type Validation: Uploaded files are validated against allowed image types
Input Validation: Zod schemas reject path traversal patterns in user input
Error Sanitization: Error messages are sanitized to prevent information leakage
Rate Limiting: HTTP endpoints are protected with rate limiting (100 req/min per IP)
CORS Configuration: Optional origin validation for cross-origin requests
Security Logging: Security-relevant events are logged for monitoring
Security Configuration
# Optional: comma-separated list of allowed origins
ALLOWED_ORIGINS=https://example.com,https://app.example.com
# Optional: rate limit window in milliseconds (default: 60000)
RATE_LIMIT_WINDOW=60000
# Optional: max requests per window per IP (default: 100)
RATE_LIMIT_MAX=100License
MIT
Available Tools
4 toolsdetect_image_manipulationC
Analyze image for manipulation signs. Price: $0.002-0.015 USDC via x402
| Name | Required | Description | Default |
|---|---|---|---|
| imageUrl | Yes | ||
| analysisLevel | No | standard | |
| paymentHeader | No | x402 payment header (if paying for access) | |
| payer | No | Caller wallet address (for freemium tracking) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description should fully disclose behavior. Only mentions pricing ($0.002-0.015 USDC) but not what the analysis entails, side effects, or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely brief (single sentence) but lacks essential details. Adequate conciseness but under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, 4 parameters including payment and freemium fields. Description does not explain return values, error handling, or behavior changes with different analysis levels.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, but description adds no parameter-specific meaning. Parameters like 'analysisLevel' (with enum) are not elaborated beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Analyze' and resource 'image' with specific purpose 'for manipulation signs'. Distinct from siblings (extract_batch_metadata, extract_image_metadata, get_pricing) which focus on metadata or pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Mentions pricing and payment parameters but does not specify context or exclude cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_batch_metadataC
Extract metadata from multiple images (max 50). Price: $0.001-0.005 USDC via x402
| Name | Required | Description | Default |
|---|---|---|---|
| imageUrls | Yes | ||
| options | No | ||
| paymentHeader | No | x402 payment header (if paying for access) | |
| payer | No | Caller wallet address (for freemium tracking) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It mentions a price range and 'via x402' but does not explain the payment mechanism, what happens without payment, or any side effects. The max 50 limit is noted, but other behavioral traits (e.g., idempotency, error handling) are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core purpose. It is efficient with one sentence plus pricing. However, it could be slightly more structured to include behavior or parameter hints, but overall it is concise and not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, nested objects, no output schema, and no annotations, the description is incomplete. It omits details about return values, error handling, authentication (beyond payment hint), and concurrency for batch processing. Significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only paymentHeader and payer have descriptions). The description does not add any parameter-level detail beyond what is in the schema. For example, options is not explained, and imageUrls' limit is already in schema. No additional semantics are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool extracts metadata from multiple images with a max of 50, which is a specific verb+resource+limit. The name and sibling tools (extract_image_metadata) imply differentiation between batch and single, but the description does not explicitly distinguish, though it is still clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like extract_image_metadata or detect_image_manipulation. The pricing mention hints at a payment requirement but does not explain prerequisites or when to choose batch over single image extraction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_image_metadataA
Extract metadata from image (EXIF, GPS, IPTC, XMP). Price: $0.002 USDC via x402
| Name | Required | Description | Default |
|---|---|---|---|
| imageUrl | Yes | URL or file path to the image | |
| includeOptions | No | ||
| paymentHeader | No | x402 payment header (if paying for access) | |
| payer | No | Caller wallet address (for freemium tracking) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions a cost ($0.002 USDC via x402), which is a behavioral trait not in annotations (none provided). However, it does not clarify if payment is mandatory, what happens without paymentHeader, or any side effects. No annotations exist, so description carries burden but adds limited transparency beyond cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose ('Extract metadata from image (EXIF, GPS, IPTC, XMP).'), then pricing. No redundancy. Could be slightly more informative about payment flow, but overall efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has nested input schema (includeOptions), optional payment parameters, and no output schema. The description does not explain the return format, the meaning of includeOptions, or how payment works (x402). Given the complexity and missing output schema, the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% (all parameters have descriptions, nested options have defaults). The tool description adds no additional parameter-level information beyond what the schema provides. At high coverage, baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Extract' and resource 'metadata from image', and lists specific metadata types (EXIF, GPS, IPTC, XMP). It distinguishes from siblings like detect_image_manipulation (manipulation detection) and extract_batch_metadata (batch operation) by implying single image focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives like batch extraction or pricing tool. The description implies single image use but does not address when to choose this over extract_batch_metadata or detect_image_manipulation. The pricing info is a usage hint but not a guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricingA
Get current pricing for image metadata extraction tiers
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It indicates a read operation but does not disclose any behavioral traits such as data freshness, rate limits, or caching behavior. For a simple no-parameter tool, this minimal disclosure is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is front-loaded with the key information and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and no annotations, the description covers the basic functionality. However, it lacks details on the output structure or what constitutes 'pricing tiers,' which could be improved for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100% (vacuously). The description adds no param information because none is needed. Per guidelines, 0 parameters earns a baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retrieving current pricing for image metadata extraction tiers. It uses a specific verb ('get') and resource ('pricing'), and distinguishes itself from siblings like detect_image_manipulation and extract_image_metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit when-to-use or when-not-to-use guidance. While it is clear that the tool is for pricing queries, no alternatives or conditions are mentioned, which is acceptable given the lack of similar sibling tools in this domain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The tools are mostly distinct: detection vs extraction (single/batch) vs pricing. However, the two extract tools could cause minor confusion if descriptions are not carefully read.
All tool names follow a consistent verb_noun snake_case pattern (e.g., detect_image_manipulation, extract_batch_metadata). The use of 'get_pricing' is consistent with 'get' as a verb.
With 4 tools, the set is well-scoped for an image metadata server: single extraction, batch extraction, manipulation detection, and pricing. No unnecessary tools.
The tools cover the core functionalities for image metadata: extracting metadata (single and batch), detecting manipulation, and retrieving pricing. No obvious gaps for the server's purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
ImagePay MCP: 40 x402 paid API tools (OCR, PDF, image, QR, tabular, web). Pay per call on Base.
Free URL metadata extraction API. Extract titles, descriptions, Open Graph tags, and favicons from any URL. No API keys required.
Pay-per-use web extract, token prices, and wallet balances via x402 USDC micropayments.
Pay-per-use AI and data tools via x402: image, video, music, voice, search, crypto. USDC.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables extraction of EXIF metadata from JPG and PNG images using publicly accessible URLs or Base64 encoded data. Provides camera information, technical parameters, and image details for photo analysis.
- AlicenseNot gradedqualityAmaintenanceImage Metadata AI - MCP server providing AI-powered tools and automation by MEOK AI Labs12MIT
- AlicenseNot gradedqualityDmaintenanceEnables reading, writing, and removing metadata from over 150 file formats using ExifTool, supporting EXIF, IPTC, XMP, GPS, and manufacturer-specific metadata.MIT
- AlicenseNot gradedqualityBmaintenanceEnables OCR text extraction from images via URLs or base64, with pay-per-call using x402 micropayments (USDC on Base L2).MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jicoing/mcp-image-metadata'
If you have feedback or need assistance with the MCP directory API, please join our Discord server