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: CloakBrowser MCP
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.
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.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
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
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to automate a real Chromium browser through the unchanged upstream Playwright MCP tool surface, covering navigation, research, testing, and daily web workflows in plain language. It ships via npm or Docker over stdio or Streamable HTTP, and supports persistent login profiles, Chrome extension loading, proxy/GeoIP matching, and humanized mouse, keyboard, and scroll behavior.784 npmMIT
- 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