Skip to main content
Glama

j-can-see

English | 中文文档

npm version npm downloads license: MIT

An MCP server that gives text-only AI coding agents a vision toolkit: describe/OCR images, locate elements by pixel coordinates, diff images, pick exact colors, and vectorize graphics.

Why

Text-only models cannot read image files. j-can-see exposes vision as normal MCP tools, so Claude Code, Codex, and other MCP clients can work with local files, URLs, clipboard images, and screenshots without multimodal input support.

Related MCP server: MCP Vision Server

Requirements

  • Node.js >= 20

  • No installation required; the commands below run the published npm package via npx

Claude Code

claude mcp add j-can-see -s user \
    -e J_SEE_TOKEN='your-key' \
    -e J_SEE_BASE_URL='https://your-vision-endpoint' \
    -e J_SEE_MODEL='grok-4.5' \
    -- npx -y j-can-see

-s user writes to the user-level config, outside any git repository.

Manual

Add this to the mcpServers section of ~/.claude.json (macOS/Linux) or %USERPROFILE%\.claude.json (Windows):

"j-can-see": {
  "command": "npx",
  "args": ["-y", "j-can-see"],
  "env": {
    "J_SEE_TOKEN": "your-key",
    "J_SEE_BASE_URL": "https://your-vision-endpoint",
    "J_SEE_MODEL": "grok-4.5"
  }
}

Codex

codex mcp add j-can-see \
    --env J_SEE_TOKEN='your-key' \
    --env J_SEE_BASE_URL='https://your-vision-endpoint' \
    --env J_SEE_MODEL='grok-4.5' \
    -- npx -y j-can-see

Manual

Add this to ~/.codex/config.toml (macOS/Linux) or %USERPROFILE%\.codex\config.toml (Windows):

[mcp_servers.j-can-see]
type = "stdio"
command = "npx"
args = ["-y", "j-can-see"]

[mcp_servers.j-can-see.env]
J_SEE_TOKEN = "your-key"
J_SEE_BASE_URL = "https://your-vision-endpoint"
J_SEE_MODEL = "grok-4.5"

Config file locations

Client

macOS / Linux

Windows

Claude Code MCP

~/.claude.json

%USERPROFILE%\.claude.json

Claude Code hooks/settings

~/.claude/settings.json

%USERPROFILE%\.claude\settings.json

Codex MCP

~/.codex/config.toml

%USERPROFILE%\.codex\config.toml

Environment variables

Variable

Required

Default

Description

J_SEE_TOKEN

Yes

-

Vision model API key

J_SEE_BASE_URL

Yes

-

Vision endpoint base URL; trailing slashes are stripped

J_SEE_MODEL

Yes

-

Vision model name supported by your endpoint

J_SEE_API_SPEC

No

responses

responses / openai / anthropic

J_SEE_REASONING

No

none

Reasoning effort; only used by the openai spec

J_SEE_MAX_EDGE

No

1568

Max long-edge pixels for image compression

J_SEE_MAX_BYTES

No

52428800

Max source file size in bytes

J_SEE_MAX_PIXELS

No

40000000

Max decoded pixels, checked from the header before decode

J_SEE_TIMEOUT_MS

No

90000

Total budget per vision tool call in ms (incl. queueing and retries); timeouts auto-retry at lower resolution with a note in the result

J_SEE_OCR_TOTAL_TIMEOUT_MS

No

85000

Total budget for multi-chunk ocr_long in ms; returns partial results when exhausted

J_SEE_MAX_CONCURRENT

No

3

Global vision concurrency cap (1-8); auto-demotes on 429/5xx/timeout, probes back up on new calls

J_SEE_MAX_ATTEMPTS

No

3

Max attempts per vision call (first try + retries)

J_SEE_TASK_BUDGET_MS

No

85000

Total budget for see_image each-batch mode in ms; returns partial results + resume params when exhausted

J_SEE_SKILL_AUTO_INSTALL

No

1

Set to 0 to disable automatic skill installation

The server still starts without J_SEE_TOKEN / J_SEE_BASE_URL / J_SEE_MODEL: local pixel tools keep working, and vision tools return a clear config error when called.

API spec

J_SEE_API_SPEC

Endpoint

Use case

responses (default)

/v1/responses

OpenAI Responses, aligned with GPT-5 / Codex ecosystem

openai

/v1/chat/completions

OpenAI Chat Completions and OpenAI-compatible proxies

anthropic

/v1/messages

Anthropic native API, no proxy needed

If your endpoint returns 404 for /v1/responses, set J_SEE_API_SPEC=openai. To call Anthropic directly:

claude mcp add j-can-see -s user \
    -e J_SEE_API_SPEC='anthropic' \
    -e J_SEE_TOKEN='sk-ant-...' \
    -e J_SEE_BASE_URL='https://api.anthropic.com' \
    -e J_SEE_MODEL='claude-sonnet-4-5' \
    -- npx -y j-can-see

Tools

Vision tools

Tool

Purpose

see_image

Describe or compare images, zoom into regions

locate

Find one target and return its pixel coordinates

inspect

Enumerate all elements of one type with text and coordinates

ocr_long

OCR tall screenshots in chunks, merged with a dedup audit

Local tools (no vision config needed)

Tool

Purpose

crop

Crop a region to a file

image_diff

Pixel diff percentage and densest changed grid cells

colors

Exact dominant or candidate colors

trace

Vectorize flat high-contrast graphics to SVG

extract_fg

Cut a foreground icon into a transparent PNG

Detailed usage methodology: SKILL.md.

Agent skill

The server auto-installs SKILL.md into ~/.claude/skills, ~/.codex/skills, ~/.agents/skills, and ~/.zcode/skills on every start, unless J_SEE_SKILL_AUTO_INSTALL=0 is set.

npx j-can-see --skill        # install the skill manually
npx j-can-see --print-skill  # print SKILL.md contents
npx j-can-see --hook         # print the Claude Code hook script

Optional: Claude Code hook

Without the hook, a text-only model may try to Read an image file and fail. The hook redirects Read calls on image files to see_image:

mkdir -p ~/.claude/hooks
npx j-can-see --hook > ~/.claude/hooks/block-image-read.mjs
chmod +x ~/.claude/hooks/block-image-read.mjs

Then add this to ~/.claude/settings.json (%USERPROFILE%\.claude\settings.json on Windows):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Read",
        "hooks": [
          {
            "type": "command",
            "command": "node ~/.claude/hooks/block-image-read.mjs"
          }
        ]
      }
    ]
  }
}

Limitations

  • Linux clipboard is not supported; use a file path instead

  • Transparent PNGs are converted to JPEG

  • No retries or fallback: vision failures are reported as-is

Development

npm install
npm test
npm run build

Available Tools

1 tool
see_imageA

读取图片(本地文件 / URL / 剪贴板 / 最近截图)并通过视觉模型返回文字描述。用于主模型无多模态输入能力时的识图。

ParametersJSON Schema
NameRequiredDescriptionDefault
promptNo对图片的提问或指令,省略则默认详细描述图片内容与其中文字
sourceYes图片来源:本地路径(支持 ~ 展开)、http(s) URL、"latest"(截图目录最新图)、"clipboard"(剪贴板,仅 mac/win)

TDQS

A4/5.0
Behavior3/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 transparency. It discloses that a vision model is used and that the output is a textual description, which covers the core behavior. However, it does not detail output format, error scenarios, or limitations such as clipboard availability beyond what the schema mentions. It also does not explicitly confirm the operation is read-only, though '读取' implies it.

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 extremely concise, consisting of two short sentences that directly convey the function and usage context. It is front-loaded with the action and resource, and every word earns its place without any filler or repetition.

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 only two parameters and no output schema, the description, combined with the detailed schema, provides sufficient context: what it does, when to use it, and what it returns ('返回文字描述'). It lacks some optional behavioral details like error handling, but these are not critical for such a straightforward read operation.

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

Parameters3/5

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

The input schema already provides comprehensive descriptions for both parameters, covering source types and the default prompt behavior, so the description adds little beyond what the schema states. The description's mention of source categories is redundant with the schema but consistent. Baseline of 3 is appropriate given the high schema coverage.

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 tool's function with a specific verb ('读取图片') and resource ('image' from local file, URL, clipboard, recent screenshot), and further clarifies its purpose ('用于主模型无多模态输入能力时的识图'). This distinguishes it from potential alternative approaches and leaves no ambiguity about what it does.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool: when the main model lacks multimodal input capability. It also enumerates the types of image sources supported, providing practical context. However, it does not explicitly name alternative tools or exclusions, though the given context is sufficient for most use cases.

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

TDQS

A4.1/5.0
Disambiguation5/5

With only a single tool, there is no possibility of confusing it with any other tool. The tool's purpose is clearly defined around image understanding.

Naming Consistency5/5

The tool follows a clear verb_noun pattern (see_image), and since it is the only tool, the naming is internally consistent.

Tool Count3/5

A single tool feels thin for a server, but the scope is narrow (image description). It is borderline but not an extreme mismatch.

Completeness5/5

The tool covers all input methods mentioned (local file, URL, clipboard, recent screenshot) and fulfills the stated purpose of describing images for models without multimodal input.

Maintenance

ActivityMaintained
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/PichurChill/j-can-see'

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