OpenCode can write and edit HTML and CSS, but the documented route to rendering a page and capturing it is to connect a browser automation tool through MCP. A practical setup is OpenCode plus Playwright MCP: run your site locally, ask the browser tool to open its URL, inspect and screenshot the result, then refine the code. The steps below cover setup, screenshot types, visual comparison, repeatability, security, and common failures.
How OpenCode screenshots and HTML rendering fit together
Think of this as two cooperating parts: OpenCode handles the coding loop, while a browser renders the page and provides the screenshot and inspection tools. The official OpenCode documentation cited here describes MCP integration, rather than a built-in, first-party screenshot command. Playwright MCP is a documented way to add browser control to that loop.
The workflow is: edit HTML/CSS, start the project’s development server, navigate to its local URL with the browser tool, inspect and capture the page, compare the image with the intended design, and make another code change. A screenshot shows appearance at a particular viewport and moment; DOM, accessibility, console, and network inspection can reveal issues that the image alone will not.
Set up OpenCode with Playwright MCP
1. Start OpenCode
OpenCode is available as a terminal, desktop, or web application. For a terminal session, start OpenCode from your project directory. Its CLI also supports opencode run for non-interactive prompts. To start the browser-accessible OpenCode server, use:
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
opencode web
OpenCode’s web documentation says the web application provides the same AI coding experience through a browser. See the OpenCode introduction and CLI documentation for current details.
2. Configure a local browser MCP server
OpenCode’s MCP configuration uses an mcp object. Add a local Playwright MCP server using a command of this form:
npx -y @playwright/mcp@latest --browser chromium
Use the server configuration syntax in the OpenCode MCP documentation; the exact configuration file location and available options should be checked there for your installed OpenCode version. Playwright MCP’s documented setup is available in its project documentation. After configuring the server, restart OpenCode and verify that it is visible:
Rank #2
- HTML CSS Design and Build Web Sites
- Comes with secure packaging
- It can be a gift option
opencode mcp list
Once connected, ask the model to use the browser tools by name or describe the task. For example: “Open http://localhost:5173, inspect the landing page, take a full-page screenshot, and report visible layout or text issues.” Use the actual local URL and route for your project.
3. Start your HTML/CSS project
Run the development server using the command your framework or project already uses, then note the URL it prints, such as a localhost address. No single server command applies to every project. The browser MCP tool must be able to reach that address from the environment where the browser runs; a URL on your computer may not be reachable if OpenCode or the MCP server is running in a different container or host.
Choose the right screenshot and inspection tools
| Need | Use | What it tells you |
|---|---|---|
| Check the first screen or a specific viewport | Viewport screenshot | What a visitor sees without scrolling at the selected browser size. |
| Review a long page as one image | Full-page screenshot | The page beyond the initial fold, including lower sections. Lazy-loaded images may need to be triggered or allowed to load first. |
| Focus on a component | Element screenshot | A specific card, menu, hero, or other selected element rather than the whole page. |
| Check layout and content structure | DOM and accessibility inspection | Whether the expected elements, text, labels, and accessible structure are present. |
| Investigate behavior or loading | JavaScript, console, and network inspection | Runtime errors, failed requests, and other clues that may not be visible in a screenshot. |
| Compare revisions | Saved baseline and visual diff | Where a new capture differs from a saved image; a diff reports changed pixels and changed ratio. |
Playwright MCP documents browser navigation, DOM and accessibility inspection, CSS selector and XPath targeting, JavaScript evaluation, and network and console inspection. Its browser-control documentation also describes page.screenshot({ path: ..., scale: "css" }) and a screenshotDiff result. See the Playwright MCP guide and browser-control package documentation for tool-specific details. Confirm the precise tool names and arguments exposed by the version you install before automating a workflow.
Rank #3
A useful prompt names the URL, scope, and desired checks: “Open http://localhost:5173/pricing, set a desktop viewport, capture the full page, inspect the DOM for the pricing headings, and tell me about console errors.” If you are checking a component, identify it by a stable selector and request an element capture. For a design comparison, provide the reference image or describe the target and ask for specific discrepancies before requesting code changes.
Build a repeatable visual review loop
- Fix the inputs. Keep the route, viewport, test content, and browser settings consistent across captures. Save each image at an explicit path when your MCP tool supports it.
- Wait for the page to settle. Request a wait for a key selector, a suitable delay, or network idle as appropriate. Waiting for network idle alone may be unsuitable for pages with persistent network activity.
- Account for fonts and images. A capture made before fonts or images finish loading can differ from the intended page. Ask the browser tool to confirm important assets are present; trigger lazy-loaded content before taking a full-page image.
- Capture the relevant scope. Use the same viewport screenshot for above-the-fold checks, or the same full-page or element capture for the specific review.
- Compare, then inspect the cause. A visual diff flags changed pixels; it does not decide whether a change is a defect. Use DOM, CSS, console, or network inspection to determine why the page changed.
- Make a focused code change and repeat. Ask OpenCode to address the identified issue, then recapture under the same conditions. Keep the baseline and new capture so later changes remain interpretable.
These are reproducibility practices, not a guarantee that OpenCode automatically waits for every asset. The browser tool and your prompt determine the waits and capture behavior.
Keep the OpenCode server appropriately secured
OpenCode’s web server binds to 127.0.0.1 by default. That keeps the default listener on the local machine. If you deliberately expose the server to a network, configure a hostname, set OPENCODE_SERVER_PASSWORD, and review CORS and password-authentication settings for opencode serve. OpenCode’s web documentation warns that leaving the password variable unset leaves an exposed server unsecured. Follow the current OpenCode Web documentation and server documentation; do not treat a development server as safe for network exposure by default.
Rank #4
- Brand: Wiley
- Set of 2 Volumes
- A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers
Troubleshooting OpenCode screenshots
The browser tool is missing in OpenCode
- Confirm the MCP configuration is in the documented
mcpobject and that the command points to the intended server. - Restart OpenCode after changing configuration, then run
opencode mcp list. - Check that Node.js/npm tooling is available for the
npxcommand and that the package can be fetched in your environment.
The browser cannot open the local URL
- Verify the development server is running and copy its exact URL and port.
- Try the URL in the same environment that runs the MCP browser. If the browser runs in a container or another host,
localhostmay refer to that environment rather than your workstation. - Check that the server listens on an address accessible to the browser process, while avoiding unnecessary network exposure.
The screenshot is blank or incomplete
- Wait for the page’s key content selector or for a reasonable load condition before capture.
- Check console and network output for script errors or failed resources.
- For full-page captures, scroll or otherwise trigger lazy-loaded images before capturing. Confirm custom fonts and images have loaded.
- Ensure the requested selector exists and matches the intended element when taking a component screenshot.
The image changes between runs
- Use the same viewport, route, browser, page data, and capture scope.
- Wait for dynamic content and animations to settle; use stable test data where possible.
- Inspect changed regions rather than treating every pixel difference as a defect. Small rendering variations can alter a diff without indicating a meaningful layout regression.
OpenCode is reachable beyond your computer
Return to a local-only binding unless remote access is intentional. For an exposed server, set OPENCODE_SERVER_PASSWORD and configure the hostname, CORS, and authentication according to the server documentation before use.
Or skip the browser setup
If you only need a screenshot from a URL rather than an interactive local design-review loop, ScreenshotNeo is a website screenshot API and MCP server. A single GET request can return PNG, JPEG, WebP, or PDF; its MCP tools include take_screenshot, get_page_info, and capture_pdf. For an API capture:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for the request options. Cookie/consent banners are accepted and removed, along with known newsletter popups and chat widgets, before capture; each step can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server lets AI agents use screenshot tools. The free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan to get 1,000 screenshots a month with no card.
Best Value
What OpenCode’s documented support means
The documentation cited here establishes MCP integration and the browser-tool workflow, not a native OpenCode screenshot command. An OpenCode issue requesting screenshot vision and browser-control tools was opened September 10, 2026; an issue request alone does not establish that the feature shipped. Check the release and documentation for your installed version if you are looking for first-party support. For now, the explicit, documented workflow is to connect a browser MCP server and use its tools alongside OpenCode.
Frequently Asked Questions
Can OpenCode render an HTML file without a browser MCP server?
OpenCode can edit the HTML and CSS, but the documented screenshot workflow here uses a browser tool through MCP to render and capture the page.
Can I use this workflow to compare a page with a mockup?
Yes. Capture the page under repeatable conditions, compare it with the mockup or a saved baseline, then inspect DOM, CSS, and runtime behavior to explain differences.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Does OpenCode automatically wait for images and fonts before taking a screenshot?
The cited OpenCode documentation does not establish automatic waiting for every asset. Specify a selector or load condition and verify important assets before capture.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

