Paperless MCP

io.github.pvliesdonk/paperless-mcp

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

Connect this server

Add this to your MCP client config — claude_desktop_config.json (Claude Desktop) or .cursor/mcp.json (Cursor).Suits: Claude Desktop · Cursor.

{
  "mcpServers": {
    "paperless-mcp": {
      "command": "uvx",
      "args": [
        "pvliesdonk-paperless-mcp"
      ],
      "env": {
        "PAPERLESS_MCP_KV_STORE_URL": "file:///data/state",
        "PAPERLESS_MCP_LOG_LEVEL": "INFO",
        "PAPERLESS_MCP_API_TOKEN": "<your PAPERLESS_MCP_API_TOKEN>",
        "PAPERLESS_MCP_HTTP_TIMEOUT_SECONDS": "30.0",
        "PAPERLESS_MCP_HTTP_RETRIES": "2",
        "PAPERLESS_MCP_DEFAULT_PAGE_SIZE": "25",
        "PAPERLESS_MCP_TRANSFER_TTL_DEFAULT_S": "3600.0",
        "PAPERLESS_MCP_TRANSFER_TTL_MAX_S": "86400.0",
        "PAPERLESS_MCP_TRANSFER_GRACE_TTL_S": "60.0",
        "PAPERLESS_MCP_TRANSFER_LEASE_S": "60.0",
        "PAPERLESS_MCP_TRANSFER_MAX_UPLOAD_BYTES": "104857600"
      }
    }
  }
}
Environment variables
  • PAPERLESS_MCP_KV_STORE_URLPersistent-state backend URL shared by every pvl-core subsystem that needs state. `memory://` is in-process and lost on restart; `file:///path` persists on one server; `redis://`, `dynamodb://` and `mongodb://` each need their matching extra. When unset, defaults to `file:///data/state` (the volume family Docker images mount), or to `memory://` (with a warning) on a host where that directory is not usable.
  • PAPERLESS_MCP_LOG_LEVELLog level for every logger in the process, FastMCP's included (DEBUG / INFO / WARNING / ERROR / CRITICAL). The -v CLI flag overrides to DEBUG. The unprefixed FASTMCP_LOG_LEVEL still works for one major version and logs a deprecation warning.
  • PAPERLESS_MCP_API_TOKENsecretPaperless service-account token used for outbound API requests. The server refuses to start without it.
  • PAPERLESS_MCP_HTTP_TIMEOUT_SECONDSPer-request HTTP timeout in seconds.
  • PAPERLESS_MCP_HTTP_RETRIESRetries for idempotent requests after network errors or 5xx responses.
  • PAPERLESS_MCP_DEFAULT_PAGE_SIZEDefault page size for list tools, from 1 through 100.
  • PAPERLESS_MCP_TRANSFER_TTL_DEFAULT_SLink lifetime in seconds when the caller requests no explicit TTL.
  • PAPERLESS_MCP_TRANSFER_TTL_MAX_SCeiling in seconds a caller-requested link TTL is clamped to.
  • PAPERLESS_MCP_TRANSFER_GRACE_TTL_SPost-success grace window in seconds: a served token's TTL shrinks to this so a stalled transfer can retry within it.
  • PAPERLESS_MCP_TRANSFER_LEASE_SCrashed-handler reclaim window in seconds for an in-flight reservation.
  • PAPERLESS_MCP_TRANSFER_MAX_UPLOAD_BYTESMaximum size in bytes of a single upload.

A starting point — check the repository for exact arguments and setup. Restart your client after editing the config.

Category
Developer Tools
Version
3.0.0
Registry
active
Published
9/21/2026
Browse all Developer Tools →

Add the badge to your site

Show visitors that Paperless MCP is listed here — it’s also the link we check for a free listing.

Paperless MCP — listed on Serverdex

HTML — for your website

<a href="https://serverdex.io/server/io-github-pvliesdonk-paperless-mcp?utm_source=badge"><img src="https://serverdex.io/brand/badge.svg" alt="Paperless MCP — listed on Serverdex" width="123" height="40" loading="lazy"></a>

Recommended. A dofollow link from your own domain is the one that counts for search engines, and it's the link we check for a free listing.

Markdown — for your README

[![Paperless MCP — listed on Serverdex](https://serverdex.io/brand/badge.svg)](https://serverdex.io/server/io-github-pvliesdonk-paperless-mcp?utm_source=badge)

Nice for visibility, but GitHub marks README links nofollow, so it doesn't pass authority. Use the HTML badge on your site as well.