j-can-see
Allows sending images to OpenAI vision models via the OpenAI Responses or Chat Completions API, returning text descriptions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@j-can-seeDescribe the screenshot in my clipboard."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
j-can-see
English | 中文文档
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
One command (recommended)
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
One command (recommended)
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-seeManual
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 Code hooks/settings |
|
|
Codex MCP |
|
|
Environment variables
Variable | Required | Default | Description |
| Yes | - | Vision model API key |
| Yes | - | Vision endpoint base URL; trailing slashes are stripped |
| Yes | - | Vision model name supported by your endpoint |
| No |
|
|
| No |
| Reasoning effort; only used by the |
| No |
| Max long-edge pixels for image compression |
| No |
| Max source file size in bytes |
| No |
| Max decoded pixels, checked from the header before decode |
| No |
| Total budget per vision tool call in ms (incl. queueing and retries); timeouts auto-retry at lower resolution with a note in the result |
| No |
| Total budget for multi-chunk |
| No |
| Global vision concurrency cap (1-8); auto-demotes on 429/5xx/timeout, probes back up on new calls |
| No |
| Max attempts per vision call (first try + retries) |
| No |
| Total budget for |
| No |
| Set to |
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
| Endpoint | Use case |
|
| OpenAI Responses, aligned with GPT-5 / Codex ecosystem |
|
| OpenAI Chat Completions and OpenAI-compatible proxies |
|
| 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-seeTools
Vision tools
Tool | Purpose |
| Describe or compare images, zoom into regions |
| Find one target and return its pixel coordinates |
| Enumerate all elements of one type with text and coordinates |
| OCR tall screenshots in chunks, merged with a dedup audit |
Local tools (no vision config needed)
Tool | Purpose |
| Crop a region to a file |
| Pixel diff percentage and densest changed grid cells |
| Exact dominant or candidate colors |
| Vectorize flat high-contrast graphics to SVG |
| 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 scriptOptional: 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.mjsThen 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 buildAvailable Tools
1 toolsee_imageA
读取图片(本地文件 / URL / 剪贴板 / 最近截图)并通过视觉模型返回文字描述。用于主模型无多模态输入能力时的识图。
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | 对图片的提问或指令,省略则默认详细描述图片内容与其中文字 | |
| source | Yes | 图片来源:本地路径(支持 ~ 展开)、http(s) URL、"latest"(截图目录最新图)、"clipboard"(剪贴板,仅 mac/win) |
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 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.
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.
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.
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.
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.
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
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.
The tool follows a clear verb_noun pattern (see_image), and since it is the only tool, the naming is internally consistent.
A single tool feels thin for a server, but the scope is narrow (image description). It is borderline but not an extreme mismatch.
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
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
OCR, transcription, file extraction, and image generation for AI agents via MCP.
MCP server for Qwen Image 3 AI image generation
Focused MCP server for OpenAI image/audio generation (v2.0.0). Wraps endpoints via HAPI CLI.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables any LLM to describe images from file paths, URLs, or base64 data by forwarding them to a supported vision provider such as OpenAI, Anthropic, or local Ollama models.1,06010MIT
- FlicenseNot gradedqualityBmaintenanceA versatile MCP server that adds vision capabilities (image analysis, OCR, image/video generation) to AI models lacking native vision, with support for multiple providers and automatic task routing.1
- FlicenseAqualityCmaintenanceMCP server enabling LLM clients without vision capability to process images by delegating to local Ollama vision models. Supports describing images, OCR, asking questions, and processing clipboard images.4
- FlicenseAqualityDmaintenanceMCP server for vision capabilities, enabling screenshot, camera, and image analysis using Ollama vision models.41
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/PichurChill/j-can-see'
If you have feedback or need assistance with the MCP directory API, please join our Discord server