render-html MCP tool A developer has built a "render-html-mcp" tool, an MCP server that pops up a standalone desktop browser window to display HTML or Markdown content. The Python-based server uses the FastMCP framework and supports both Chromium-family browsers (with a chrome-less app mode) and Firefox as a fallback, launching each window with a unique user-data directory to avoid collisions. The tool returns immediately after spawning the browser process, which remains open until the user closes it. | Give this to your LLM of choice. | | | Don't like python? ask it to build it in any language you prefer. | | | Note: I am running this on Linux, but same thing can be done for Windows or macOS, too. | | | ---- | | | Build a "render-html-mcp" — MCP Server for Rendering HTML in Desktop Popup Windows | | | Overview | | | Create a Python MCP server using the mcp package's FastMCP framework that pops up a standalone desktop browser window displaying HTML/markdown content and returns immediately. The window stays open until the user closes it. The browser process is fully detached start new session=True, stdio to /dev/null so it outlives the MCP call. | | | Project Structure | | | render-html-mcp/ | | | ├── pyproject.toml | | | ├── README.md | | | └── src/ | | | └── renderhtmlmcp/ | | | ├── init .py empty | | | ├── server.py all MCP logic | | | └── cli.py thin CLI entry point | | | pyproject.toml | | | - Build system: setuptools =61.0 | | | - Package name: render-html-mcp, version 0.1.0 | | | - requires-python: =3.10 | | | - Dependencies: mcp =1.0.0, markdown =3.5, Pygments =2.17 | | | - Console script: render-html-mcp = renderhtmlmcp.cli:cli | | | - Setuptools packages.find: where = "src" | | | - Ruff config: target-version = "py310", line-length = 100, lint select "E", "F", "W", "I", "UP" | | | cli.py | | | A minimal entry point. The cli function imports and calls run server from server.py, returns 0. Has an if name == " main " guard that calls cli via SystemExit. | | | server.py — Core Logic | | | MCP Instance | | | from mcp.server.fastmcp import FastMCP | | | mcp = FastMCP "render-html-mcp" | | | Temp Directory | | | The render directory defaults to $RENDER HTML MCP DIR if set, otherwise