Full Paperless-ngx API for AI assistants: search, tag, edit and upload documents, workflows and more
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.
A Model Context Protocol server for Paperless-NGX. Exposes the full Paperless-NGX REST API to AI assistants β documents, tags, correspondents, document types, custom fields, storage paths, saved views, share links and bundles, workflows, mail accounts and rules, document versions, notes, trash, and tasks.

/api/schema/ against the tools here and fails when upstream adds one that is neither wrapped nor deliberately skipped.delete_* tool, empty_trash, merge_documents_as_versions and bulk delete require confirm: true; bulk edits across "all matching documents" refuse filters Paperless would silently ignore; and the triage_inbox prompt proposes changes and waits for your go-ahead before writing anything.list_*, get_*, delete_*, β¦) group into one permission wildcard each.npx, a Docker image, a one-click Claude Desktop extension, or the official MCP Registry.Targets Paperless-ngx 3.2 (tested against 3.2.1). Older Paperless versions are not supported β use paperless-ngx-mcp@3.1.1 for Paperless 2.x. The package major version tracks the Paperless-ngx major it targets; there are no 1.x or 2.x releases.
The server is published to npm as paperless-ngx-mcp. You can run it with npx β no clone or build required.
Drop --scope user to install for the current project only. See claude mcp add --help for more options.
This writes the entry to ~/.codex/config.toml.
Download paperless-ngx-mcp.mcpb from the latest release and double-click it, or install it from Settings β Extensions. Claude Desktop asks for your Paperless URL and API token.
The buttons install placeholder values; replace PAPERLESS_URL and PAPERLESS_API_KEY afterwards. Or add this to your client's MCP config file (e.g. claude_desktop_config.json, ~/.cursor/mcp.json, ~/.config/cline/mcp.json):
A multi-arch image (amd64, arm64) is published to ghcr.io/cubinet-code/paperless-ngx-mcp. As a stdio server in any MCP client config:
Or as a long-running Streamable HTTP server. It has no authentication, so keep it off untrusted networks:
| Variable | Required | Purpose |
|---|---|---|
PAPERLESS_URL | yes | Base URL the MCP server uses to talk to Paperless-NGX. |
PAPERLESS_API_KEY | yes | API token (see above). |
PAPERLESS_PUBLIC_URL | no | Public URL the assistant uses when constructing browser links to documents. Falls back to PAPERLESS_URL. |
CLI flags (--baseUrl, --token, --publicUrl, --http, --port, plus the HTTP session limits) take precedence over environment variables.
Things you can ask Claude (or any MCP-aware assistant):
The server registers tools across twelve domains.
list_documents, get_document, get_document_content, search_documents, download_document, download_documents_bulk, get_document_thumbnail, get_document_preview, get_document_history, get_document_metadata, update_document, post_document, email_document, edit_documents_bulk, delete_document, search_autocomplete, get_document_suggestions, get_document_ai_suggestions, get_next_asn, upload_document_version, update_document_version, delete_document_version, merge_documents_as_versions
list_tags, get_tag, create_tag, update_tag, delete_tag, edit_tags_bulk
list_correspondents, get_correspondent, create_correspondent, update_correspondent, delete_correspondent, edit_correspondents_bulk
list_document_types, get_document_type, create_document_type, update_document_type, delete_document_type, edit_document_types_bulk
list_custom_fields, get_custom_field, create_custom_field, update_custom_field, delete_custom_field, edit_custom_fields_bulk
list_storage_paths, get_storage_path, create_storage_path, update_storage_path, delete_storage_path, test_storage_path
list_saved_views, get_saved_view, create_saved_view, update_saved_view, delete_saved_view
list_share_links, list_document_share_links, get_share_link, create_share_link, delete_share_link, list_share_link_bundles, get_share_link_bundle, create_share_link_bundle, rebuild_share_link_bundle, delete_share_link_bundle
list_workflows, get_workflow, create_workflow, update_workflow, delete_workflow, list_workflow_actions, get_workflow_action, create_workflow_action, update_workflow_action, delete_workflow_action, list_workflow_triggers, get_workflow_trigger, create_workflow_trigger, update_workflow_trigger, delete_workflow_trigger
list_mail_accounts, get_mail_account, create_mail_account, update_mail_account, delete_mail_account, test_mail_account, process_mail_account, list_mail_rules, get_mail_rule, create_mail_rule, update_mail_rule, delete_mail_rule
get_statistics, get_system_status, list_document_notes, create_document_note, delete_document_note, list_trash, restore_from_trash, empty_trash, list_tasks, list_active_tasks, get_task_status_counts, get_task_summary, acknowledge_tasks
Tool names are verb-first, so wildcard-based permission rules group cleanly by operation:
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-ngx-2)<a href="https://allmcps.com/mcp/paperless-ngx-2"><img src="https://allmcps.com/api/badge/paperless-ngx-2?style=directory" alt="Paperless Ngx on AllMCPs" /></a>