Skip to main content

Paperless-ngx API + MCP Server + A2A Server

Project description

Paperless-ngx MCP

CLI or API | MCP | Agent

PyPI - Version MCP Server PyPI - Downloads GitHub Repo stars PyPI - License GitHub last commit (by committer)

Version: 0.1.0

Documentation — Installation, deployment, usage across the API, CLI, and MCP interfaces, the integrated A2A agent server, and guidance for provisioning the backing platform are maintained in the official documentation.


Table of Contents


Overview

Paperless-ngx MCP MCP Server + A2A Agent

Paperless-ngx API + MCP Server + A2A Server

This repository is actively maintained - Contributions are welcome!

Key Features

  • Action-routed MCP tools — each domain is exposed as a single MCP tool that routes to many underlying operations via an action argument, keeping the tool surface small.
  • Three interfaces, one package — use it as a Python API client, an MCP server (stdio / streamable-http / sse), or a Pydantic-AI A2A agent.
  • agent-utilities native — built on the shared framework (auth, action router, telemetry, governance) for fleet consistency.
  • Per-tool toggles — enable or disable each tool domain with environment switches.
  • Enterprise-ready — OTEL/Langfuse telemetry and optional Eunomia access governance.

Available MCP Tools

Each tool is action-routed: pass an action and a JSON params_json payload. Tool domains can be toggled on or off with the listed environment variable. The table below is auto-generated from the live server by the mcp-readme-table pre-commit hook (python -m agent_utilities.mcp.readme_tools) — do not edit it by hand.

MCP Tool Toggle Env Var Description
document_operations DOCUMENTSTOOL Manage Paperless-ngx documents, correspondents, tags, document types,
system_operations SYSTEMTOOL Run Paperless-ngx full-text search, inspect background/consumption tasks,

2 action-routed tools (default MCP_TOOL_MODE=condensed). Each is enabled unless its toggle is set false; set MCP_TOOL_MODE=verbose (or both) for the 1:1 per-operation surface. Auto-generated — do not edit.

Installation

Install with uvx (no install — run on demand)

uvx --from paperless-ngx-mcp paperless-ngx-mcp      # MCP server
uvx --from paperless-ngx-mcp paperless-ngx-agent    # A2A agent server

Install with pip

python -m pip install paperless-ngx-mcp            # core (API client)
python -m pip install "paperless-ngx-mcp[all]"     # + MCP server + A2A agent + telemetry

Console scripts

After installation the following entry points are available on your PATH:

Command Description
paperless-ngx-mcp Launch the MCP server
paperless-ngx-agent Launch the A2A agent server

Usage

As a Python API client

from paperless_ngx_mcp.auth import get_client

client = get_client()
status = client.get_system_status()
print(status)

As an MCP server (CLI)

# Local stdio (for IDEs)
paperless-ngx-mcp

# Networked streamable-http
paperless-ngx-mcp --transport streamable-http --host 0.0.0.0 --port 8000

Calling an MCP tool

Tools are action-routed — pass an action plus a JSON params_json string:

{
  "tool": "system_operations",
  "arguments": {
    "action": "status",
    "params_json": "{}"
  }
}

MCP

Using as an MCP Server

The MCP Server can be run in stdio (local), streamable-http (networked), or sse mode.

Environment Variables

  • PAPERLESS_URL: The URL of the target service.
  • PAPERLESS_TOKEN: The API token or access token.

stdio Transport (local IDEs — Cursor, Claude Desktop, VS Code)

{
  "mcpServers": {
    "paperless-ngx-mcp": {
      "command": "uvx",
      "args": ["--from", "paperless-ngx-mcp", "paperless-ngx-mcp"],
      "env": {
        "PAPERLESS_URL": "https://service.example.com",
        "PAPERLESS_TOKEN": "your_token"
      }
    }
  }
}

Streamable-HTTP Transport (networked / production)

{
  "mcpServers": {
    "paperless-ngx-mcp": {
      "command": "uvx",
      "args": ["--from", "paperless-ngx-mcp", "paperless-ngx-mcp", "--transport", "streamable-http", "--port", "8000"],
      "env": {
        "TRANSPORT": "streamable-http",
        "HOST": "0.0.0.0",
        "PORT": "8000",
        "PAPERLESS_URL": "https://service.example.com",
        "PAPERLESS_TOKEN": "your_token"
      }
    }
  }
}

Additional Deployment Options

paperless-ngx-mcp can also run as a local container (Docker / Podman / uv) or be consumed from a remote deployment. The Deployment guide has full, copy-paste mcp_config.json for all four transports — stdio, streamable-http, local container / uv, and remote URL:

  • Local container / uv — launch the server from mcp_config.json via uvx, docker run, or podman run, or point at a local streamable-http container by url.
  • Remote URL — connect to a server deployed behind Caddy at http://paperless-ngx-mcp.arpa/mcp using the "url" key.

Install Python Package

python -m pip install paperless-ngx-mcp

Documentation

Full documentation is published to the GitHub Pages site and mirrored under docs/:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paperless_ngx_mcp-0.1.0.tar.gz (28.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paperless_ngx_mcp-0.1.0-py3-none-any.whl (35.4 kB view details)

Uploaded Python 3

File details

Details for the file paperless_ngx_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: paperless_ngx_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 28.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for paperless_ngx_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ae2431b9bacb878f321336b37cd2df5b0093fe11945e08f2e4e4ca0e0364d922
MD5 23accc12dae5958fbe02040c91bc4ce1
BLAKE2b-256 bbf5550ad96dd7fd14747d3c75115ccff63e6043b5998dda27f9e69ec6724541

See more details on using hashes here.

File details

Details for the file paperless_ngx_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for paperless_ngx_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8805970b173e08c84d6cb3976a1362b53a91cf6897acfd13c4000d980eb97d87
MD5 69cb3167b88a9d8ab92d4e87514b8631
BLAKE2b-256 854a495864e37eb6865beb67a16c1212373ecb7ca2849d6cd4f0f376f205b37c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page