What Nullprint does
The Nullprint MCP server gives an MCP-capable agent access to profiles managed by the Nullprint desktop application. It handles profile lifecycle operations, browser session startup and shutdown, proxy checks, consistency reports, and recoverable deletion through the recycle bin.
A profile can be created with a generated and frozen fingerprint, an optional proxy, ledger settings, and starting pages. Existing profiles can be listed with running or idle status and related exit and ledger metadata. Deleted profiles remain recoverable until a person empties the recycle bin in the desktop app.
For the π Browser Automation category, the server also provides controls for an active browser session. Agents can navigate, inspect the page accessibility tree, click and fill elements with CSS selectors, send keys, execute page JavaScript, and inspect or switch tabs.
How it works
The Nullprint MCP server is a thin MCP-to-HTTP layer over the local Nullprint daemon. Each exposed tool maps to an endpoint in that daemon; the daemon, browser kernels, and fingerprint engine are supplied by the Nullprint desktop application rather than this Python package.
Start a profile before using session tools. profile_start opens a warm browser session and returns driving endpoints, including a Chrome DevTools WebSocket endpoint when applicable. Session operations require that open session and return a conflict response if none exists.
When a selector is unknown, use session_snapshot first to read the current page's accessibility tree and identify usable CSS selectors. JavaScript errors from session_eval are returned as result data with an error envelope rather than being raised as MCP tool failures. Proxy failures are also returned as data; an unreachable daemon is treated differently and raises a connection failure.
Setup and configuration
Install and sign in to the Nullprint desktop app on Windows or macOS, and have Python 3.11 or later available on the same machine. The documented quick-start uses uvx nullprint-mcp; without uv, install the package with pip and run nullprint-mcp.
The server normally reads the daemon port and API key from ~/.nullprint/daemon.json, which the desktop app writes at startup. An alternate daemon can be selected with --daemon-url or --port. Configuration precedence is explicit command-line options, then NULLPRINT_DAEMON_URL or NULLPRINT_PORT, then the daemon file. NULLPRINT_API_KEY is needed when supplying a remote daemon configuration, and NULLPRINT_HOME changes the home directory used for daemon discovery.
Tools and capabilities
The tools cover four related areas:
- Profile administration: list, create, start, stop, check, soft-delete, list deleted profiles, and restore.
- Network checks: test a proxy and receive its exit IP, country, and latency.
- Page control: go to a URL, click or fill by CSS selector, press a key, and evaluate JavaScript.
- Session inspection: read the accessibility tree, list tabs, and switch the active tab.
profile_stop first attempts to stop a session and then falls back to stopping an app-launched window. Profile deletion is refused while the profile is running and is recoverable. Permanent deletion is intentionally unavailable through MCP.
Limitations and notes
The server depends on a running, signed-in Nullprint desktop application. It does not include the daemon, browser kernels, or fingerprint engine. Session controls use CSS selectors rather than XPath or role/name selectors.
External attachment through the returned DevTools endpoint can bypass Nullprint's consistency guards. Changing viewport, language, time zone, or other fingerprint-related settings externally can make a profile inconsistent and detectable; the built-in session tools are the safer control path. Screenshot-to-disk and file-writing tools are not exposed, and emptying the recycle bin remains a desktop-app action.