
Can See
io.github.HurleySkPublished by GitHub account HurleySkv0.4.0Updated Oct 24, 2026
Let AI agents see and interact with terminal/CLI apps via PNG screenshots
Overview
A local MCP server that launches terminal/CLI apps in virtual terminals so an assistant can screenshot them as PNGs, read their output, and send keys to drive T
- What you can do
- Launch CLI apps in virtual terminal sessions and list, close or close all sessions, with process status and exit codes available. Capture the terminal as PNG screenshots, including a region, a text-matched region, or a diff against a saved baseline. Read the visible buffer or scrollback as plain text and query cell characters, colors and attributes. Wait for text, idle output, a color at a position, or process exit. Send keystrokes and typed text to interact with the app. Record frames into an animated GIF.
- When to use it
- Useful when debugging TUI apps, interactive CLI wizards or anything whose visual terminal output (colors, layout, cursor position) matters more than plain text. Lets an agent see what a user sees and step through interactive prompts.
- Requirements
- Runs locally over stdio as the npm package can-see (npx -y can-see or a global install). Needs Node.js and native compilation of node-canvas and node-pty, so build tools are required: Visual Studio Build Tools on Windows, Xcode Command Line Tools on macOS, and Cairo/Pango development libraries on Linux. Optional environment variables DEFAULT_COLS, DEFAULT_ROWS and IDLE_TIMEOUT_MS tune terminal size and idle auto-close.
Installation
In SourceWeft
- Open Can See in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
can-see
[npm version] [npm downloads] [license] [node]
MCP server that lets AI agents see and interact with terminal/CLI applications through virtual terminals and PNG screenshots.
Built for Claude Code and any MCP-compatible agent.
Why?
Some things are easier to show than describe. When debugging a TUI app, an interactive CLI wizard, or anything with visual terminal output, can-see lets the agent see exactly what you see — colors, layout, cursor position, and all.
How it works
- Launch a CLI app in a virtual terminal (node-pty + @xterm/headless)
- Screenshot the terminal as a PNG image (rendered via node-canvas)
- Send keys/text to interact with the app
- Screenshot again to see the result
- Close the session when done
Installation
Prerequisites
can-see depends on node-canvas (Cairo) and node-pty, which require native compilation. Most systems will need:
- Windows: Visual Studio Build Tools (C++ workload) —
npm install --global windows-build-toolsor install from Visual Studio Installer - macOS: Xcode Command Line Tools —
xcode-select --install - Linux:
sudo apt install build-essential libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev librsvg2-dev
Configuration
Claude Code
Add to your project's .mcp.json:
Or if installed globally:
Other MCP clients
can-see uses stdio transport. Point your MCP client at the can-see binary or npx -y can-see.
Tools
Supported keys
Enter, Tab, Escape, Backspace, Space, Up, Down, Left, Right, Home, End, Delete, PageUp, PageDown, Ctrl+A through Ctrl+Z.
Environment variables
Example usage
From an MCP-connected agent:
Changelog
0.5.0
New tools:
wait_for_exit— wait for process exit, get exit code and signalclose_all— kill all active sessions at onceget_process_status— distinguish "app is idle" from "app has exited"screenshot_text_region— find text in viewport, capture surrounding area as PNG
Enhancements:
launchacceptsenvparameter for custom environment variableswait_for_idlesupportsexcludePattern(regex) for dynamic row exclusion in stableMs modestop_recordingreturnsframeCountanddurationMsmetadata alongside GIFget_cell_infosupportscompactoption for reduced output ({char, fg, bold}only)
Bug fixes:
- Fixed
wait_for_textandwait_for_colorrace condition where text/color present in the final buffer was missed when the process exited simultaneously - Added mutual exclusion validation when both
stableMsandidleMsare passed towait_for_idle
License
MIT
Source: README.md at commit 98dd50b
Tools
0Version history
1- v0.4.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts