Visual Loop MCP Server
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., "@Visual Loop MCP ServerCreate a simple web page with a red square and take a screenshot"
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.
π Quick Start β’ π Documentation β’ π§ Configuration β’ π€ Claude Desktop β’ π‘ API Reference
β¨ Why Visual Loop?
Most AI coding assistants can write code β but they can't see the result. Visual Loop MCP closes that gap by providing a single tool that:
Think of it asgiving your AI eyes β it can now verify layouts, catch visual bugs, and iterate on designs without human intervention.
Related MCP server: RunAutomation MCP Server
ποΈ Architecture
ββββββββββββββββββββββββββββββββ
β AI Client β
β (Claude Desktop / Cursor) β
ββββββββββββββββ¬ββββββββββββββββ
β
stdio (JSON-RPC 2.0)
β
ββββββββββββββββΌββββββββββββββββ
β Visual Loop MCP Server β
β β
β βββββββββββββββββββββββββ β
β β Phase A: Execute β β ββββββββββββββββββββ
β β Code Validation βββββΌβββββΆβ Judge0/Codebox β
β β β β β (Sandboxed API) β
β βββββββββββββββββββββββββ β ββββββββββββββββββββ
β β
β βββββββββββββββββββββββββ β
β β Phase B: Render β β ββββββββββββββββββββ
β β Visual Screenshot βββββΌβββββΆβ Playwright β
β β β β β (Headless Chrome) β
β βββββββββββββββββββββββββ β ββββββββββββββββββββ
β β
β βββββββββββββββββββββββββ β
β β Phase C: Cleanup β β Temp files removed
β β Resource Disposal β β Browser closed
β βββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββgraph LR
A[π€ AI Client] -->|stdio JSON-RPC| B[π Visual Loop MCP]
B -->|POST /submissions| C[β‘ Judge0 Codebox]
B -->|file:// render| D[π Playwright]
C -->|stdout / stderr| B
D -->|base64 PNG| B
B -->|multimodal response| A
style A fill:#6C63FF,stroke:#4F46E5,color:#fff,stroke-width:2px
style B fill:#A855F7,stroke:#9333EA,color:#fff,stroke-width:2px
style C fill:#F59E0B,stroke:#D97706,color:#fff,stroke-width:2px
style D fill:#10B981,stroke:#059669,color:#fff,stroke-width:2pxπ¦ Prerequisites
Requirement | Version | Purpose |
| Runtime environment | |
| Package management | |
Any | Judge0 container hosting |
π Quick Start
1οΈβ£ Start the Judge0 Sandbox
# Pull and run Judge0 CE in Docker
docker run -d -p 2358:2358 --name judge0 judge0/judge0-ce2οΈβ£ Install & Build
# Clone the repository
git clone https://github.com/IqbalHere/-Visual-Loop-MCP-Server.git
cd -Visual-Loop-MCP-Server
# Install dependencies
npm install
# Install Playwright Chromium (minimal footprint)
npx playwright install chromium
# Build the TypeScript project
npm run build3οΈβ£ Run the Server
CODEBOX_URL=http://localhost:2358 CODEBOX_TOKEN=your_token npm start$env:CODEBOX_URL = "http://localhost:2358"
$env:CODEBOX_TOKEN = "your_token"
npm startπ§ Configuration
Variable | Required | Description |
| β | Base URL of your Judge0/Codebox instance |
| β | Auth token for the Codebox API (omit if no auth) |
IfCODEBOX_URL is unset, the server gracefully skips code execution and only performs visual rendering. No crash, no fuss.
π€ Claude Desktop Integration
Add this to your Claude Desktop configuration file:
Platform | Config Path |
macOS |
|
Windows |
|
{
"mcpServers": {
"visual-loop": {
"command": "node",
"args": ["C:/absolute/path/to/visual-loop-mcp/build/index.js"],
"env": {
"CODEBOX_URL": "http://localhost:2358",
"CODEBOX_TOKEN": "your_token_here" // optional
}
}
}
}Replace the path inargs with the absolute path to your cloned project. Use forward slashes (/) even on Windows.
After saving, restart Claude Desktop. The execute_and_render tool will appear in the tool picker. π
π‘ Tool Reference
execute_and_render
The single, powerful tool exposed by this server.
AI writes code β Codebox validates logic β Playwright renders visuals β AI sees the resultParameters
Parameter | Type | Required | Default | Description |
|
| β | β | Raw HTML/CSS/JS source code to execute and render |
|
| β | β | Judge0 language ID (see table below) |
|
| β |
| Browser viewport width in pixels |
|
| β |
| Browser viewport height in pixels |
Response Format
The tool returns a multimodal MCP content array containing both text and image:
{
"content": [
{
"type": "text",
"text": "[Codebox] Status: Accepted (id: 3)\nββ stdout ββ\nHello, world!\n\nExecution time: 0.012s | Memory: 3456 KB"
},
{
"type": "image",
"data": "<base64-encoded-PNG-screenshot>",
"mimeType": "image/png"
}
]
}ποΈ Supported Languages
Language | ID | Language | ID |
π¨ JavaScript (Node.js) |
| π Python 3 |
|
π· TypeScript |
| β Java |
|
βοΈ C++ (GCC) |
| π Ruby |
|
πΉ Go |
| π HTML/CSS |
|
For a complete list of 60+ supported languages, query your Judge0 instance:GET /languages
π‘οΈ Error Handling
The server is engineered to never crash from tool-level errors. Every failure is caught and returned gracefully:
Scenario | Behavior |
π Codebox timeout / network error | Error details in text response; screenshot still attempted |
π₯οΈ Playwright crash | Codebox results returned with rendering error note |
π₯ Both fail | Descriptive error text returned; no image block |
β οΈ Missing | Codebox phase skipped with warning; rendering proceeds |
π§° Development
# Build and run in one step
npm run dev
# Watch mode with tsx (great for iterating)
npx tsx watch src/index.tsProject Structure
visual-loop-mcp/
βββ π src/
β βββ index.ts # Main server β Codebox + Playwright + MCP
βββ π build/ # Compiled JavaScript output
βββ π¦ package.json # Dependencies & scripts
βββ βοΈ tsconfig.json # TypeScript configuration
βββ π README.md # You are here!π οΈ Tech Stack
Technology | Role |
Core language with strict type safety | |
Model Context Protocol server framework | |
Headless browser automation & screenshots | |
Sandboxed multi-language code execution | |
HTTP client for Codebox API | |
Runtime schema validation |
π€ Contributing
Contributions are welcome! Here's how to get started:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
π License
This project is licensed under the MIT License β see the LICENSE file for details.
Built with β€οΈ by Iqbal
β Star this repo if you found it useful! β
Available Tools
1 toolexecute_and_renderA
Execute source code via Codebox (Judge0) for logic validation and render it as HTML in a headless browser via Playwright, returning the console output and a screenshot. Use this to write full-stack UI code and instantly verify both its logic and visual appearance.
| Name | Required | Description | Default |
|---|---|---|---|
| language_id | Yes | Judge0-compatible language ID for Codebox execution. Use 63 for JavaScript (Node.js), 82 for HTML/CSS, etc. | |
| source_code | Yes | The raw HTML/CSS/JS source code to execute and render. | |
| viewport_width | No | Browser viewport width in pixels (default: 1280). | |
| viewport_height | No | Browser viewport height in pixels (default: 720). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the process (Codebox execution, Playwright rendering) and outputs (console output, screenshot), but does not disclose potential side effects, execution limits, error behavior, or authentication requirements. This leaves gaps for an AI agent.
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 two sentences, front-loaded with the core functionality in the first sentence. Every word is purposeful with no fluff. It is optimally sized for an AI agent to quickly grasp the tool.
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?
The schema covers all parameters, and no output schema exists. However, the description does not specify the format of the console output or screenshot (e.g., base64, plain text). It also omits constraints like timeouts or size limits, which are relevant for code execution tools. This information would be useful for correct invocation.
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?
Schema coverage is 100% with each parameter described in the schema. The description adds no additional parameter details beyond what is already in the schema. According to the guidelines, baseline is 3, and no extra value is provided.
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 executes source code via Codebox (Judge0) for logic validation, renders it as HTML via Playwright, and returns console output and a screenshot. The verb 'execute and render' and the specific resource (Codebox and Playwright) make the purpose unambiguous. Without sibling tools, differentiation is not needed.
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 says 'Use this to write full-stack UI code and instantly verify both its logic and visual appearance,' providing a clear usage context. There are no sibling tools, so no alternatives to exclude, making the guidelines sufficient.
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 tool update
v1.0.0- First observed
execute_and_render
TDQS
Only one tool exists, so there is no possibility of ambiguity or confusion with other tools.
With a single tool, naming consistency is not a concern; the name 'execute_and_render' clearly describes its function.
One tool is on the lower end of reasonable count, but it serves a specific combined purpose of execution and rendering, which may justify the minimal surface.
The single tool covers both code execution and visual rendering, but lacks separate tools for execution-only or rendering-only tasks, limiting flexibility.
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
- mcp-serverOAuthai.cdbx
Build Apps and run code in 30 languages β sandboxed, with persistent sessions for agent loops.
Hosted browser for AI agents: screenshots, post-JS DOM, console, WCAG. No install, no API key.
61Headless browser primitives for AI agents when sites need real JS rendering.
Generate images, GIFs, and PDFs from HTML, URLs, or templates β from your AI agent.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables execution of code in a sandbox environment with integrated web search capabilities. Provides a basic framework for running code safely, primarily designed for AI agents and research applications.13-
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to execute browser automation, perform QA tasks, and generate test code through natural language commands using Playwright.5-
- AlicenseNot gradedqualityDmaintenanceEnables AI coding agents to visually interact with frontend apps by taking screenshots, clicking elements, reading console logs, and performing visual diffs.03MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to securely execute Python and JavaScript code in sandboxed environments, with file management and package installation.788-
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/IqbalHere/Visual-Loop-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server