paper-remote-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@paper-remote-mcpwrite the HTML for a pricing card and screenshot it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
paper-remote-mcp
Run Paper's MCP server without the desktop app.
paper-remote-mcp loads the Paper editor in a headless browser, signed in as you, and exposes the same tools Paper Desktop does (write_html, get_screenshot, get_jsx, create_file, …) over stdio. It works with Claude Code, Cursor, Codex, or any MCP client.
npx paper-remote-mcp login # one-time OAuth sign-in
npx paper-remote-mcp doctor # check browser, sign-in, tools
claude mcp add paper -- npx -y paper-remote-mcp mcpCommunity project. Not affiliated with or endorsed by Paper.
Requirements
Node 20+
Google Chrome, or Playwright's Chromium (
npx playwright install chromium)
Related MCP server: MultiZen
Setup
1. Sign in. npx paper-remote-mcp login opens a browser window at app.paper.design. Sign in as usual; the session is saved to ~/.paper-mcp/profiles/production/ and reused headlessly.
2. Verify.
$ npx paper-remote-mcp doctor
browser ✓ launched
sign-in ✓ authenticated (Paper API /auth/me → 200)
handlers ✓ 36 tools available3. Add it to your agent.
claude mcp add paper -- npx -y paper-remote-mcp mcp{ "mcpServers": { "paper": { "command": "npx", "args": ["-y", "paper-remote-mcp", "mcp"] } } }[mcp_servers.paper]
command = "npx"
args = ["-y", "paper-remote-mcp", "mcp"]{ "servers": { "paper": { "type": "stdio", "command": "npx", "args": ["-y", "paper-remote-mcp", "mcp"] } } }To open a specific file on start, append --file <fileId-or-url> to the args.
Commands
Command | What it does |
| Start the stdio MCP server backed by a headless editor. |
| Sign in, or delete the saved session. |
| Check Node, browser, sign-in, and tool availability. |
| Forward stdio to a running Paper Desktop (no CLI binary needed). |
Flag | Meaning |
| File to open and use as the default target. |
|
|
| Override the session directory. |
| Show the browser window. |
Env vars: PAPER_MCP_ENV, PAPER_MCP_PROFILE, PAPER_MCP_LOG (silent|error|warn|info|debug).
How it works
Paper Desktop's MCP server is a thin proxy: every tool call runs against window.mcpHandlers inside the editor page. Paper only builds those handlers in the desktop shell or in a browser that supports WebMCP.
paper-remote-mcp injects a no-op navigator.modelContext before the page loads. Paper then builds its real handlers and keeps using normal cookie auth. The stdio server maps tools/list to getMCPServerConfig() and tools/call to handleToolCall(), and navigates to another file when a tool call names a different fileId. The tool list and instructions come from Paper itself, so they stay in sync with Paper's updates.
Limitations
One file is open at a time; switching files costs a page reload.
The headless browser takes a few seconds to start and uses a few hundred MB of RAM.
It depends on Paper's web internals. If Paper changes them,
doctorwill report it.It uses its own Chrome profile, not your everyday one: Chrome locks a profile to one process and blocks automation of the default profile.
Troubleshooting
"Profile is in use by another browser": your agent is already running the server. Quit it, or pass a different
--profile.Not signed in after
login: runloginagain and wait for✓ Signed in. If Google sign-in is refused, use Continue with email.Switch accounts:
logout, thenlogin.
Programmatic API
import { createEditorHost } from 'paper-remote-mcp';
const host = await createEditorHost({ fileId: '…' });
await host.start();
const result = await host.handleToolCall('agent-1', 'get_basic_info', {}, { name: 'my-app' });
await host.close();Development
git clone https://github.com/vcashwin/paper-remote-mcp && cd paper-remote-mcp
npm install
node src/cli.js login # one-time sign-in (skip if already signed in)
node src/cli.js doctor # browser ✓, sign-in ✓, 36 tools ✓
npm run typecheckPoint your agent at the local checkout so code changes apply on the next server start:
# Claude Code (user scope = every project)
claude mcp add -s user paper-remote -- node "$PWD/src/cli.js" mcp
claude mcp get paper-remote # should show ✔ Connected
# Codex
codex mcp add paper-remote -- node "$PWD/src/cli.js" mcpOr for Codex, add this to ~/.codex/config.toml:
[mcp_servers.paper-remote]
command = "node"
args = ["/absolute/path/to/paper-remote-mcp/src/cli.js", "mcp"]Only one server can use a profile at a time. To run Claude and Codex together, give one its own with --profile ~/.paper-mcp/codex (and run login with that profile once).
MIT © vcashwin
This server cannot be deployed
Maintenance
Related MCP Connectors
Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.
A real Chromium browser agents pay for per action in USDC via x402 — hosted MCP, free local stdio.
Live browser debugging for AI assistants — DOM, console, network via MCP.
Publish and manage HTML pages and multi-file static websites directly from Claude, ChatGPT, Cursor, Codex, and other AI agents via MCP. Streamable HTTP with OAuth 2.1 browser sign-in — no API key to copy.
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables Claude and other MCP clients to drive a real browser by opening pages, clicking elements, filling form fields, capturing PNG screenshots, and extracting visible text. It runs as a lightweight Node process over stdio with lazy-loaded Playwright for fast startup.52MIT
- FlicenseNot gradedqualityAmaintenanceExposes a localhost MCP endpoint that lets AI agents drive isolated browser profiles — navigating, clicking, typing, extracting, screenshotting, evaluating JS, and managing tabs and cookies — so real authenticated workflows can be completed from MCP clients like Cursor or Claude Desktop. Cookies, login state, fingerprints, and proxies persist per profile across launches and AI sessions.-
- AlicenseNot gradedqualityAmaintenanceA local MCP server that lets AI coding tools drive the user's actual, already-logged-in Chrome browser — snapshotting pages, clicking, typing, navigating, reading content, taking screenshots, and inspecting cookies, network traffic, and console output. Browser automation happens through a Chrome extension using Native Messaging, so no remote-debugging port is exposed and all communication stays on the local machine.1 npmISC
- AlicenseNot gradedqualityAmaintenanceConnects MCP-compatible AI agents to an anti-detection browser server, exposing dozens of tools for navigation, page interaction, search, content extraction, downloads, multi-tab handling, and persistent sessions. It lets agents automate and scrape the web at scale using accessibility snapshots, CSS-selector fallbacks, saved profiles, and batch workflows over stdio or authenticated HTTP transport.201 npmMIT