Skip to main content
Glama
IqbalHere

Visual Loop MCP Server

by IqbalHere

MCP Protocol TypeScript Playwright Judge0 License: MIT Node.js

πŸš€ 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:

TIP

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: Netmind Code Interpreter

πŸ—οΈ 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

β‰₯ 20.0

Runtime environment

β‰₯ 10.0

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-ce

2️⃣ 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 build

3️⃣ 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

CODEBOX_URL

βœ…

Base URL of your Judge0/Codebox instance

CODEBOX_TOKEN

❌

Auth token for the Codebox API (omit if no auth)

NOTE

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

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

{
  "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
      }
    }
  }
}
IMPORTANT

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 result

Parameters

Parameter

Type

Required

Default

Description

source_code

string

βœ…

β€”

Raw HTML/CSS/JS source code to execute and render

language_id

number

βœ…

β€”

Judge0 language ID (see table below)

viewport_width

number

❌

1280

Browser viewport width in pixels

viewport_height

number

❌

720

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)

63

🐍 Python 3

71

πŸ”· TypeScript

74

β˜• Java

62

βš™οΈ C++ (GCC)

54

πŸ’Ž Ruby

72

🐹 Go

60

🌐 HTML/CSS

82

TIP

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_URL

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.ts

Project 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:

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. 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! ⭐

Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/IqbalHere/Visual-Loop-MCP-Server'

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