Paperless-NGX-MCP ghcr.io/paulmeier/paperless-ngx-mcp-container:latest https://github.com/paulmeier/paperless-ngx-mcp-container/pkgs/container/paperless-ngx-mcp-container bridge false bash --restart=unless-stopped https://github.com/paulmeier/paperless-ngx-mcp-unraid/issues https://github.com/paulmeier/paperless-ngx-mcp-container Productivity: Tools:Utilities Network:Management https://raw.githubusercontent.com/paulmeier/paperless-ngx-mcp-unraid/main/icons/paperless-ngx-mcp.png https://raw.githubusercontent.com/paulmeier/paperless-ngx-mcp-unraid/main/templates/paperless-ngx-mcp.xml /appdata/.tailscale_state Paperless-NGX MCP is a Model Context Protocol server that connects AI assistants and other MCP clients to your Paperless-NGX document archive. A client such as Claude can search your documents, read their content and metadata, and manage tags, correspondents, and document types through scoped tools instead of raw API calls. This container runs the server in streamable HTTP transport mode on port 3000 and serves the MCP endpoint at POST /mcp. It needs a reachable Paperless-NGX instance and a Paperless-NGX API token to authenticate. This is a headless server with no browsable web interface: point your MCP client at http://[UNRAID-IP]:3000/mcp . The image is maintained at paulmeier/paperless-ngx-mcp-container and wraps the upstream paperless-ngx-mcp project by cubinet-code. A running Paperless-NGX instance that this container can reach over the network, plus a Paperless-NGX API token. Create the token in Paperless-NGX under Settings, then the user menu, then API Token. The token inherits the permissions of the Paperless user that owns it, so use an account scoped to only what you want the MCP server to be able to do. In the Paperless URL field use the Paperless host LAN IP or container name, not localhost, which inside the container points back at the MCP server itself. paperless paperless-ngx paperlessngx mcp model context protocol ai llm claude anthropic documents document management dms ocr archive search streamable http cubinet 3000 https://paperless.example.com /mnt/user/appdata/paperless-ngx-mcp Paperless-NGX MCP is a Model Context Protocol server that connects AI assistants and other MCP clients to your Paperless-NGX document archive. A client such as Claude can search your documents, read their content and metadata, and manage tags, correspondents, and document types through scoped tools instead of raw API calls. WHAT YOU NEED 1. A running Paperless-NGX instance this container can reach over your network. 2. A Paperless-NGX API token. Create it in Paperless-NGX under Settings, then the user menu, then API Token. The token inherits the permissions of the Paperless user that owns it, so use an account scoped to only what you want the MCP server to be able to do. CONFIGURE Set Paperless URL to the full address of your Paperless-NGX, including scheme and port if non-standard, for example http://192.168.1.10:8000 . Do not use localhost or 127.0.0.1, because inside the container those refer to the MCP server itself. If Paperless-NGX is another Docker container on this same host, use the Unraid host LAN IP with the published Paperless port, or place both containers on one custom Docker network and use the Paperless container name. Paste your token into Paperless API Token and Apply. CONNECTING A CLIENT The container runs in streamable HTTP transport mode on port 3000. Point your MCP client at http://[UNRAID-IP]:3000/mcp and set the transport type to http. There is no browsable web interface, so this template intentionally has no WebUI button. With Claude Code you can register it in one line: claude mcp add --transport http paperless http://[UNRAID-IP]:3000/mcp TAILSCALE This template supports Unraid built-in Tailscale integration so the server can join your tailnet as its own device and be reached privately without opening any ports. Edit the container, switch to Advanced View, toggle Use Tailscale on, set a hostname, and Apply, then open the container log and click the authentication link. The template declares the Tailscale state directory inside the mapped Appdata volume so the machine identity survives updates and you avoid the Couldn't detect persistent Docker directory error. The image already ships ca-certificates, which the Unraid Tailscale hook needs. SECURITY The MCP server can do anything the API token allows, so give the token an owning Paperless user scoped to least privilege. The MCP endpoint has no authentication of its own, so keep it on your LAN or behind Tailscale rather than exposing it directly to the internet. Image: https://github.com/paulmeier/paperless-ngx-mcp-container Upstream server: https://github.com/cubinet-code/paperless-ngx-mcp