Skip to main content
Glama

Read Image MCP

read-image-mcp is a stdio MCP server that lets agents without native vision ask an OpenAI-compatible vision model to read images.

It exposes one tool, read_image, with three modes:

  • describe: general image description

  • ocr: visible text and layout notes

  • structured: JSON extraction with an optional question and optional JSON Schema

Run From GitHub With npx

Recommended MCP command:

{
  "command": "npx",
  "args": [
    "-y",
    "--package",
    "github:xiayangqun/Read-Image-MCP#main",
    "read-image-mcp"
  ],
  "env": {
    "READ_IMAGE_MCP_CONFIG": "/absolute/path/read-image-mcp.config.json"
  }
}

#main is a rolling GitHub dependency. Restarting a client does not guarantee that npm fetches the newest commit because npm may reuse its cache. If you need an immediate refresh, clear npm cache or temporarily reference a specific commit SHA.

Related MCP server: vision-mcp

Config

Create a config file:

{
  "default_profile": "default",
  "profiles": {
    "default": {
      "base_url": "https://api.example.com/v1",
      "api_key": "your-api-key",
      "model": "vision-model-name",
      "timeout_ms": 60000
    }
  }
}

Lookup order:

  1. READ_IMAGE_MCP_CONFIG

  2. read-image-mcp.config.json in the current working directory

  3. ~/.config/read-image-mcp/config.json

If api_key is empty or omitted, no Authorization header is sent. This is useful for local OpenAI-compatible gateways.

MCP Client Examples

Claude Desktop, Cursor, Codex, and OpenCode all use the same basic stdio command shape:

{
  "mcpServers": {
    "read-image": {
      "command": "npx",
      "args": [
        "-y",
        "--package",
        "github:xiayangqun/Read-Image-MCP#main",
        "read-image-mcp"
      ],
      "env": {
        "READ_IMAGE_MCP_CONFIG": "/absolute/path/read-image-mcp.config.json"
      }
    }
  }
}

This repository is xiayangqun/Read-Image-MCP.

Tool Input

{
  "source": {
    "type": "path",
    "value": "/absolute/path/image.png"
  },
  "mode": "describe"
}

Supported source types:

  • path

  • url

  • base64

  • data_url

structured mode supports:

{
  "source": {
    "type": "url",
    "value": "https://example.com/screenshot.png"
  },
  "mode": "structured",
  "question": "Which UI error is visible?",
  "schema": {
    "type": "object",
    "properties": {
      "error": { "type": "string" }
    },
    "required": ["error"],
    "additionalProperties": false
  }
}

Local Development

npm install
npm test -- --run
npm run typecheck
npm run build
node dist/index.js --help

The built dist/ directory is committed so npx --package github:...#main read-image-mcp can run directly from GitHub without client-side TypeScript compilation.

Available Tools

1 tool
read_imageRead ImageC

Read an image through an OpenAI-compatible vision model. Supports path, url, base64, and data_url sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes
schemaNo
sourceYes
questionNo
raw_responseNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description is the sole source of behavioral information. It discloses the ability to handle different source types, but nothing about permissions, side effects, rate limits, or return format. This minimal disclosure is inadequate for a tool with no other behavioral annotations.

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 exceptionally concise, using two short sentences to convey the core function and supported sources. Every word adds value, making it a model of efficiency.

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

Completeness2/5

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

The tool has 5 parameters and nested objects, yet the description only addresses the source type. It omits explanations of mode options, the question field, raw_response, and the schema parameter. This incompleteness for a moderately complex tool is a significant gap.

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

Parameters2/5

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

The schema has 5 parameters, and the description only hints at source type possibilities, not the mode, question, schema, or raw_response fields. Given the 0% schema description coverage, the description fails to compensate for most parameters.

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

Purpose4/5

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

The description clearly states the tool's function: reading an image through an OpenAI-compatible vision model. It also specifies supported source types (path, url, base64, data_url), which adds precision. Without sibling tools, it doesn't need to differentiate.

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

Usage Guidelines2/5

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

The description provides no guidance on when to choose this tool over alternatives, nor any context for its appropriate use cases. It doesn't mention exclusions or prerequisites, leaving the agent without decision-making information.

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. Dates show when Glama detected each change.

  1. 1 tool updatev0.1.0
    • First observedread_image

TDQS

B3.3/5.0
Disambiguation5/5

With only one tool, there is no possibility of confusing it with others. The tool's purpose is clearly defined, so an agent can unambiguously select it when needing to read an image.

Naming Consistency5/5

The single tool name 'read_image' follows a clear verb_noun pattern, which is consistent. There are no other tools to create inconsistencies.

Tool Count3/5

One tool is on the lower end of typical tool counts. While the server's purpose is narrow, a single tool feels thin; however, it is appropriate for the specific functionality provided.

Completeness5/5

The tool covers all common input methods for images (path, URL, base64, data URL), so there are no obvious gaps in functionality for its stated purpose.

Maintenance

ActivityStale
ResponsivenessSyncing

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

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/xiayangqun/Read-Image-MCP'

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