AI Image Analysis MCP
Provides AI-powered image analysis using Google Gemini 2.0 Flash, including lifestyle and product analysis capabilities.
Allows uploading images to Supabase Storage with security validation and provides serverless deployment as a Supabase Edge Function.
Click on "Deploy 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., "@AI Image Analysis MCPanalyze this image of a product"
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.
AI Image Analysis MCP v2.0
AI-Powered Image Analysis with Google Gemini 2.0
Model Context Protocol server with serverless deployment and multi-client access
š Overview
The AI Image Analysis MCP v2.0 is a production-ready implementation that provides AI-powered image analysis using Google Gemini 2.0 Flash. This MCP features modular architecture, multiple client access methods, and comprehensive security with both local development and serverless production deployment options.
Key Features:
ā Complete Implementation: Real Gemini 2.0 Flash integration (no mocks)
ā Modular Architecture: Clean separation of concerns with reusable components
ā Multiple Client Access: MCP, HTTP, Web UI, and cURL interfaces
ā Serverless Ready: Full Supabase Edge Function deployment
ā Enterprise Security: Comprehensive security validation and monitoring
ā Image Integrity: Fixed corruption issues with proper MIME type handling
ā Production Tested: Battle-tested with comprehensive error handling
Related MCP server: AI Vision MCP Server
š Security Features
Multi-Layer Security Architecture
Input Validation: Comprehensive parameter validation and sanitization
Prompt Injection Detection: Advanced pattern matching to detect and block malicious prompts
File Path Validation: Prevention of directory traversal and unauthorized file access
URL Security: SSRF protection, domain blocking, private IP filtering, and protocol validation
Rate Limiting: Configurable request rate limiting to prevent abuse
PII Detection: Automatic detection and logging of potentially sensitive information
Audit Logging: Complete audit trail of all requests and responses
Security Configuration
const SECURITY_CONFIG = {
MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB
ALLOWED_MIME_TYPES: ['image/jpeg', 'image/jpg', 'image/png', 'image/webp'],
MAX_PROMPT_LENGTH: 10000,
RATE_LIMIT_WINDOW: 60000, // 1 minute
MAX_REQUESTS_PER_WINDOW: 30,
ENABLE_PII_DETECTION: true,
BLOCK_SUSPICIOUS_PATTERNS: true
}
// URL Security Features
const URL_SECURITY_CONFIG = {
TIMEOUT: 10000, // 10 seconds
MAX_REDIRECTS: 3,
BLOCKED_DOMAINS: ['localhost', '127.0.0.1', '169.254.169.254'],
ALLOWED_PROTOCOLS: ['https:', 'http:'],
PRIVATE_IP_BLOCKING: true, // Prevents SSRF attacks
BLOCKED_PORTS: [22, 23, 25, 53, 135, 139, 445, 3389, 5432, 6379]
}š ļø Installation & Setup
Prerequisites
Node.js >= 18.0.0
Google AI API key (Gemini)
Optional: Supabase project for cloud storage
Local Installation
# Clone and install
git clone <repository-url>
cd ai-image-analysis-mcp
npm install
npm run build
# Set environment variables
export GEMINI_API_KEY="your_gemini_api_key_here"
export SUPABASE_URL="https://your-project.supabase.co" # Optional
export SUPABASE_ANON_KEY="your_anon_key_here" # For HTTP client
export SUPABASE_SERVICE_KEY="your_service_role_key_here" # OptionalClaude Desktop Configuration
Local MCP Server
{
"mcpServers": {
"ai-image-analysis": {
"command": "node",
"args": ["/path/to/ai-image-analysis-mcp/dist/index.js"],
"env": {
"GEMINI_API_KEY": "your_gemini_api_key_here"
},
"description": "AI-powered image analysis using Google Gemini"
}
}
}Supabase Proxy (for Edge Functions)
{
"mcpServers": {
"ai-image-analysis-supabase": {
"command": "node",
"args": ["/path/to/ai-image-analysis-mcp/dist/mcp-supabase-proxy.js"],
"env": {
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_ANON_KEY": "your_anon_key_here"
},
"description": "Supabase Edge Function MCP server proxy"
}
}
}Supabase Serverless Deployment ā
# Initialize and deploy
supabase login
supabase link --project-ref YOUR_PROJECT_REF
supabase db reset
# Deploy Edge Function with real Gemini integration
supabase functions deploy ai-image-analysis-mcp
# Set production secrets
supabase secrets set GEMINI_API_KEY=your_key_here
supabase secrets set SUPABASE_URL=https://your-project.supabase.co
supabase secrets set SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
# Test deployment with MCP protocol
curl -X POST 'https://your-project.supabase.co/functions/v1/orbit-mcp-server' \
-H 'Authorization: Bearer YOUR_ANON_KEY' \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'See SUPABASE_DEPLOYMENT.md for complete deployment guide.
š Available Tools
1. analyze_image
Securely analyze an image using Google Gemini AI with automatic type detection.
// MCP format (Claude Desktop) - Local file
{
"tool": "analyze_image",
"parameters": {
"image_path": "/path/to/image.jpg",
"analysis_type": "lifestyle" // Optional: "lifestyle" or "product"
}
}
// MCP format (Claude Desktop) - URL
{
"tool": "analyze_image",
"parameters": {
"image_url": "https://example.com/image.jpg",
"analysis_type": "product"
}
}
// HTTP format (Direct API) - Base64 data
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "analyze_image",
"arguments": {
"image_data": "base64_encoded_image_data",
"analysis_type": "product"
}
}
}
// HTTP format (Direct API) - URL
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "analyze_image",
"arguments": {
"image_url": "https://example.com/image.jpg",
"analysis_type": "lifestyle"
}
}
}Response includes:
Comprehensive image analysis based on type (lifestyle or product)
Security scan results (including URL validation when applicable)
Processing metadata
Confidence scores
Image integrity validation
Source information (file, URL, or base64)
2. upload_to_supabase
Upload image data to Supabase Storage with security validation.
// MCP format
{
"tool": "upload_to_supabase",
"parameters": {
"image_data": "base64_encoded_image_data",
"bucket": "images",
"path": "uploads/image.jpg",
"metadata": { "analysis_version": "2.0" }
}
}
// HTTP format
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "upload_to_supabase",
"arguments": {
"image_data": "base64_encoded_image_data",
"bucket": "product-images",
"path": "uploads/product.jpg",
"metadata": { "source": "api-client" }
}
}
}3. get_security_status
Get current security configuration and audit information.
// Both MCP and HTTP formats
{
"tool": "get_security_status",
"parameters": {}
}šÆ Analysis Capabilities
Lifestyle Image Analysis
Scene Overview: Setting, time of day, season, occasion, primary activity
Human Elements: People count, demographics, interactions, emotional states, social dynamics
Environment: Location type, architectural/natural elements, spatial arrangement
Key Objects: Food, technology, furniture, personal items, defining props
Atmospheric Elements: Lighting, color palette, mood, sensory cues
Narrative Analysis: Story implications, lifestyle values, cultural significance
Photographic Elements: Composition, focal points, perspective, technical qualities
Marketing Potential: Target demographics, aspirational elements, brand opportunities
Product Image Analysis
Product Identification: Type, category, design style
Physical Characteristics: Color, material, texture, design elements
Structural Elements: Frame type, support systems, construction details
Design Attributes: Aesthetic category, visual weight, design influences
Commercial Analysis: Market positioning, target market, competitive advantages
Quality Assessment: Construction, materials, finish, durability indicators
š§ Configuration Options
Environment Variables
# Required
GEMINI_API_KEY=your_gemini_api_key_here
# Optional - for cloud features and HTTP client
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your_anon_key_here
SUPABASE_SERVICE_KEY=your_service_role_key_here
SUPABASE_FUNCTION_NAME=ai-image-analysis-mcp
# Optional - development
NODE_ENV=development
DEBUG=trueSecurity Settings
All security settings can be adjusted in the SECURITY_CONFIG object in src/index.ts:
MAX_FILE_SIZE: Maximum allowed file size (default: 10MB)ALLOWED_MIME_TYPES: Permitted image formatsRATE_LIMIT_WINDOW: Rate limiting time windowMAX_REQUESTS_PER_WINDOW: Maximum requests per windowENABLE_PII_DETECTION: Enable/disable PII scanning
šØ Security Best Practices
For Production Deployment
API Key Security: Store API keys securely using environment variables
Rate Limiting: Configure appropriate rate limits for your use case
Input Validation: Always validate file paths and parameters
Audit Logging: Monitor the audit logs for suspicious activity
Network Security: Use HTTPS and proper CORS configuration
Access Control: Implement proper authentication for serverless deployments
Monitoring & Alerts
Monitor rate limit violations
Track failed authentication attempts
Alert on prompt injection detections
Monitor file access patterns
š”ļø Threat Model
Mitigated Threats
ā Prompt injection attacks
ā Directory traversal attacks
ā Rate limiting bypass
ā PII leakage
ā Malicious file uploads
ā Cross-site scripting (XSS)
Additional Considerations
Regular security audits
Dependency vulnerability scanning
API key rotation
Log monitoring and analysis
š Performance - Production Benchmarks
Gemini 2.0 Flash Response Times
Single Image Analysis: 3-5 seconds (real API calls)
Batch Processing: ~4 seconds per image with parallel processing
Supabase Upload: 1-2 seconds (size dependent)
Security Validation: <100ms (comprehensive checks)
Format Detection: <50ms (binary signature analysis)
Resource Usage - Optimized
Memory: ~150MB base + 30MB per concurrent analysis
CPU: Efficient during Gemini API calls
Network: Optimized with request batching and compression
Serverless: Cold start <2 seconds, warm requests <500ms
Scalability
Concurrent Users: 1000+ (Supabase Edge Functions)
Daily Processing: 10K+ images (with rate limiting)
Global Distribution: Multi-region deployment ready
šļø Project Structure
ai-image-analysis-mcp/
āāā README.md # This file - user documentation
āāā CLAUDE.md # Complete technical documentation
āāā SUPABASE_DEPLOYMENT.md # Supabase deployment guide
āāā HTTP_CLIENT_GUIDE.md # Complete HTTP client usage guide
āāā package.json # Dependencies and scripts
āāā src/
ā āāā index.ts # Local MCP server implementation
ā āāā supabase-mcp-client.ts # Direct HTTP client for Supabase
ā āāā api-client.ts # Simple REST API wrapper
ā āāā mcp-supabase-proxy.ts # MCP proxy for Claude Desktop
ā āāā modules/ # Modular architecture
ā ā āāā types.ts # TypeScript interfaces
ā ā āāā gemini-analysis.ts # AI analysis engine
ā ā āāā supabase-upload.ts # Storage operations
ā ā āāā security.ts # Security validation
ā ā āāā integrity.ts # Image integrity checks
ā ā āāā audit.ts # Audit logging
ā āāā utils/
ā āāā mime-detection.ts # MIME type utilities
āāā supabase/
ā āāā config.toml # Supabase project configuration
ā āāā seed.sql # Database schema
ā āāā functions/
ā āāā orbit-mcp-server/ # Serverless Edge Function
ā āāā index.ts # MCP server over HTTP
āāā examples/
ā āāā direct-http-examples.js # Node.js examples
ā āāā web-app-example.html # Web interface
ā āāā curl-examples.md # Command-line examples
āāā claude-desktop-config.json # Local MCP configuration
āāā claude-desktop-config-supabase.json # Proxy configuration
āāā dist/ # Compiled JavaScript filesš Integration Options
This MCP can be integrated with various systems:
Metadata Embedding: For XMP metadata embedding functionality
Storage Management: For advanced file operations and organization
Workflow Orchestration: Via Supabase Edge Functions for complex workflows
Custom Applications: For complete visual intelligence processing pipelines
š” Deployment Options
Option 1: Local Claude Desktop
Direct MCP server running locally
Ideal for development and testing
Uses
src/index.tswith stdio transport
Option 2: Supabase Edge Function
Serverless deployment with global distribution
Enterprise-grade security and scaling
Uses
supabase/functions/orbit-gemini-analysis/index.tsREST API endpoints for integration
Option 3: Hybrid Approach
Local development with Claude Desktop
Production deployment via Supabase
Seamless transition between environments
š¤ Contributing
Development Setup
npm run dev # Watch mode development
npm run build # Production build
npm run security-check # Security auditTesting Security Features
# Test prompt injection detection
npm run test-security
# Manual testing with Claude Desktop
# Use the provided configuration and test each toolš What's New in v2.0 - Production Ready
ā Completed High-Priority Items
Real Gemini Integration - Complete implementation with Gemini 2.0 Flash (no more mocks)
Modular Architecture - Refactored from monolithic to clean modular design
Multiple Client Access - MCP, HTTP, Web UI, and cURL interfaces
Image Integrity Fixed - Resolved corruption issues with proper MIME type handling
Serverless Architecture - Full Supabase Edge Function deployment ready
Enterprise Security - Comprehensive validation, audit logging, and threat detection
Production Error Handling - Robust error recovery and detailed logging
ā Core Improvements
Enhanced Security Features - Advanced prompt injection detection with base64 decoding
Multi-Source Support - Handle base64 data, Supabase Storage, and URLs seamlessly
URL Image Analysis - Secure URL fetching with SSRF protection and domain filtering
Rate Limiting & Monitoring - Production-grade request throttling and audit trails
Format Validation - Comprehensive image format detection and validation
Real-time Processing - Optimized for sub-5-second response times
Direct HTTP Client - Full-featured TypeScript client for programmatic access
Web Interface - Drag-and-drop browser interface for image analysis
ā Deployment Ready
Complete Edge Function - Production-ready serverless deployment
Security Hardening - Input sanitization, integrity checks, and format validation
API Documentation - Complete REST API reference for integration
Monitoring & Alerts - Built-in health checks and performance metrics
Multiple Examples - Node.js, Web, and cURL usage examples
Comprehensive Guides - Complete documentation for all access methods
š Documentation
README.md (this file): Quick start and overview
CLAUDE.md: Complete technical documentation and API reference
SUPABASE_DEPLOYMENT.md: Detailed serverless deployment guide
claude-desktop-config.json: Ready-to-use Claude Desktop configuration
š Multiple Client Access Methods
1. Claude Desktop (Local MCP)
Direct MCP integration via stdio transport
Uses
src/index.tswith modular architectureIdeal for development and testing
2. Claude Desktop (Supabase Proxy)
Bridge between Claude Desktop and Supabase Edge Function
Uses
src/mcp-supabase-proxy.tsEnables Claude Desktop to access serverless deployment
3. Direct HTTP Client
import { createSupabaseMCPClient } from './dist/supabase-mcp-client.js';
const client = createSupabaseMCPClient({
supabaseUrl: 'https://your-project.supabase.co',
anonKey: 'your_anon_key_here'
});
const result = await client.analyzeImageFromBase64(base64Data, 'product');4. Simple API Wrapper
import { initializeAPIFromEnv, analyzeImageFile } from './dist/api-client.js';
initializeAPIFromEnv();
const result = await analyzeImageFile('/path/to/image.jpg', {
analysisType: 'product',
uploadToStorage: true
});5. Web Interface
Complete HTML/JavaScript interface in
examples/web-app-example.htmlDrag-and-drop image upload
Real-time analysis results
Works in any modern browser
6. cURL/HTTP
# List available tools
curl -X POST "https://your-project.supabase.co/functions/v1/ai-image-analysis-mcp" \
-H "Authorization: Bearer YOUR_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# Analyze image from URL
curl -X POST "https://your-project.supabase.co/functions/v1/ai-image-analysis-mcp" \
-H "Authorization: Bearer YOUR_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "analyze_image",
"arguments": {
"image_url": "https://example.com/image.jpg",
"analysis_type": "product"
}
}
}'
# Analyze image from base64 data
curl -X POST "https://your-project.supabase.co/functions/v1/ai-image-analysis-mcp" \
-H "Authorization: Bearer YOUR_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "analyze_image",
"arguments": {
"image_data": "'$(base64 -i /path/to/image.jpg | tr -d '\n')'",
"analysis_type": "lifestyle"
}
}
}'š Complete Documentation
This project includes comprehensive documentation across multiple files:
README.md (this file): Quick start guide and overview
CLAUDE.md: Complete technical documentation with API reference and integration examples
HTTP_CLIENT_GUIDE.md: Complete guide for all HTTP client access methods
SUPABASE_DEPLOYMENT.md: Step-by-step serverless deployment guide
examples/curl-examples.md: Command-line usage examples
claude-desktop-config.json: Local MCP configuration
claude-desktop-config-supabase.json: Supabase proxy configuration
Quick References
Local Setup: See Installation & Setup section above
HTTP Client: Follow HTTP_CLIENT_GUIDE.md
Serverless Deploy: Follow SUPABASE_DEPLOYMENT.md
API Integration: Reference CLAUDE.md API section
Security Features: Details in CLAUDE.md Security section
š License
MIT License - see LICENSE file for details.
š Acknowledgments
Google AI Team: For Gemini multimodal AI capabilities
Anthropic: For the Model Context Protocol standard
Supabase Team: For serverless infrastructure platform
AI Image Analysis MCP v2.0 - Production-ready AI image analysis with Gemini 2.0
Production-Ready ⢠Serverless ⢠Multi-Client ⢠Security-First ⢠Open Source
šÆ Production Status: ā READY FOR DEPLOYMENT
Real Gemini 2.0 Integration: Complete implementation, no mocks
Modular Architecture: Clean, maintainable, and extensible codebase
Multiple Client Access: MCP, HTTP, Web UI, and cURL interfaces
Image Integrity Preserved: Fixed corruption issues with proper format handling
Serverless Architecture: Full Supabase Edge Function deployment
Enterprise Security: Comprehensive validation and monitoring
Performance Optimized: Sub-5-second response times at scale
Available Tools
3 toolsanalyze_imageB
Securely analyze an image using Google Gemini AI with automatic type detection and security validations
| Name | Required | Description | Default |
|---|---|---|---|
| image_url | No | URL to fetch the image from (https/http only) | |
| image_path | No | Absolute path to the image file (jpg, png, webp only) | |
| analysis_type | No | Force specific analysis type (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure burden. It does disclose two useful traits: automatic type detection and security validations. However, it does not explain what the validations check, whether the operation is read-only, what side effects occur, or what happens on invalid input or failure.
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, tightly worded sentence with no filler. Every phrase contributes: tool behavior, model, auto-detection, and security. It is appropriately front-loaded and easy to parse.
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 absence of an output schema and annotations, the description should clarify what the analysis returns and what 'analyze' means in practice. It does not. The security and auto-detection details are useful, but the missing outcome/return information makes the tool incomplete for an agent deciding whether and how to invoke it.
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 100%, so the schema already documents all parameters fully. The description adds minimal semantic value beyond the schema, mainly hinting that analysis_type can be auto-detected. This is a small enhancement, not a substantial clarification.
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 states a specific action ('analyze an image'), identifies the technology ('Google Gemini AI'), and mentions key behavior ('automatic type detection and security validations'). It is distinct from sibling tools like upload_to_supabase and get_security_status. However, 'analyze' remains somewhat broadāit does not say what kind of output or result the analysis produces.
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?
There is no explicit guidance on when to use this tool versus the siblings, nor when to choose image_url versus image_path. The 'automatic type detection' hint implies the analysis_type parameter can be omitted, but no direct usage context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_security_statusA
Get current security configuration and audit information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden of behavioral disclosure. It only restates the action implied by the name and gives no information about side effects, required authorization, rate limits, or what exactly the returned audit data contains.
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, front-loaded sentence with no filler words. Every word contributes to the tool's purpose.
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?
For a zero-parameter read-oriented tool, the description is minimally viable for selection and invocation. However, with no output schema and no annotations, it does not describe the return shape or whether any special access is needed, leaving some ambiguity about what an agent should do with the result.
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 the empty schema fully documents this. The description needs to add no parameter-level meaning, so the 0-parameter baseline of 4 applies.
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 a specific action ('Get') and resource ('current security configuration and audit information'). It is immediately distinguishable from the unrelated sibling tools analyze_image and upload_to_supabase.
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 is provided about when to use this tool versus alternatives, or any preconditions. Although the siblings are clearly unrelated, the description leaves all usage timing implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_to_supabaseB
Upload image or analysis results to Supabase Storage with security validation
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Storage path within bucket | |
| bucket | Yes | Supabase bucket name | |
| metadata | No | Additional metadata to store with the file (optional) | |
| image_data | Yes | Base64 encoded image data | |
| supabase_key | Yes | Supabase service role key | |
| supabase_url | Yes | Supabase project URL |
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 of behavioral disclosure. It adds one vague behavioral claim ('with security validation') but never explains what that validation entails, whether uploads can be rejected, whether existing files are overwritten, what permissions are needed, or what happens on success or failure. For a tool that writes to external storage with a service-role key, this is a significant gap.
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?
A single sentence with the verb and object front-loaded and the destination stated immediately after. There is zero redundancy and every phrase ('image or analysis results', 'security validation') contributes information beyond the tool name.
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?
For a tool with 6 parameters (5 required, including a sensitive service-role key), no annotations, no output schema, and a write side-effect on external storage, a one-sentence description is inadequate. An agent lacks information about return values, failure modes, the meaning of 'security validation', and how this differs from sibling tools.
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 100%, so the schema already documents all six parameters. The description adds the concept of 'analysis results' that is not reflected in the parameter schema (which only defines image_data as base64 image data), creating minor ambiguity about how analysis results should be passed. Baseline 3 is appropriate since the description neither meaningfully compensates nor harms.
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 states a specific verb ('Upload'), a resource ('Supabase Storage'), and the objects ('image or analysis results'). It is clearly distinguishable from siblings analyze_image and get_security_status, which are read/analysis operations, though it does not explicitly name them.
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?
Usage is implied: when you have image or analysis results to persist to Supabase Storage. However, there is no explicit when-to-use statement, no mention of alternatives, and no exclusion criteria. An agent must infer that this is the storage step after analysis, which the sibling names hint at but the description never states.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v2.0.0- First observed
analyze_image - First observed
get_security_status - First observed
upload_to_supabase
TDQS
Scored across 3 tools
Each tool has a clearly distinct responsibility: analyzing an image, uploading to storage, and retrieving security status. There is no meaningful overlap in their primary actions.
All names are snake_case and start with a verb, but 'upload_to_supabase' introduces a destination-specific pattern while the others follow a simpler verb_noun structure. This is a minor deviation from an otherwise consistent convention.
With 3 tools, the server is tightly scoped to its core image analysis, storage, and security purposes. Each tool earns its place without redundancy or bloat.
The core workflow of analyzing an image and uploading results is covered, and the security status tool adds useful oversight. Minor gaps exist around retrieving or managing previously uploaded assets, but these are not critical for the server's stated purpose.
Maintenance
Related MCP Connectors
Analyze images and videos with Gemini to get fast, reliable visual insights. Handle content from Uā¦
Image/video analysis: NSFW detection, object detection, thumbnails
Image, video, audio and chat from 61 AI models through one connector. Pay per use, no subscription.
Multi-model AI image and video generator. 14 models behind one OAuth-secured MCP endpoint.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables image processing and analysis using Google's Gemini 2.5 Flash model. Supports local files, URLs, and Base64 images with streaming responses and automatic output saving.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered image and video analysis using Google Gemini and Vertex AI models. Supports analyzing single or multiple images, detecting objects with bounding boxes, and video content analysis through natural language prompts.23MIT
- AlicenseAqualityDmaintenanceProvides advanced image analysis capabilities including object recognition, OCR text extraction, and multi-turn visual dialogues using OpenAI-compatible APIs. It supports both local files and Base64 inputs with additional features for session persistence and web-based configuration management.3MIT
- FlicenseNot gradedqualityCmaintenanceEnables image generation using Google Gemini models (flash/pro) with support for multiple sizes, reference images, and access control via Google OAuth and email allow-lists.1-