Slint MCP Server

Lets an assistant inspect, screenshot and drive a running Slint app's user interface

Official · Slint Rust Local · Streamable HTTP Developer toolsTesting

67 popularity score ★ 24k ↓ 1.1k/wk

Connect your client

Local (once it is running)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add --transport http slint http://localhost:8080/mcp
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "slint": {
      "url": "http://localhost:8080/mcp"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "slint": {
      "type": "http",
      "url": "http://localhost:8080/mcp"
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.slint]
url = "http://localhost:8080/mcp"
Gemini CLITerminal
gemini mcp add --scope user --transport http slint http://localhost:8080/mcp

Settings 3

SLINT_MCP_PORT Required: Port the embedded MCP server listens on; if unset, no server is started.
SLINT_EMIT_DEBUG_INFO Required: Set to 1 to embed debug metadata into the compiled UI, used by the MCP tools.
SLINT_BACKEND Optional: Set to headless to run without a display server, screenshots included.

What it does

The Slint MCP server is part of Slint's testing backend, not a separate program. It is compiled into your own Slint application. With it, an MCP client such as Claude Code can look at the running app and work with it: list windows, read window properties, get and query the element tree, read accessibility properties, take screenshots, click, drag and send keyboard input.

It helps while you build a UI. Instead of guessing what the app looks like from the source files, an assistant can read the real layout tree, move through views and dialogs, and check its own changes. It works alongside Slint's hot reload, and it also runs with SLINT_BACKEND=headless, so screenshots work in CI or containers with no display.

To turn it on, build with the slint/mcp Cargo feature from the command line and set SLINT_MCP_PORT, plus SLINT_EMIT_DEBUG_INFO=1, for example: SLINT_EMIT_DEBUG_INFO=1 SLINT_MCP_PORT=8080 cargo run --features slint/mcp. The server then answers over Streamable HTTP at http://localhost:8080/mcp. If SLINT_MCP_PORT is not set, no server starts. For Node.js apps, the slint-ui-dev npm package provides the development binaries with MCP support, installed alongside slint-ui.

Tools 2

list_windows
Lists the windows of the running Slint application and returns their handles.
take_screenshot
Takes a screenshot of a window, given its window handle.

Similar servers