Skip to content
Cursor

Paperless MCP for Cursor

io.github.pvliesdonk/paperless-mcp

Paperless-NGX over MCP: search, read, upload and tag documents; manage correspondents and types.

client:Cursor transport:stdio runtime:pypi

Install Paperless MCP in Cursor

~/.cursor/mcp.json · windows: %USERPROFILE%\.cursor\mcp.json

Held in this page only — never stored, logged, or sent anywhere but back to your screen.

{
  "mcpServers": {
    "paperless-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "pvliesdonk-paperless-mcp"
      ],
      "env": {
        "PAPERLESS_MCP_KV_STORE_URL": "<PAPERLESS_MCP_KV_STORE_URL>",
        "PAPERLESS_MCP_TOOLS_ALLOW": "<PAPERLESS_MCP_TOOLS_ALLOW>",
        "PAPERLESS_MCP_TOOLS_DENY": "<PAPERLESS_MCP_TOOLS_DENY>",
        "PAPERLESS_MCP_SERVER_NAME": "<PAPERLESS_MCP_SERVER_NAME>",
        "PAPERLESS_MCP_INSTANCE_DESCRIPTION": "<PAPERLESS_MCP_INSTANCE_DESCRIPTION>",
        "PAPERLESS_MCP_INSTRUCTIONS_EXTRA": "<PAPERLESS_MCP_INSTRUCTIONS_EXTRA>",
        "PAPERLESS_MCP_INSTRUCTIONS": "<PAPERLESS_MCP_INSTRUCTIONS>",
        "PAPERLESS_MCP_LOG_LEVEL": "<PAPERLESS_MCP_LOG_LEVEL>",
        "PAPERLESS_MCP_LOG_FORMAT": "<PAPERLESS_MCP_LOG_FORMAT>",
        "PAPERLESS_MCP_PAPERLESS_URL": "<PAPERLESS_MCP_PAPERLESS_URL>",
        "PAPERLESS_MCP_API_TOKEN": "<PAPERLESS_MCP_API_TOKEN>",
        "PAPERLESS_MCP_HTTP_TIMEOUT_SECONDS": "<PAPERLESS_MCP_HTTP_TIMEOUT_SECONDS>",
        "PAPERLESS_MCP_HTTP_RETRIES": "<PAPERLESS_MCP_HTTP_RETRIES>",
        "PAPERLESS_MCP_DEFAULT_PAGE_SIZE": "<PAPERLESS_MCP_DEFAULT_PAGE_SIZE>",
        "PAPERLESS_MCP_PAPERLESS_PUBLIC_URL": "<PAPERLESS_MCP_PAPERLESS_PUBLIC_URL>",
        "PAPERLESS_MCP_TRANSFER_TTL_DEFAULT_S": "<PAPERLESS_MCP_TRANSFER_TTL_DEFAULT_S>",
        "PAPERLESS_MCP_TRANSFER_TTL_MAX_S": "<PAPERLESS_MCP_TRANSFER_TTL_MAX_S>",
        "PAPERLESS_MCP_TRANSFER_GRACE_TTL_S": "<PAPERLESS_MCP_TRANSFER_GRACE_TTL_S>",
        "PAPERLESS_MCP_TRANSFER_LEASE_S": "<PAPERLESS_MCP_TRANSFER_LEASE_S>",
        "PAPERLESS_MCP_TRANSFER_MAX_UPLOAD_BYTES": "<PAPERLESS_MCP_TRANSFER_MAX_UPLOAD_BYTES>"
      }
    }
  }
}

Use .cursor/mcp.json in a project root instead to scope it to that project. Cursor merges both. Cursor docs

Paperless MCP in other clients