Paperless-ngx MCP server
Paperless-ngx in any MCP client, through Memtro: Paperless-ngx does not publish this server. Memtro's Paperless-ngx connector reads Paperless-ngx through its API with the credentials you connect, and one endpoint hands those tools, every other system you connect and Memtro's memory tools to Claude Code, Cursor, Claude Desktop or anything else that speaks Streamable HTTP, as you.
What the model can do
Your self-hosted Paperless-ngx document archive: search scanned documents by text, sender, type, tag and date, read one with its OCR text and notes, and list tags, correspondents and document types. When asked, can add or delete a note, create a tag, correspondent, document type or storage path, change or delete a tag, change a document's title, correspondent, type, date or tags, tag or re-file named documents in bulk, reprocess them, move a document to the trash, restore it, or destroy it from the trash.
Reads
paperless_search_documentsSearch documents in Paperless-ngx: full-text over the OCR text and titles (query), or by correspondent, document type, tag and date.paperless_get_documentOne Paperless-ngx document: its metadata, its OCR text (cut at 8,000 characters) and its notes.paperless_list_labelsTags, correspondents or document types in Paperless-ngx with their ids and document counts, optionally filtered by name.
Acts, when you ask
These change something in Paperless-ngx. The model is told to use them only when you ask for exactly that, and each one is granted by name: per team on a shared connection, by the owner on a personal one.
paperless_add_noteAdd a note to a Paperless-ngx document, only when the person asked.paperless_create_tagCreate a new tag in Paperless-ngx, only when the person asked.paperless_create_correspondentCreate a new correspondent (a sender) in Paperless-ngx, only when the person asked.paperless_update_documentChange a Paperless-ngx document's title, correspondent, document type, date or tags, only when the person asked.paperless_delete_noteDelete a note from a Paperless-ngx document, only when the person explicitly asked to delete it.paperless_bulk_tag_documentsAdd and/or remove tags on the named Paperless-ngx documents (up to 100 ids), only when the person asked.paperless_bulk_set_correspondentSet (REPLACING the current one) or clear the correspondent of the named Paperless-ngx documents (up to 100 ids), only when the person asked.paperless_bulk_set_document_typeSet (REPLACING the current one) or clear the document type of the named Paperless-ngx documents (up to 100 ids), only when the person asked.paperless_reprocess_documentsRe-run OCR and processing on the named Paperless-ngx documents (up to 100 ids) in the background, only when the person asked.paperless_create_document_typeCreate a new document type in Paperless-ngx, only when the person asked.paperless_create_storage_pathCreate a storage path (a file-naming template such as {{ correspondent }}/{{ created_year }}/{{ title }}) in Paperless-ngx…paperless_update_tagChange a Paperless-ngx tag, only when the person asked: rename it, change its colour, make it an inbox tag or not, or change its automatic matching.paperless_delete_tagDelete a Paperless-ngx tag, only when the person explicitly asked.paperless_restore_from_trashRestore the named documents from the Paperless-ngx trash (up to 100 ids), only when the person asked.paperless_empty_trashPermanently destroy the named documents that are already in the Paperless-ngx trash (up to 100 ids): the files…paperless_delete_documentDelete a Paperless-ngx document, only when the person explicitly asked to delete it.
Connect it
First connect Paperless-ngx on Dashboard → Connections, then add Memtro to your client once. The Paperless-ngx tools appear alongside the tools of everything else you have connected; nothing is configured per connector.
Claude Code
The Memtro plugin registers the server and a skill for when to use it; the tools are then available in every session.
claude plugin marketplace add memtro-org/claude-memtro
claude plugin install memtro@memtro --config api_key=sk-memtro-...Cursor
Add the server to .cursor/mcp.json in the project, or to the global file under ~/.cursor/.
{
"mcpServers": {
"memtro": {
"url": "https://platform.memtro.com/api/mcp",
"headers": {
"Authorization": "Bearer sk-memtro-..."
}
}
}
}Claude Desktop
Create a personal API key on Dashboard → Profile → API keys. In Claude Desktop add an MCP server of type HTTP with URL https://platform.memtro.com/api/mcp and the header Authorization: Bearer sk-memtro-…
OpenCode
A remote server in opencode.json.
{
"mcp": {
"memtro": {
"type": "remote",
"url": "https://platform.memtro.com/api/mcp",
"headers": {
"Authorization": "Bearer sk-memtro-..."
}
}
}
}Pi
One command: pi mcp add memtro --url https://platform.memtro.com/api/mcp --bearer-token-env-var MEMTRO_API_KEY. Tools arrive as mcp__memtro__*. The pi-memtro extension registers it for you, alongside Memtro as the model.
Any other client
Add an MCP server of type HTTP (Streamable HTTP, stateless) at https://platform.memtro.com/api/mcp with the header Authorization: Bearer sk-memtro-.... Codex, Zed, Windsurf, Cline and the SDKs all take a remote server this way.
Who may use it
The key identifies the person, and the server offers that person the tools they may use everywhere else in Memtro. A shared Paperless-ngx connection is used by the teams an administrator granted it to, tool by tool, on the Permissions page; a personal connection is used by its owner alone, and its tools that act stay off until the owner allows them. See Teams and permissions and Connectors.
Ask it like this
- › What is the latest invoice from Northwind Energy?
- › Which documents tagged insurance arrived this year?
- › What does the letter from HMRC dated in September say?
- › Tag every Brightwave Ltd invoice from October as paid
- › Add a note to the BigCo lease saying it was renewed
Questions
- Is this an official Paperless-ngx MCP server?
- No. It is Memtro's MCP server with Memtro's Paperless-ngx connector behind it: the connector reads Paperless-ngx through its API with the credentials you connect on Dashboard → Connections, and Paperless-ngx publishes nothing here. The same endpoint carries every other system you connect and Memtro's memory tools.
- What does it cost?
- Nothing on top of Memtro. One price per organisation by its number of users, from $50 a month for up to 10 users after a 7-day free trial, with every connector, the MCP server, jobs and memory included. You bring your own model keys.
- Can it change anything in Paperless-ngx?
- Only when you ask, and only what it has been granted: add a note to a document; create a tag; create a correspondent; change a document's title, correspondent, type, date or tags; delete a note from a document; move a document to the trash; add or remove tags on several named documents at once; set or clear the correspondent or document type of several named documents at once; re-run OCR and processing on named documents; create a document type or a storage path; rename a tag or change its colour, inbox flag or matching, or delete a tag from every document; restore named documents from the trash, or destroy named trashed documents permanently. Every other tool reads, searches or lists. An administrator grants each acting tool by name per team, and a personal connection acts only after its owner allows it.
- Which clients work?
- Any MCP client that speaks Streamable HTTP: Claude Code, Cursor, Claude Desktop, OpenCode, Codex, Zed, Windsurf, Cline and the Anthropic and OpenAI SDKs. There is no local process to run; the server is remote and authenticated with your key.