MCP Image Recognition Server
MCP 이미지 인식 서버
Anthropic, OpenAI, Cloudflare Workers AI 비전 API를 사용하여 이미지 인식 기능을 제공하는 MCP 서버입니다. 버전 1.2.1.

저자
원래 이 프로젝트는 @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 에서 다운로드하고 설치하세요.
리눅스:
sudo apt-get install tesseract-ocrmacOS:
brew install tesseract
설치
옵션 1: uvx 사용(Claude Desktop 및 Cursor에 권장)
uv 패키지 관리자를 설치하세요:
지엑스피1
uvx로 패키지를 설치하세요:
uvx install mcp-image-recognition구성 섹션에 설명된 대로 환경 파일을 만들고 구성하세요.
옵션 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: 소스에서
저장소를 복제합니다.
git clone https://github.com/zudsniper/mcp-image-recognition.git
cd mcp-image-recognition환경 파일을 만들고 구성하세요.
cp .env.example .env
# Edit .env with your API keys and preferences프로젝트를 빌드하세요:
pip install -e .완성
Claude 데스크톱 통합
Claude > 설정 > 개발자 > 구성 편집 > claude_desktop_config.json 으로 이동하세요.
인라인 환경 변수를 사용하여 구성을 추가합니다.
{
"mcpServers": {
"image-recognition": {
"command": "uvx",
"args": [
"mcp-image-recognition"
],
"env": {
"VISION_PROVIDER": "openai",
"OPENAI_API_KEY": "your-api-key",
"OPENAI_MODEL": "gpt-4o"
}
}
}
}커서 통합
커서 설정 > MCP 로 이동하여 env 변수와 함께 붙여넣습니다.
VISION_PROVIDER=openai OPENAI_API_KEY=your-api-key OPENAI_MODEL=gpt-4o uvx mcp-image-recognitionDocker 통합
옵션 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.serverDocker 사용:
docker run -it --env-file .env zudsniper/mcp-image-recognitionMCP 검사기를 사용하여 개발 모드를 시작합니다.
npx @modelcontextprotocol/inspector mcp-image-recognition사용 가능한 도구
describe_image목적 : 채팅에 직접 업로드된 이미지 분석
입력 : Base64로 인코딩된 이미지 데이터
출력 : 이미지에 대한 자세한 설명
가장 적합 : Claude, Cursor 또는 기타 채팅 인터페이스에 직접 업로드된 이미지
describe_image_from_file목적 : 파일 시스템에서 로컬 이미지 파일을 처리합니다.
입력 : 이미지 파일 경로
출력 : 이미지에 대한 자세한 설명
가장 적합한 용도 : 파일 시스템 액세스를 통한 로컬 개발
참고 : Docker에서 실행하는 경우 볼륨 매핑이 필요합니다(Docker 파일 액세스 섹션 참조)
describe_image_from_url목적 : 수동으로 다운로드하지 않고 웹 URL의 이미지 분석
입력 : 공개적으로 접근 가능한 이미지의 URL
출력 : 이미지에 대한 자세한 설명
가장 적합한 대상 : 웹 이미지, 스크린샷 또는 공개 URL이 있는 모든 항목
참고 : 속도 제한을 피하기 위해 브라우저와 유사한 헤더를 사용합니다.
환경 구성
ANTHROPIC_API_KEY: Anthropic API 키입니다.OPENAI_API_KEY: OpenAI API 키입니다.CLOUDFLARE_API_KEY: Cloudflare API 키.CLOUDFLARE_ACCOUNT_ID: Cloudflare 계정 ID입니다.VISION_PROVIDER: 주요 비전 제공자(anthropic,openai또는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를 사용하려면 다음 단계를 따르세요.
OpenRouter에서 OpenAI API 키를 얻습니다.
.env파일에서OPENAI_API_KEYOpenRouter API 키로 설정합니다.OPENAI_BASE_URL``https://openrouter.ai/api/v1로 설정합니다.OpenRouter 형식(예:
anthropic/claude-3.5-sonnet:beta)을 사용하여OPENAI_MODEL원하는 모델로 설정합니다.VISION_PROVIDER``openai로 설정합니다.
기본 모델
인류학적:
claude-3.5-sonnet-betaOpenAI:
gpt-4o-miniCloudflare 작업자 AI:
@cf/llava-hf/llava-1.5-7b-hfOpenRouter:
OPENAI_MODEL에서anthropic/claude-3.5-sonnet:beta형식을 사용합니다.
개발
개발 설정 가이드
개발 환경 설정
저장소를 복제합니다.
git clone https://github.com/zudsniper/mcp-image-recognition.git
cd mcp-image-recognitionuv로 설정(권장):
# 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
환경 구성:
cp .env.example .env
# Edit .env with your API keysVS 코드/DevContainer 개발
원격 컨테이너 확장 기능으로 VS Code 설치
VS Code에서 프로젝트 폴더를 엽니다.
메시지가 표시되면 "컨테이너에서 다시 열기"를 클릭하세요.
devcontainer는 모든 종속성이 설치된 상태로 빌드되고 열립니다.
Claude Desktop과 함께 개발 컨테이너 사용
docker compose에 환경 파일 전달:
# Modern Docker Compose V2 syntax
docker compose --env-file .env up -dClaude 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"
}
}
}
}로컬에서 변경 사항 테스트
개발 모드에서 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-recognitionInspector는 웹 인터페이스(일반적으로 http://localhost:3000 )를 제공하며 이를 통해 다음을 수행할 수 있습니다.
도구에 요청 보내기
요청/응답 로그 보기
구현과 관련된 문제 디버깅
테스트용 도구:
describe_image의 경우: base64로 인코딩된 이미지를 제공하세요.describe_image_from_file의 경우: 로컬 이미지 파일에 대한 경로를 제공합니다.describe_image_from_url의 경우: 이미지의 URL을 제공하세요.
테스트를 위해 Claude Desktop과 통합
개발 버전을 사용하도록 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"
}
}
}
}변경 사항을 적용하려면 Claude Desktop을 다시 시작하세요.
대화에서 이미지를 업로드하거나 이미지 URL을 제공하여 테스트하세요.
테스트 실행
모든 테스트를 실행합니다.
run.bat test특정 테스트 모음을 실행합니다.
run.bat test server
run.bat test anthropic
run.bat test openai도커 지원
Docker 이미지를 빌드합니다.
docker build -t mcp-image-recognition .컨테이너를 실행합니다.
docker run -it --env-file .env mcp-image-recognitionDocker 파일 액세스 제한
Docker에서 MCP 서버를 실행할 때 describe_image_from_file 도구는 컨테이너 내부의 파일에만 액세스할 수 있습니다. 기본적으로 컨테이너는 호스트 시스템의 파일에는 액세스할 수 없습니다. 로컬 파일에 대한 액세스를 활성화하려면 MCP 서버를 구성할 때 디렉터리를 명시적으로 매핑해야 합니다.
중요 참고 사항 : Claude Desktop, Cursor 또는 채팅에 이미지가 업로드되는 다른 플랫폼을 사용하는 경우, 해당 이미지는 Anthropic 서버에 저장되며 파일 시스템 경로를 통해 MCP 서버에 직접 접근할 수 없습니다. 이러한 경우 다음을 수행해야 합니다.
채팅에 직접 업로드된 이미지의 경우
describe_image도구(base64로 인코딩된 이미지 사용)를 사용하세요.온라인에 호스팅된 이미지에 대해 새로운
describe_image_from_url도구를 사용하세요.로컬 파일의 경우 디렉토리가 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 라이센스 - 자세한 내용은 라이센스 파일을 참조하세요.
Cloudflare Workers AI 사용
Cloudflare Workers AI를 이미지 인식에 사용하려면:
Cloudflare 대시보드 에 로그인하고 계정을 선택하세요.
AI > Workers AI 로 이동합니다.
REST API 사용을 선택하고 Workers AI 권한이 있는 API 토큰을 만듭니다.
.env파일에서 다음을 설정하세요.CLOUDFLARE_API_KEY: Cloudflare API 토큰CLOUDFLARE_ACCOUNT_ID: Cloudflare 계정 IDVISION_PROVIDER:cloudflare로 설정CLOUDFLARE_MODEL: 선택 사항이며 기본값은@cf/llava-hf/llava-1.5-7b-hf
AI 어시스턴트와 함께 사용
구성이 완료되면 AI 도우미(예: Claude)는 다음과 같은 방법으로 이미지를 분석할 수 있습니다.
채팅에 직접 이미지 업로드
보조자는 자동으로 MCP 서버를 사용하여 이미지를 분석합니다.
어시스턴트는 비전 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): 문서 재구성 및 devcontainer 워크플로 개선
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 라이센스 - 자세한 내용은 라이센스 파일을 참조하세요.
기여하다
기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.
새로운 버전 출시
새 버전을 출시하려면:
pyproject.toml및setup.py의 버전을 업데이트합니다.release브랜치에 변경 사항 푸시GitHub Actions는 자동으로 다음을 수행합니다.
테스트 실행
Docker 이미지 빌드 및 푸시
PyPI에 게시
GitHub 릴리스 만들기
CI/CD에 필요한 저장소 비밀:
DOCKERHUB_USERNAME- Docker Hub 사용자 이름DOCKERHUB_TOKEN- Docker Hub 액세스 토큰PYPI_API_TOKEN- PyPI API 토큰
Available Tools
3 toolsdescribe_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
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | ||
| prompt | No | Please describe this image in detail. |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | ||
| prompt | No | Please describe this image in detail. |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | Please describe this image in detail. | |
| url | Yes |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
OCR and document understanding: extract text from images, then summarize or translate it.
Video, audio, and image processing for AI agents: convert, transcribe, upscale - 150+ operations.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables image analysis and understanding using Vision Language Models through OpenAI-compatible APIs. Supports analyzing images from URLs or local files with custom prompts.12MIT
- AlicenseAqualityCmaintenanceEnables image analysis using any OpenAI-compatible vision API, supporting URLs, local files, or base64 input with custom prompts.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables image recognition using vision models via OpenAI-compatible APIs, supporting multiple platforms like OpenAI, DeepSeek, and Ollama.
- AlicenseAqualityBmaintenanceEnables image analysis, OCR, and text-to-image generation through OpenAI-compatible APIs. Supports local paths, URLs, or base64 images with configurable models and backup endpoints.355MIT
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/mario-andreschak/mcp-image-recognition'
If you have feedback or need assistance with the MCP directory API, please join our Discord server