Paperless-NGX over MCP: search, read, upload and tag documents; manage correspondents and types.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Paperless-NGX over MCP: search, read, upload and tag documents; manage correspondents and types.
Documentation | Config wizard | PyPI | Docker
PAPERLESS_MCP_BASE_URL to enable the tools. File bytes stay outside model context. See file transfer links.wait_for_task), statistics, and an upstream release check for Paperless-NGX.Lucide icons; see src/paperless_mcp/tools/.src/paperless_mcp/resources/.With this server mounted in an MCP client (Claude, etc.), you can:
search_documents with a correspondent filter, then reads bounded previews with get_document_content.bulk_edit_documents in a single call.upload_document + wait_for_task so the assistant only reports back once the document is indexed.paperless://documents/4213/history and summarises the audit trail.Every tool and resource is listed in the documentation site: Tools and Resources. The Paperless variables the server reads are in Configuration.
If you add optional extras via the PROJECT-EXTRAS-START / PROJECT-EXTRAS-END sentinels in pyproject.toml, document them below:
pip install pvliesdonk-paperless-mcp[docs]: installs mkdocs-material and mkdocstrings[python] for building the documentation site locally (uv run mkdocs serve).To run the newest merged code instead of the newest release, use the rolling edge tag. It is rebuilt on every merge to main and carries no version identity. See Image tags for the full tag list.
A compose.yml ships at the repo root and runs as-is: copy .env.example to .env, then docker compose up -d. It publishes port 8000 on the host and assumes no reverse proxy; Docker Compose covers the configuration split, the domain sentinel blocks, and a Traefik overlay.
To attach a remote Python debugger (development only; the protocol is unauthenticated), see Remote debugging.
Download .deb or .rpm packages from the GitHub Releases page. Both install a hardened systemd unit; env configuration is sourced from /etc/paperless-mcp/env (copy from the shipped /etc/paperless-mcp/env.example).
Download the .mcpb bundle from the GitHub Releases page and double-click to install, or run:
Claude Desktop prompts for required env vars via a GUI wizard, with no manual JSON editing needed.
For manual Claude Desktop configuration and setup options, see Claude Desktop deployment.
Artifacts ship on three channels. Each row lists exactly what that channel publishes.
| Channel | Version identity | Artifacts |
|---|---|---|
edge (rolling) | None; the commit is the identity | Docker image :edge rebuilt on every merge to main; .mcpb bundle as the mcpb-bundle-edge workflow artifact; Claude Code plugin .zip as the plugin-zip-edge artifact; rolling unstable docs version. It leaves no git tag, GitHub release, or PyPI entry behind. |
| Pre-release | vX.Y.Z-rc.N, computed and reviewed in its release pull request | PyPI (as the pre-release X.Y.ZrcN); GitHub release with wheels, sdist, .deb/.rpm packages, .mcpb bundle, plugin .zip, and SBOM attached; Docker image under its immutable vX.Y.Z-rc.N tag plus the ordering-aware rolling rc tag. Skips the plugin marketplace, the MCP registry, and the docs deploy. |
| Stable | vX.Y.Z | Everything: PyPI, Docker (version tag plus ordering-aware latest / vX / vX.Y), .deb/.rpm, GitHub release assets (wheels, sdist, .mcpb bundle, plugin .zip, SBOM), plugin marketplace and MCP registry entries (when the release is the newest stable), versioned docs with an ordering-aware latest alias. |
Pre-releases reach PyPI so that a candidate's .mcpb bundle installs: the bundle points at PyPI rather than carrying the code. Ordinary installers never see them, because a PEP 440 resolver skips pre-releases unless the requirement pins one or you pass --pre. Ask for a candidate by name with pip install pvliesdonk-paperless-mcp==X.Y.ZrcN. PyPI spells it in the PEP 440 canonical form, while tags use SemVer. Rolling pointers are ordering-aware, so a patch release cut from an old release/X.Y branch never moves latest-style tags back to older content, and a candidate for an already-released version never moves rc. See Release process for the full model.
For library usage (embedding the domain logic without the MCP transport), import from the paperless_mcp package directly. See the project's domain modules under src/paperless_mcp/ for entry points.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/paperless-mcp)<a href="https://allmcps.com/mcp/paperless-mcp"><img src="https://allmcps.com/api/badge/paperless-mcp?style=directory" alt="Paperless MCP on AllMCPs" /></a>