Skip to main content
Glama
mario-andreschak

MCP Image Recognition Server

MCP 画像認識サーバー

Anthropic、OpenAI、Cloudflare Workers AI Vision API を使用して画像認識機能を提供する MCP サーバー。バージョン 1.2.1。

MCP画像認識

著者

もともとこのプロジェクトは@mario-andreschakによって作成されました。ありがとうございます!
現在は@zudsniperによってメンテナンスされています。

Related MCP server: Image Parse MCP

特徴

  • Anthropic Claude Vision、OpenAI GPT-4 Vision、または Cloudflare Workers AI llava-1.5-7b-hf を使用した画像の説明

  • Claude Desktop、Cursor、その他のMCP互換クライアントとの簡単な統合

  • Dockerデプロイメントのサポート

  • uvxインストールのサポート

  • 複数の画像形式(JPEG、PNG、GIF、WebP)をサポート

  • 設定可能なプライマリおよびフォールバックプロバイダー

  • Base64およびファイルベースの画像入力のサポート

  • Tesseract OCRを使用したオプションのテキスト抽出

要件

  • Python 3.8以上

  • Tesseract OCR(オプション) - テキスト抽出機能に必要

    • Windows: UB-Mannheim/tesseractからダウンロードしてインストールします。

    • Linux: sudo apt-get install tesseract-ocr

    • macOS: brew install tesseract

インストール

オプション 1: uvx を使用する (Claude Desktop および Cursor に推奨)

  1. uvパッケージ マネージャーをインストールします。

pip install uv
  1. uvx を使用してパッケージをインストールします。

uvx install mcp-image-recognition
  1. 構成セクションの説明に従って環境ファイルを作成して構成します。

オプション2: Dockerを使用する

docker pull zudsniper/mcp-image-recognition:latest

# Create a .env file first, then run:
docker run -it --env-file .env zudsniper/mcp-image-recognition

オプション3: ソースから

  1. リポジトリをクローンします。

git clone https://github.com/zudsniper/mcp-image-recognition.git
cd mcp-image-recognition
  1. 環境ファイルを作成して構成します。

cp .env.example .env
# Edit .env with your API keys and preferences
  1. プロジェクトをビルドします。

pip install -e .

統合

クロードデスクトップ統合

  1. Claude >設定>開発者>設定の編集> claude_desktop_config.jsonに移動します。

  2. インライン環境変数を使用して構成を追加します。

{
    "mcpServers": {
        "image-recognition": {
            "command": "uvx",
            "args": [
                "mcp-image-recognition"
            ],
            "env": {
                "VISION_PROVIDER": "openai",
                "OPENAI_API_KEY": "your-api-key",
                "OPENAI_MODEL": "gpt-4o"
            }
        }
    }
}

カーソル統合

カーソル設定> MCPに移動し、環境変数を貼り付けます。

VISION_PROVIDER=openai OPENAI_API_KEY=your-api-key OPENAI_MODEL=gpt-4o uvx mcp-image-recognition

Docker統合

オプション1: DockerHubイメージを使用する

インライン環境を使用して、Claude Desktop 構成にこれを追加します。

{
    "mcpServers": {
        "image-recognition": {
            "command": "docker",
            "args": [
                "run",
                "--rm",
                "-i",
                "zudsniper/mcp-image-recognition:latest"
            ],
            "env": {
                "VISION_PROVIDER": "openai",
                "OPENAI_API_KEY": "your-api-key", 
                "OPENAI_MODEL": "gpt-4o"
            }
        }
    }
}

Cloudflare の設定の場合:

"env": {
    "VISION_PROVIDER": "cloudflare",
    "CLOUDFLARE_API_KEY": "your-api-key",
    "CLOUDFLARE_ACCOUNT_ID": "your-account-id"
}

使用法

サーバーを直接実行する

pip/uvx でインストールした場合:

mcp-image-recognition

ソースディレクトリから:

python -m image_recognition_server.server

Docker の使用:

docker run -it --env-file .env zudsniper/mcp-image-recognition

MCP インスペクターを使用して開発モードで開始します。

npx @modelcontextprotocol/inspector mcp-image-recognition

利用可能なツール

  1. describe_image

    • 目的: チャットに直接アップロードされた画像を分析する

    • 入力: Base64エンコードされた画像データ

    • 出力: 画像の詳細な説明

    • 最適な用途: Claude、Cursor、またはその他のチャットインターフェースに直接アップロードされた画像

  2. describe_image_from_file

    • 目的: ファイルシステムからローカルイメージファイルを処理する

    • 入力: 画像ファイルへのパス

    • 出力: 画像の詳細な説明

    • 最適な用途: ファイルシステムへのアクセスを伴うローカル開発

    • : Docker で実行する場合はボリューム マッピングが必要です (Docker ファイル アクセスのセクションを参照)

  3. describe_image_from_url

    • 目的: 手動でダウンロードせずにWeb URLから画像を分析する

    • 入力: 公開されている画像のURL

    • 出力: 画像の詳細な説明

    • 最適な用途: Web画像、スクリーンショット、または公開URLを持つもの

    • : レート制限を回避するためにブラウザのようなヘッダーを使用します

環境設定

  • ANTHROPIC_API_KEY : Anthropic API キー。

  • OPENAI_API_KEY : OpenAI API キー。

  • CLOUDFLARE_API_KEY : Cloudflare API キー。

  • CLOUDFLARE_ACCOUNT_ID : Cloudflare アカウント ID。

  • VISION_PROVIDER : プライマリビジョンプロバイダー ( anthropicopenai 、またはcloudflare )。

  • FALLBACK_PROVIDER : オプションのフォールバック プロバイダー。

  • LOG_LEVEL : ログレベル (DEBUG、INFO、WARNING、ERROR)。

  • ENABLE_OCR : Tesseract OCR テキスト抽出を有効にします ( trueまたはfalse )。

  • TESSERACT_CMD : Tesseract 実行可能ファイルへのオプションのカスタム パス。

  • OPENAI_MODEL : OpenAIモデル(デフォルト: gpt-4o-mini )。他のモデルではOpenRouter形式を使用できます(例: anthropic/claude-3.5-sonnet:beta )。

  • OPENAI_BASE_URL : OpenAI APIのオプションのカスタムベースURL。OpenRouterの場合はhttps://openrouter.ai/api/v1に設定してください。

  • OPENAI_TIMEOUT : OpenAI API のオプションのカスタム タイムアウト (秒単位)。

  • CLOUDFLARE_MODEL : Cloudflare Workers AI モデル (デフォルト: @cf/llava-hf/llava-1.5-7b-hf )。

  • CLOUDFLARE_MAX_TOKENS : 生成するトークンの最大数 (デフォルト: 512 )。

  • CLOUDFLARE_TIMEOUT : Cloudflare API リクエストのタイムアウト(秒単位)(デフォルト: 60 )。

OpenRouterの使用

OpenRouterを使用すると、OpenAI API形式を使用してさまざまなモデルにアクセスできます。OpenRouterを使用するには、以下の手順に従ってください。

  1. OpenRouter から OpenAI API キーを取得します。

  2. .envファイル内のOPENAI_API_KEY OpenRouter API キーに設定します。

  3. OPENAI_BASE_URL``https://openrouter.ai/api/v1に設定します。

  4. OpenRouter 形式 (例: anthropic/claude-3.5-sonnet:beta ) を使用して、 OPENAI_MODEL目的のモデルに設定します。

  5. VISION_PROVIDER``openaiに設定します。

デフォルトモデル

  • 人類学的: claude-3.5-sonnet-beta

  • OpenAI: gpt-4o-mini

  • Cloudflare ワーカー AI: @cf/llava-hf/llava-1.5-7b-hf

  • OpenRouter: OPENAI_MODELanthropic/claude-3.5-sonnet:beta形式を使用します。

発達

開発セットアップガイド

開発環境の設定

  1. リポジトリをクローンします。

git clone https://github.com/zudsniper/mcp-image-recognition.git
cd mcp-image-recognition
  1. uv を使用したセットアップ (推奨):

# Install uv if not installed
pip install uv

# Create virtual environment and install deps
uv venv
uv venv activate
uv pip install -e .
uv pip install -e ".[dev]"

pip を使用した代替設定:

python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e .
# Or alternatively:
pip install -r requirements.txt
pip install -r requirements-dev.txt
  1. 環境を構成する:

cp .env.example .env
# Edit .env with your API keys

VS Code / DevContainer 開発

  1. リモートコンテナ拡張機能を使用してVS Codeをインストールする

  2. VS Codeでプロジェクトフォルダを開きます

  3. プロンプトが表示されたら「コンテナで再度開く」をクリックします

  4. 開発コンテナは、すべての依存関係がインストールされた状態でビルドされ、開きます。

Claude Desktop で開発コンテナを使用する

  1. 環境ファイルを docker compose に渡します。

# Modern Docker Compose V2 syntax
docker compose --env-file .env up -d
  1. Claude Desktop の設定に以下を追加します:

{
    "mcpServers": {
        "image-recognition": {
            "command": "docker",
            "args": [
                "exec",
                "-i",
                "mcp-image-recognition-dev",
                "python",
                "-m",
                "image_recognition_server.server"
            ],
            "env": {
                "VISION_PROVIDER": "openai",
                "OPENAI_API_KEY": "your-api-key",
                "OPENAI_MODEL": "gpt-4o"
            }
        }
    }
}

変更をローカルでテストする

  1. MCP サーバーを開発モードで実行します。

# Install the MCP Inspector if you haven't already
npm install -g @modelcontextprotocol/inspector

# Start the server with the Inspector
npx @modelcontextprotocol/inspector mcp-image-recognition
  1. Inspector は Web インターフェイス (通常はhttp://localhost:3000 ) を提供し、次の操作を実行できます。

    • ツールにリクエストを送信する

    • リクエスト/レスポンスログを表示する

    • 実装に関する問題をデバッグする

  2. テスト固有のツール:

    • describe_imageの場合: base64でエンコードされた画像を提供する

    • describe_image_from_fileの場合: ローカル画像ファイルへのパスを指定します

    • describe_image_from_urlの場合: 画像のURLを指定します

Claude Desktop との統合によるテスト

  1. 開発バージョンを使用するために、Claude Desktop の構成を一時的に変更します。

{
    "mcpServers": {
        "image-recognition": {
            "command": "python",
            "args": [
                "-m", "image_recognition_server.server"
            ],
            "cwd": "/path/to/your/mcp-image-recognition",
            "env": {
                "VISION_PROVIDER": "openai",
                "OPENAI_API_KEY": "your-api-key",
                "OPENAI_MODEL": "gpt-4o"
            }
        }
    }
}
  1. 変更を適用するには、Claude Desktopを再起動してください。

  2. 会話中に画像をアップロードしたり、画像のURLを提供したりしてテストします

テストの実行

すべてのテストを実行します。

run.bat test

特定のテスト スイートを実行します。

run.bat test server
run.bat test anthropic
run.bat test openai

Docker サポート

Docker イメージをビルドします。

docker build -t mcp-image-recognition .

コンテナを実行します。

docker run -it --env-file .env mcp-image-recognition

Docker ファイルアクセスの制限

DockerでMCPサーバーを実行する場合、 describe_image_from_fileツールはコンテナ内のファイルにのみアクセスできます。デフォルトでは、コンテナはホストシステム上のファイルにアクセスできません。ローカルファイルへのアクセスを有効にするには、MCPサーバーの設定時にディレクトリを明示的にマッピングする必要があります。

重要事項:Claude Desktop、Cursor、またはチャットに画像をアップロードするその他のプラットフォームを使用する場合、それらの画像はAnthropicのサーバーに保存され、ファイルシステムパスを介してMCPサーバーに直接アクセスすることはできません。これらの場合は、以下の手順を実行してください。

  1. チャットに直接アップロードされた画像には、 describe_imageツール(Base64 エンコードされた画像で動作します)を使用します。

  2. オンラインでホストされている画像には、新しいdescribe_image_from_urlツールを使用します。

  3. ローカルファイルの場合、ディレクトリがDockerコンテナに適切にマッピングされていることを確認してください。

ローカルディレクトリをDockerにマッピングする

Docker コンテナにシステム上の特定のフォルダへのアクセス権を与えるには、MCP サーバ構成を変更してボリューム マッピングを含めます。

{
    "mcpServers": {
        "image-recognition": {
            "command": "docker",
            "args": [
                "run",
                "--rm",
                "-i",
                "-v", "/path/on/host:/path/in/container",
                "zudsniper/mcp-image-recognition:latest"
            ],
            "env": {
                "VISION_PROVIDER": "openai",
                "OPENAI_API_KEY": "your-api-key",
                "OPENAI_MODEL": "gpt-4o"
            }
        }
    }
}

たとえば、ダウンロード フォルダーをマップするには、次のようにします。

  • Windows: -v "C:\\Users\\YourName\\Downloads:/app/images"

  • macOS/Linux: -v "/Users/YourName/Downloads:/app/images"

次に、コンテナ パスを使用してファイルにアクセスします: /app/images/your_image.jpg

ライセンス

MIT ライセンス - 詳細については LICENSE ファイルを参照してください。

Cloudflare Workers AIの使用

画像認識に Cloudflare Workers AI を使用するには:

  1. Cloudflare ダッシュボードにログインし、アカウントを選択します。

  2. AI > Workers AIに移動します。

  3. **「REST API の使用」**を選択し、Workers AI 権限を持つ API トークンを作成します。

  4. .envファイルで以下を設定します。

    • CLOUDFLARE_API_KEY : Cloudflare APIトークン

    • CLOUDFLARE_ACCOUNT_ID : CloudflareアカウントID

    • VISION_PROVIDER : cloudflareに設定

    • CLOUDFLARE_MODEL : オプション、デフォルトは@cf/llava-hf/llava-1.5-7b-hf

AIアシスタントと併用する

設定が完了すると、AI アシスタント (Claude など) は次の方法で画像を分析できるようになります。

  1. チャットで直接画像をアップロードする

  2. アシスタントは自動的にMCPサーバーを使用して画像を分析します。

  3. アシスタントは、ビジョンAPIの出力に基づいて画像を詳細に説明します。

画像をアップロードした後のプロンプトの例:

Please describe this image in detail.

特定のニーズに合わせてプロンプトをカスタマイズすることもできます。

What text appears in this image?

または

Is there any safety concern in this image?

リリース履歴

  • 1.2.1 (2025-03-28): ドキュメントの再編成と開発コンテナのワークフローの改善

  • 1.2.0 (2025-03-28): httpxとブラウザヘッダーによるURL画像取得を修正し、devcontainerのサポートを追加しました

  • 1.1.0 (2025-03-28): ツールの説明を強化して選択しやすくし、OpenAI SDKを最新バージョンに更新しました

  • 1.0.1 (2025-03-28): URLベースの画像認識機能の追加、Dockerドキュメントの改善、ファイルシステムの制限の修正

  • 1.0.0 (2025-03-28): llava-1.5-7b-hf モデル、Docker サポート、uvx 互換性を備えた Cloudflare Workers AI サポートを追加しました

  • 0.1.2 (2025-02-20): OCRエラー処理の改善とOCR機能の包括的なテストカバレッジの追加

  • 0.1.1 (2025-02-19): 画像からのテキスト抽出のためのTesseract OCRサポートを追加(オプション機能)

  • 0.1.0 (2025-02-19): AnthropicとOpenAIのビジョンサポートを備えた最初のリリース

ライセンス

MIT ライセンス - 詳細については LICENSE ファイルを参照してください。

貢献

貢献を歓迎します!お気軽にプルリクエストを送信してください。

新バージョンのリリース

新しいバージョンをリリースするには:

  1. pyproject.tomlsetup.pyのバージョンを更新します

  2. 変更をreleaseブランチにプッシュする

  3. GitHub Actions は自動的に次の処理を実行します。

    • テストを実行する

    • Dockerイメージをビルドしてプッシュする

    • PyPIに公開する

    • GitHubリリースを作成する

CI/CD に必要なリポジトリ シークレット:

  • DOCKERHUB_USERNAME - Docker Hub のユーザー名

  • DOCKERHUB_TOKEN - Docker Hub アクセストークン

  • PYPI_API_TOKEN - PyPI API トークン

Available Tools

3 tools
describe_imageA

Describe an image from base64-encoded data. Use for images directly uploaded to chat.

Best for: Images uploaded to the current conversation where no public URL exists.
Not for: Local files on your computer or images with public URLs.

Args:
    image: Base64-encoded image data
    prompt: Optional prompt to guide the description

Returns:
    str: Detailed description of the image
ParametersJSON Schema
NameRequiredDescriptionDefault
imageYes
promptNoPlease describe this image in detail.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It effectively communicates the tool's behavior: it describes images, requires base64-encoded data, accepts an optional prompt for guidance, and returns a detailed description. However, it doesn't mention potential limitations like image size constraints, processing time, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by usage guidelines and parameter explanations. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters, no annotations, and no output schema, the description provides strong coverage of purpose, usage, and parameter semantics. It could be more complete by mentioning return format details or potential errors, but it adequately supports tool selection and invocation given the context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful context beyond the schema's 0% coverage. It explains that 'image' expects 'Base64-encoded image data' and 'prompt' is 'Optional prompt to guide the description', clarifying the purpose of each parameter. The schema only provides titles and types without this semantic information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Describe an image') and resource ('from base64-encoded data'), distinguishing it from sibling tools that handle files or URLs. It explicitly mentions the use case for 'images directly uploaded to chat'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use ('Best for: Images uploaded to the current conversation where no public URL exists') and when not to use ('Not for: Local files on your computer or images with public URLs'), with clear alternatives implied through sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_image_from_fileA

Describe an image from a local file path. Requires proper file system access.

Best for: Local files when the server has filesystem access to the path.
Limitations: When using Docker, requires volume mapping (-v flag) to access host files.
Not recommended for: Images uploaded to chat or images with public URLs.

Args:
    filepath: Absolute path to the image file
    prompt: Optional prompt to guide the description

Returns:
    str: Detailed description of the image
ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYes
promptNoPlease describe this image in detail.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it requires proper file system access, mentions Docker-specific constraints (volume mapping), and notes the optional prompt parameter. However, it lacks details on error handling, rate limits, or authentication needs, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by usage guidelines and parameter details. Every sentence adds value, with no redundant information, making it efficient and easy to parse for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is largely complete. It covers purpose, usage, parameters, and behavioral constraints. However, it lacks details on the return value format beyond 'Detailed description of the image', and does not mention potential errors or side effects, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics beyond the schema by explaining that 'filepath' is an 'Absolute path to the image file' and 'prompt' is an 'Optional prompt to guide the description', which clarifies usage and constraints not evident from the schema alone. It covers both parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Describe an image') and resource ('from a local file path'), distinguishing it from sibling tools like describe_image and describe_image_from_url by specifying the local file source. It provides a verb+resource combination that is precise and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides usage guidelines with 'Best for:', 'Limitations:', and 'Not recommended for:' sections, clearly indicating when to use this tool (local files with filesystem access) versus alternatives (images uploaded to chat or with public URLs). It offers direct comparison to sibling tools by context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_image_from_urlA

Describe an image from a public URL. Most reliable method for web images.

Best for: Images with public URLs accessible from the internet.
Advantages: Works regardless of server deployment method (local/Docker).
Not for: Local files or images already uploaded to the current conversation.

Args:
    url: Direct URL to the image (must be publicly accessible)
    prompt: Optional prompt to guide the description

Returns:
    str: Detailed description of the image
ParametersJSON Schema
NameRequiredDescriptionDefault
promptNoPlease describe this image in detail.
urlYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates key traits: the tool requires publicly accessible URLs, works reliably for web images, and handles deployment-agnostic access. However, it lacks details on rate limits, error handling, or authentication needs, which would elevate the score further.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (overview, usage guidelines, arguments, returns) and front-loaded key information. Every sentence adds value, such as distinguishing use cases and explaining parameters, with no redundant or verbose content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is largely complete, covering purpose, usage, parameters, and return type. However, it could be enhanced with more behavioral details like response format or error cases, though the absence of an output schema makes this less critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning beyond the input schema, which has 0% description coverage. It clarifies that 'url' must be a 'Direct URL to the image (must be publicly accessible)' and 'prompt' is 'Optional prompt to guide the description', providing essential context not present in the schema's bare property definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Describe an image') and resource ('from a public URL'), distinguishing it from sibling tools that handle local files or already-uploaded images. It explicitly contrasts with 'describe_image' and 'describe_image_from_file' by specifying the input source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('Best for: Images with public URLs accessible from the internet') and when not to use it ('Not for: Local files or images already uploaded to the current conversation'). It also mentions advantages ('Works regardless of server deployment method') and implicitly references alternatives through sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose based on the image source: base64-encoded data, local file path, or public URL. The descriptions explicitly state what each tool is 'best for' and 'not for,' eliminating any ambiguity about when to use which tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun_from_source pattern (describe_image, describe_image_from_file, describe_image_from_url). This predictable naming makes it easy for an agent to understand the relationship between the tools and their specific use cases.

Tool Count5/5

With 3 tools, this server is well-scoped for its purpose of image recognition across different input methods. Each tool earns its place by covering a distinct scenario (uploaded images, local files, web URLs), making the set complete without being bloated.

Completeness5/5

The tool surface comprehensively covers all common ways to provide an image for description: base64 data, local files, and public URLs. There are no obvious gaps, as these three methods handle most practical use cases an agent would encounter in image recognition tasks.

Maintenance

ActivityInactive
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/mario-andreschak/mcp-image-recognition'

If you have feedback or need assistance with the MCP directory API, please join our Discord server