Skip to main content
Glama
README.md
# Image Parse MCP

[![中文文档](https://img.shields.io/badge/文档-中文-orange)](README_zh.md)

A multimodal image analysis MCP server that connects to **any OpenAI-compatible vision API**. Provide an image (URL, local path, or base64) and a prompt — get back a detailed analysis from the multimodal LLM of your choice.

## Supported Providers

Any provider with an OpenAI-compatible chat completions endpoint:

- **OpenAI** — GPT-4o, GPT-4-vision, GPT-4.1-mini
- **Anthropic** (via compatible proxy / gateway)
- **Google Gemini** (via OpenAI-compatible endpoint)
- **Azure OpenAI**
- **Local models** (Ollama, vLLM, LM Studio with OpenAI-compatible servers)
- **Alibaba Bailian** — Qwen-VL (via OpenAI-compatible endpoint)
- **Third-party** (DeepSeek, Groq, Together.ai, OpenRouter, etc.)

## Configuration

Set these environment variables before launching the server:

| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `IMAGE_PARSE_API_KEY` | **Yes** | — | API key for your provider |
| `IMAGE_PARSE_BASE_URL` | No | `https://api.openai.com/v1` | API base URL |
| `IMAGE_PARSE_MODEL` | No | `gpt-4o` | Multimodal model name |

### Example: OpenAI

```bash
export IMAGE_PARSE_API_KEY=sk-...
export IMAGE_PARSE_BASE_URL=https://api.openai.com/v1
export IMAGE_PARSE_MODEL=gpt-4o
```

### Example: Google Gemini (via AI Studio)

```bash
export IMAGE_PARSE_API_KEY=your-gemini-api-key
export IMAGE_PARSE_BASE_URL=https://generativelanguage.googleapis.com/v1beta/openai
export IMAGE_PARSE_MODEL=gemini-2.5-flash
```

### Example: Ollama (local)

```bash
export IMAGE_PARSE_API_KEY=ollama
export IMAGE_PARSE_BASE_URL=http://localhost:11434/v1
export IMAGE_PARSE_MODEL=llava
```

### Example: Azure OpenAI

```bash
export IMAGE_PARSE_API_KEY=your-azure-api-key
export IMAGE_PARSE_BASE_URL=https://your-resource.openai.azure.com/openai/deployments/your-deployment
export IMAGE_PARSE_MODEL=gpt-4o
```

### Example: Alibaba Bailian (Qwen-VL)

```bash
export IMAGE_PARSE_API_KEY=your-dashscope-api-key
export IMAGE_PARSE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
export IMAGE_PARSE_MODEL=qwen-vl-max
```

### Example: DeepSeek

```bash
export IMAGE_PARSE_API_KEY=your-deepseek-api-key
export IMAGE_PARSE_BASE_URL=https://api.deepseek.com/v1
export IMAGE_PARSE_MODEL=deepseek-chat
```

## Install & Run

```bash
# Clone or enter the project directory
cd image-parse

# Run directly (uv handles venv + deps automatically)
uv run image-parse-mcp
```

### Claude Code Configuration

Add to your Claude Code MCP config (`~/.claude/claude.json` or project `.mcp.json`):

```json
{
  "mcpServers": {
    "image-parse": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "--directory", "path/to/image-parse", "image-parse-mcp"],
      "env": {
        "IMAGE_PARSE_API_KEY": "sk-...",
        "IMAGE_PARSE_BASE_URL": "https://api.openai.com/v1",
        "IMAGE_PARSE_MODEL": "gpt-4o"
      }
    }
  }
}
```

## Tool: `analyze_image`

| Parameter | Required | Description |
|-----------|----------|-------------|
| `image_source` | Yes | URL, local file path, base64 string, or data URI |
| `prompt` | Yes | What to analyze / extract from the image |
| `mime_type` | No | Override auto-detected MIME type (e.g. `image/webp`) |

### What agents use it for

- Describe the contents of an image
- Extract text from a screenshot (OCR)
- Read and interpret charts, graphs, data visualizations
- Analyze UI screenshots (layout, elements, issues)
- Identify objects, colours, people, or scenes in photos
- Compare visual information across multiple images
- Diagnose errors from error screenshots

### Input forms for `image_source`

```
# URL
https://example.com/screenshot.png

# Local file path (on the host machine)
/Users/me/Downloads/chart.png

# Base64 data URI
data:image/png;base64,iVBORw0KGgo...

# Raw base64
iVBORw0KGgo...
```

## Development

```bash
# Create venv and install deps
uv venv
uv pip install -e .

# Run tests
uv run python -m pytest
```

TDQS

A4.4/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap. Agents can unambiguously select the correct tool for any image analysis task.

Naming Consistency5/5

The single tool uses a clear verb_noun pattern ('analyze_image'), which is consistent with best practices. No other tools exist to introduce inconsistency.

Tool Count4/5

One tool is on the low end for a general utility, but it fits the narrow scope of image parsing via LLM. A single unified tool can be sufficient if it covers the intended use cases without needing multiple specialized tools.

Completeness4/5

The tool covers core image analysis needs (description, OCR, chart understanding) through a multimodal LLM. Minor gaps like batch processing or model selection are absent, but the core functionality is well-covered for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues