Visual Intent Layer MCP server
Commit Sep 20, 2026Allows an AI agent to receive precise visual annotations by pointing, dragging, or boxing targets within a browser-rendered interface.
Also known as willa-code/visual-intent-layer
- Stars
- 0
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 0.4.0
- Last commit
- Sep 20, 2026
- License
- Apache-2.0
What is Visual Intent Layer MCP?
Visual Intent Layer allows an AI agent to receive precise visual annotations by pointing, dragging, or boxing targets within a browser-rendered interface.
Summary generated from the project's README
About Visual Intent Layer MCP server
Providing precise visual context to AI agents is what this local MCP server enables for developers working with local web applications or saved HTML documents. Instead of relying on text descriptions to explain where elements are located, users can interact with a browser-rendered interface to point, drag, or box specific targets. This creates a direct link between human visual intent and agent action.
The server runs locally on your machine and requires Node.js 20 or newer along with a web browser. It functions by launching a browser and binding a loopback port to display a Review Surface. Because it relies on this local display, it cannot be used from a remote host, a container, or a cloud-based agent.
Users manage their workflow through a Review Surface where they can group targets into annotations, attach reference images, and track the delivery state of each request. This setup allows for human judgment, letting you manually review and decide on each annotation to ensure the agent follows your exact instructions.
What you can do with it
- 1Specify UI changes visuallyAn AI agent can receive instructions by having a user point, drag, or box targets within a browser interface.
- 2Organize complex visual feedbackYou can group multiple visual targets into a single annotation and include reference images for clarity.
- 3Manually audit agent actionsA developer can use the Review Surface to inspect and decide on the status of each annotation by hand.
- 4Track annotation progressThe system maintains a record of unsent and delivered annotations along with their resolution state.
Written from the project's README. Every use case is checked against a quote from it.
How to install Visual Intent Layer MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall Visual Intent Layer MCP in Claude Code
$ claude mcp add visual-intent-layer -- npx -y visual-intent-layerInstall Visual Intent Layer MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"visual-intent-layer": {
"command": "npx",
"args": [
"-y",
"visual-intent-layer"
]
}
}
}Install Visual Intent Layer MCP in VS Code
.vscode/mcp.json
{
"servers": {
"visual-intent-layer": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"visual-intent-layer"
]
}
}
}Install Visual Intent Layer MCP in VS Code CLI
$ code --add-mcp '{"name":"visual-intent-layer","type":"stdio","command":"npx","args":["-y","visual-intent-layer"]}'Install Visual Intent Layer MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"visual-intent-layer": {
"command": "npx",
"args": [
"-y",
"visual-intent-layer"
]
}
}
}Install Visual Intent Layer MCP in Codex
$ codex mcp add visual-intent-layer -- npx -y visual-intent-layerInstall Visual Intent Layer MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.visual-intent-layer] command = "npx" args = ["-y", "visual-intent-layer"]
Install Visual Intent Layer MCP in Gemini CLI
$ gemini mcp add -s user visual-intent-layer npx -- -y visual-intent-layerInstall Visual Intent Layer MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"visual-intent-layer": {
"command": "npx",
"args": [
"-y",
"visual-intent-layer"
]
}
}
}Automated checks
Ran Nov 15, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachableRepository not reachablegithub.com/willa-code/visual-intent-layer ↗Finding
- Package names this repository as its sourcevisual-intent-layer names willa-code/visual-intent-layer as sourcenpmjs.com/package/visual-intent-layer ↗Pass
- Build provenance (Sigstore attestation)Sigstore attestation for visual-intent-layernpmjs.com/package/visual-intent-layer/v/0.4.0#provenance ↗Pass
- Open source license (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-09-20github.com/willa-code/visual-intent-layer ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from visual-intent-layerPass
- No critical advisory in the package or its dependencies100 resolved dependencies checked; no critical advisoryosv.dev ↗Pass
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubVisual Intent Layer
Point at a browser-rendered interface, describe what should change, and let an agent work from that precise visual context. Visual Intent Layer is a local MCP server and Review Surface for saved HTML documents and local web apps.
About
hello world! this project is a testbed for me to experience new/random/trending stuff! fyi on what i was testing:
- pstack's verification skills
- matt's skills
- ds v4.1 flash via openrouter in pi
- ...
Key features
- Direct pointing. Point, drag, or box visible targets instead of describing their location in prose.
- Annotations with context. Group targets into one Annotation and attach reference images when useful.
- Delivery state you can read. Keep unsent and delivered Annotations together with their revision and resolution state.
- Human judgement. Review the result in a browser and decide each Annotation by hand.
- Local by default. Keep review data on the local machine.
Mobile builds, native windows, design files, and PDFs are outside the supported surface.
Requirements
- Node.js 20 or newer
- A browser on the machine running the server
- An MCP-capable agent, if you want an agent to use the Review Surface
No hosted account or Rust toolchain is required.
Quickstart
Register the local stdio server with your agent, then restart the agent:
{
"mcpServers": {
"visual-intent-layer": {
"command": "npx",
"args": ["-y", "--package", "visual-intent-layer@latest", "visual-intent-mcp"]
}
}
}
The server must run on the machine where you look at the screen. It launches a browser there and binds a loopback port. A server in a container, on a remote host, or inside a cloud agent cannot display that machine's Review Surface.
Registry-aware clients can also find the server as
io.github.willa-code/visual-intent-layer in the official MCP Registry, which
lists where to get it rather than hosting it.
claude mcp add visual-intent-layer -- npx -y --package visual-intent-layer@latest visual-intent-mcp
codex mcp add visual-intent-layer -- npx -y --package visual-intent-layer@latest visual-intent-mcp
Run opencode mcp add visual-intent-layer, then provide npx and the package
arguments when prompted:
-y --package visual-intent-layer@latest visual-intent-mcp
pi does not ship an MCP client. With pi-mcp-adapter installed, add this to
the project's .mcp.json (merge it into an existing mcpServers object):
{
"mcpServers": {
"visual-intent-layer": {
"command": "npx",
"args": ["-y", "--package", "visual-intent-layer@latest", "visual-intent-mcp"]
}
}
}
The same entry can be placed in .pi/mcp.json for a project-only Pi override,
or ~/.config/mcp/mcp.json for all projects. The adapter's /mcp setup panel
can also create the entry.
Use the JSON configuration above, or launch a local stdio server with command
npx and arguments -y --package visual-intent-layer@latest visual-intent-mcp.
Start a review without an agent
The package also provides a local CLI:
npx -y --package visual-intent-layer@latest visual-intent open --html ./checkout.html
npx -y --package visual-intent-layer@latest visual-intent open --app http://localhost:5173
Each command opens the default browser and prints the review URL. Add
--no-open for headless or scripted use. To run only the local service:
npx -y --package visual-intent-layer@latest visual-intent serve --port 3742
The visual-intent command is also available after
npm install -g visual-intent-layer.
Data and privacy
The server writes review data to ~/.visual-intent-layer/data by default. It
does not write agent configuration. Uninstalling the package does not delete
reviews; remove that data directory only when you want to remove them.
Set VISUAL_INTENT_DATA_DIR to choose another data directory. Set
VISUAL_INTENT_NO_OPEN=1 to suppress automatic browser opening.
Update and uninstall
@latest is resolved when npx fetches the package, so there is usually
nothing to update by hand. pi-mcp-adapter caches the resolved command for 24
hours; delete ~/.pi/agent/mcp-npx-cache.json to force a fresh fetch. Replace
@latest with an exact version in the entry to hold a version still, and update
a global install with npm install -g visual-intent-layer@latest.
To uninstall, remove the entry with the mechanism you added it with — claude mcp remove visual-intent-layer, codex mcp remove visual-intent-layer, or by
editing your client's configuration. docs/guide.md names the
file for each client. Uninstalling deletes none of your reviews: they stay in
the data directory until you remove it.
Documentation
docs/guide.md— product manual, Review Surface, Annotation model, MCP tools, data, schema, development, and layout.design.md— normative Review Surface design contract.docs/design-references.md— component references and verification notes.docs/reference-foundations.md— comparison of candidate reference foundations.SECURITY.md— threat model, supported versions, and disclosure process.docs/adr/— architectural decisions.docs/pi-validation.md— live Pi validation checklist.
License
Apache-2.0.
Visual Intent Layer MCP questions
How do I add Visual Intent Layer MCP to Claude Code?
Run claude mcp add visual-intent-layer -- npx -y visual-intent-layer in your terminal. Add --scope user to make it available in every project.
How do I add Visual Intent Layer MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What surfaces are supported by Visual Intent Layer?
The server supports saved HTML documents and local web apps, but mobile builds, native windows, design files, and PDFs are not supported.
Can I run this server in a container or on a remote host?
No, the server must run on the local machine where you are viewing the screen because it launches a local browser and binds a loopback port.
What are the system requirements?
You need Node.js version 20 or newer, a browser on the machine running the server, and an MCP-capable agent to use the Review Surface.