IntegrationsBeta

MCP server

Give Claude, Cursor and other MCP clients sessions as tools.

The Boxline MCP server lets Claude, Cursor and other Model Context Protocol clients use sessions as tools: the model can browse, run commands in the shell and work with files on one isolated machine, while you watch in the live view.

The server runs locally over stdio with npx -y @boxline/mcp and needs two environment variables: BOXLINE_API_KEY (your API key) and BOXLINE_API_URL (the API base URL, https://api.staging.boxline.dev).

Claude Code

Shell
claude mcp add boxline \
  -e BOXLINE_API_KEY=your-api-key \
  -e BOXLINE_API_URL=https://api.staging.boxline.dev \
  -- npx -y @boxline/mcp

Claude Desktop

Add the server to claude_desktop_config.json and restart the app:

claude_desktop_config.json
{
  "mcpServers": {
    "boxline": {
      "command": "npx",
      "args": ["-y", "@boxline/mcp"],
      "env": {
        "BOXLINE_API_KEY": "your-api-key",
        "BOXLINE_API_URL": "https://api.staging.boxline.dev"
      }
    }
  }
}

Cursor

Use the same block in .cursor/mcp.json in your project, or in ~/.cursor/mcp.json to enable it everywhere:

.cursor/mcp.json
{
  "mcpServers": {
    "boxline": {
      "command": "npx",
      "args": ["-y", "@boxline/mcp"],
      "env": {
        "BOXLINE_API_KEY": "your-api-key",
        "BOXLINE_API_URL": "https://api.staging.boxline.dev"
      }
    }
  }
}

Other clients

Any client that can launch a stdio MCP server works. Run npx -y @boxline/mcp with both environment variables set.

Tools

Every tool except session_create and fetch_url takes an optional sessionId. Without one, the server uses a default session, creating one with a browser and a Python shell the first time it is needed, so the model can simply call browser_navigate and start working.

ToolWhat it does
session_createCreate a session (browser, optional shell, timeout, optional proxy) and make it the default.
session_closeRelease a session; billing stops.
session_moveMove a session to a fresh machine, keeping tabs, logins, form values and files.
browser_navigateOpen a URL.
browser_clickClick by selector (e.g. text=Sign in) or page coordinates.
browser_typeType text, optionally into an element.
browser_pressPress a key, e.g. Enter.
browser_screenshotScreenshot the current tab.
browser_readRead the current page as markdown or text.
run_commandRun a bash command in the persistent shell (downloads are in ./downloads).
run_playwrightRun Playwright code inside the session, next to its browser (page, context, browser and env are in scope).
list_filesList files in the workspace.
read_fileRead a text file from the workspace.
write_fileWrite a text file into the workspace.
fetch_urlFetch a page as markdown, HTML or text, without a session.

Browse through a proxy

session_create takes three optional proxy parameters, so you can ask the model to “open a session with a residential proxy in Germany”.

ParameterDescription
proxyType"residential" (home IPs) or "datacenter". Without it, no proxy.
proxyCountryTwo-letter country code, e.g. "DE".
proxyCityResidential only, e.g. "berlin". Needs proxyCountry.

The session keeps one IP, and only the browser uses the proxy: shell commands connect directly. The default session that tools create on their own has no proxy, so call session_create first. US states, your own proxy and the shell option are available through the API and SDKs.

These docs describe a beta API. Endpoints, fields and SDK methods may change before general availability; breaking changes will be listed in the changelog.