Paper MCP Server

$npm install && npm run build
README.md

Connects to Paper's WebSocket API for canvas node operations.

Paper MCP Server

MCP server that connects to Paper's WebSocket API for canvas node operations.

Setup

  1. Install dependencies:
npm install
  1. Build the project:
npm run build

Configuration

  1. Copy env.example to .env:
cp env.example .env
  1. Edit .env and fill in your values (or set environment variables directly):
# Required: Full cookie string from Paper website
# Get this from your browser's developer tools -> Application -> Cookies -> paper.design
# Should include all three cookies: paper-preauth-user-info, D7pPzj4phQRAjBC01, and ph_phc_...
PAPER_COOKIES=paper-preauth-user-info=...; D7pPzj4phQRAjBC01=...; ph_phc_dYB3kPJF9dv2vFhHjPmuuU5D7yQVDFtMYJQpVEXu9Ku_posthog=...

# Optional: Document ID to connect to (defaults to example ID)
# You can get document IDs from the list_user_documents tool or from Paper URLs
PAPER_DOCUMENT_ID=01KBWAZRVPXZZ1Y0EZ5FDT7ZYW

# Optional: Enable debug logging for WebSocket messages
DEBUG=false

Getting Your Cookies

  1. Open Paper in your browser (https://app.paper.design)
  2. Open Developer Tools (F12)
  3. Go to Application → Cookies → https://app.paper.design
  4. Copy the values for these cookies:
    • paper-preauth-user-info
    • D7pPzj4phQRAjBC01
    • ph_phc_dYB3kPJF9dv2vFhHjPmuuU5D7yQVDFtMYJQpVEXu9Ku_posthog
  5. Format them as: cookie1=value1; cookie2=value2; cookie3=value3

Connecting to Cursor

Option 1: Using Cursor Settings (Recommended)

  1. Open Cursor Settings (Ctrl+, or Cmd+,)
  2. Search for "MCP" or navigate to Features → Model Context Protocol
  3. Click "Add MCP Server" or "Edit Config"
  4. Add the following configuration:

On Windows:

{
  "mcpServers": {
    "paper": {
      "command": "node",
      "args": ["C:\\Users\\grim\\paper-mcp\\dist\\index.js"],
      "env": {
        "PAPER_COOKIES": "your-cookie-string-here",
        "PAPER_DOCUMENT_ID": "01KBWAZRVPXZZ1Y0EZ5FDT7ZYW",
        "DEBUG": "false"
      }
    }
  }
}

On macOS/Linux:

{
  "mcpServers": {
    "paper": {
      "command": "node",
      "args": ["/path/to/paper-mcp/dist/index.js"],
      "env": {
        "PAPER_COOKIES": "your-cookie-string-here",
        "PAPER_DOCUMENT_ID": "01KBWAZRVPXZZ1Y0EZ5FDT7ZYW",
        "DEBUG": "false"
      }
    }
  }
}
  1. Replace the paths and cookie values with your actual values
  2. Restart Cursor

Option 2: Using MCP Config File

  1. Find your Cursor MCP config file:

    • Windows: %APPDATA%\Cursor\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
    • macOS: ~/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
    • Linux: ~/.config/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  2. Add the server configuration (same JSON as above)

  3. Restart Cursor

Option 3: Using dotenv (Alternative)

If you prefer using a .env file:

  1. Install dotenv-cli: npm install -g dotenv-cli
  2. Update the Cursor config to use:
{
  "mcpServers": {
    "paper": {
      "command": "dotenv",
      "args": ["-e", ".env", "--", "node", "dist/index.js"],
      "cwd": "C:\\Users\\grim\\paper-mcp"
    }
  }
}

Usage

Once connected to Cursor, you can use the Paper tools in your conversations:

  • "List my Paper documents"
  • "Show me all nodes on the canvas"
  • "Get details of node XYZ"
  • "Create a new rectangle node at position (100, 200)"
  • "Update node ABC with new properties"
  • "Delete node DEF"

The server communicates via stdio using MCP JSON-RPC protocol.

Tools

  • list_user_documents: Get user's recent Paper documents
  • list_nodes: List all nodes on the canvas
  • get_node: Get details of a specific node
  • create_node: Create a new node
  • update_node: Update node properties
  • delete_node: Delete a node

Tools (6)

list_user_documentsGet user's recent Paper documents
list_nodesList all nodes on the canvas
get_nodeGet details of a specific node
create_nodeCreate a new node
update_nodeUpdate node properties
delete_nodeDelete a node

Environment Variables

PAPER_COOKIESrequiredFull cookie string from Paper website including paper-preauth-user-info, D7pPzj4phQRAjBC01, and ph_phc_...
PAPER_DOCUMENT_IDDocument ID to connect to (defaults to example ID)
DEBUGEnable debug logging for WebSocket messages

Configuration

claude_desktop_config.json
{
  "mcpServers": {
    "paper": {
      "command": "node",
      "args": ["/path/to/paper-mcp/dist/index.js"],
      "env": {
        "PAPER_COOKIES": "your-cookie-string-here",
        "PAPER_DOCUMENT_ID": "01KBWAZRVPXZZ1Y0EZ5FDT7ZYW",
        "DEBUG": "false"
      }
    }
  }
}

Try it

List my Paper documents
Show me all nodes on the canvas
Create a new rectangle node at position (100, 200)
Update node ABC with new properties
Delete node DEF

Frequently Asked Questions

What are the key features of Paper MCP Server?

Connects to Paper WebSocket API for real-time canvas operations. Supports full CRUD operations for canvas nodes. Allows listing and managing Paper documents. Communicates via stdio using MCP JSON-RPC protocol.

What can I use Paper MCP Server for?

Programmatically managing canvas elements in Paper.design. Automating the creation of diagrams or visual nodes via AI. Retrieving document structures for analysis or reporting. Integrating Paper canvas workflows into AI-assisted development environments like Cursor.

How do I install Paper MCP Server?

Install Paper MCP Server by running: npm install && npm run build

What MCP clients work with Paper MCP Server?

Paper MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Use Paper MCP Server with Conare

Manage MCP servers visually, upload persistent context, and never start from zero with Claude Code & Codex.

Try Free