Agent-Native Calendar
Agent-Native Google Calendar - manage events, sync, and public booking
Description from the maker (original English)
Paperless-NGX over MCP: search, read, upload and tag documents; manage correspondents and types.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
PAPERLESS_MCP_KV_STORE_URL, PAPERLESS_MCP_TOOLS_ALLOW, PAPERLESS_MCP_TOOLS_DENY, PAPERLESS_MCP_SERVER_NAME, PAPERLESS_MCP_INSTANCE_DESCRIPTION, PAPERLESS_MCP_INSTRUCTIONS_EXTRA, PAPERLESS_MCP_INSTRUCTIONS, PAPERLESS_MCP_LOG_LEVEL, PAPERLESS_MCP_LOG_FORMAT, PAPERLESS_MCP_PAPERLESS_URL, PAPERLESS_MCP_API_TOKEN, PAPERLESS_MCP_HTTP_TIMEOUT_SECONDS, PAPERLESS_MCP_HTTP_RETRIES, PAPERLESS_MCP_DEFAULT_PAGE_SIZE, PAPERLESS_MCP_PAPERLESS_PUBLIC_URL, PAPERLESS_MCP_TRANSFER_TTL_DEFAULT_S, PAPERLESS_MCP_TRANSFER_TTL_MAX_S, PAPERLESS_MCP_TRANSFER_GRACE_TTL_S, PAPERLESS_MCP_TRANSFER_LEASE_S, PAPERLESS_MCP_TRANSFER_MAX_UPLOAD_BYTESValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"paperless": {
"command": "uvx",
"args": [
"pvliesdonk-paperless-mcp"
],
"env": {
"PAPERLESS_MCP_KV_STORE_URL": "your-value",
"PAPERLESS_MCP_TOOLS_ALLOW": "your-value",
"PAPERLESS_MCP_TOOLS_DENY": "your-value",
"PAPERLESS_MCP_SERVER_NAME": "your-value",
"PAPERLESS_MCP_INSTANCE_DESCRIPTION": "your-value",
"PAPERLESS_MCP_INSTRUCTIONS_EXTRA": "your-value",
"PAPERLESS_MCP_INSTRUCTIONS": "your-value",
"PAPERLESS_MCP_LOG_LEVEL": "your-value",
"PAPERLESS_MCP_LOG_FORMAT": "your-value",
"PAPERLESS_MCP_PAPERLESS_URL": "your-value",
"PAPERLESS_MCP_API_TOKEN": "your-value",
"PAPERLESS_MCP_HTTP_TIMEOUT_SECONDS": "your-value",
"PAPERLESS_MCP_HTTP_RETRIES": "your-value",
"PAPERLESS_MCP_DEFAULT_PAGE_SIZE": "your-value",
"PAPERLESS_MCP_PAPERLESS_PUBLIC_URL": "your-value",
"PAPERLESS_MCP_TRANSFER_TTL_DEFAULT_S": "your-value",
"PAPERLESS_MCP_TRANSFER_TTL_MAX_S": "your-value",
"PAPERLESS_MCP_TRANSFER_GRACE_TTL_S": "your-value",
"PAPERLESS_MCP_TRANSFER_LEASE_S": "your-value",
"PAPERLESS_MCP_TRANSFER_MAX_UPLOAD_BYTES": "your-value"
}
}
}
}Run this in your terminal
claude mcp add paperless --env PAPERLESS_MCP_KV_STORE_URL=your-value --env PAPERLESS_MCP_TOOLS_ALLOW=your-value --env PAPERLESS_MCP_TOOLS_DENY=your-value --env PAPERLESS_MCP_SERVER_NAME=your-value --env PAPERLESS_MCP_INSTANCE_DESCRIPTION=your-value --env PAPERLESS_MCP_INSTRUCTIONS_EXTRA=your-value --env PAPERLESS_MCP_INSTRUCTIONS=your-value --env PAPERLESS_MCP_LOG_LEVEL=your-value --env PAPERLESS_MCP_LOG_FORMAT=your-value --env PAPERLESS_MCP_PAPERLESS_URL=your-value --env PAPERLESS_MCP_API_TOKEN=your-value --env PAPERLESS_MCP_HTTP_TIMEOUT_SECONDS=your-value --env PAPERLESS_MCP_HTTP_RETRIES=your-value --env PAPERLESS_MCP_DEFAULT_PAGE_SIZE=your-value --env PAPERLESS_MCP_PAPERLESS_PUBLIC_URL=your-value --env PAPERLESS_MCP_TRANSFER_TTL_DEFAULT_S=your-value --env PAPERLESS_MCP_TRANSFER_TTL_MAX_S=your-value --env PAPERLESS_MCP_TRANSFER_GRACE_TTL_S=your-value --env PAPERLESS_MCP_TRANSFER_LEASE_S=your-value --env PAPERLESS_MCP_TRANSFER_MAX_UPLOAD_BYTES=your-value -- uvx pvliesdonk-paperless-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"paperless": {
"command": "uvx",
"args": [
"pvliesdonk-paperless-mcp"
],
"env": {
"PAPERLESS_MCP_KV_STORE_URL": "your-value",
"PAPERLESS_MCP_TOOLS_ALLOW": "your-value",
"PAPERLESS_MCP_TOOLS_DENY": "your-value",
"PAPERLESS_MCP_SERVER_NAME": "your-value",
"PAPERLESS_MCP_INSTANCE_DESCRIPTION": "your-value",
"PAPERLESS_MCP_INSTRUCTIONS_EXTRA": "your-value",
"PAPERLESS_MCP_INSTRUCTIONS": "your-value",
"PAPERLESS_MCP_LOG_LEVEL": "your-value",
"PAPERLESS_MCP_LOG_FORMAT": "your-value",
"PAPERLESS_MCP_PAPERLESS_URL": "your-value",
"PAPERLESS_MCP_API_TOKEN": "your-value",
"PAPERLESS_MCP_HTTP_TIMEOUT_SECONDS": "your-value",
"PAPERLESS_MCP_HTTP_RETRIES": "your-value",
"PAPERLESS_MCP_DEFAULT_PAGE_SIZE": "your-value",
"PAPERLESS_MCP_PAPERLESS_PUBLIC_URL": "your-value",
"PAPERLESS_MCP_TRANSFER_TTL_DEFAULT_S": "your-value",
"PAPERLESS_MCP_TRANSFER_TTL_MAX_S": "your-value",
"PAPERLESS_MCP_TRANSFER_GRACE_TTL_S": "your-value",
"PAPERLESS_MCP_TRANSFER_LEASE_S": "your-value",
"PAPERLESS_MCP_TRANSFER_MAX_UPLOAD_BYTES": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"paperless": {
"type": "stdio",
"command": "uvx",
"args": [
"pvliesdonk-paperless-mcp"
],
"env": {
"PAPERLESS_MCP_KV_STORE_URL": "your-value",
"PAPERLESS_MCP_TOOLS_ALLOW": "your-value",
"PAPERLESS_MCP_TOOLS_DENY": "your-value",
"PAPERLESS_MCP_SERVER_NAME": "your-value",
"PAPERLESS_MCP_INSTANCE_DESCRIPTION": "your-value",
"PAPERLESS_MCP_INSTRUCTIONS_EXTRA": "your-value",
"PAPERLESS_MCP_INSTRUCTIONS": "your-value",
"PAPERLESS_MCP_LOG_LEVEL": "your-value",
"PAPERLESS_MCP_LOG_FORMAT": "your-value",
"PAPERLESS_MCP_PAPERLESS_URL": "your-value",
"PAPERLESS_MCP_API_TOKEN": "your-value",
"PAPERLESS_MCP_HTTP_TIMEOUT_SECONDS": "your-value",
"PAPERLESS_MCP_HTTP_RETRIES": "your-value",
"PAPERLESS_MCP_DEFAULT_PAGE_SIZE": "your-value",
"PAPERLESS_MCP_PAPERLESS_PUBLIC_URL": "your-value",
"PAPERLESS_MCP_TRANSFER_TTL_DEFAULT_S": "your-value",
"PAPERLESS_MCP_TRANSFER_TTL_MAX_S": "your-value",
"PAPERLESS_MCP_TRANSFER_GRACE_TTL_S": "your-value",
"PAPERLESS_MCP_TRANSFER_LEASE_S": "your-value",
"PAPERLESS_MCP_TRANSFER_MAX_UPLOAD_BYTES": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
PAPERLESS_MCP_KV_STORE_URL envPAPERLESS_MCP_TOOLS_ALLOW envPAPERLESS_MCP_TOOLS_DENY envPAPERLESS_MCP_SERVER_NAME envPAPERLESS_MCP_INSTANCE_DESCRIPTION envPAPERLESS_MCP_INSTRUCTIONS_EXTRA envPAPERLESS_MCP_INSTRUCTIONS envPAPERLESS_MCP_LOG_LEVEL envPAPERLESS_MCP_LOG_FORMAT envPAPERLESS_MCP_PAPERLESS_URL envPAPERLESS_MCP_HTTP_TIMEOUT_SECONDS envPAPERLESS_MCP_HTTP_RETRIES envPAPERLESS_MCP_DEFAULT_PAGE_SIZE envPAPERLESS_MCP_PAPERLESS_PUBLIC_URL envPAPERLESS_MCP_TRANSFER_TTL_DEFAULT_S envPAPERLESS_MCP_TRANSFER_TTL_MAX_S envPAPERLESS_MCP_TRANSFER_GRACE_TTL_S envPAPERLESS_MCP_TRANSFER_LEASE_S envPAPERLESS_MCP_TRANSFER_MAX_UPLOAD_BYTES envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 10, 2026
The registry name was verified with the GitHub account pvliesdonk, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: PAPERLESS_MCP_API_TOKEN
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (3.0.0) reached the registry 2 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv), Docker on your computer.
In the same category: Agent-Native Calendar, Excel MCP Server, MCP Server for Excel
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Agent-Native Google Calendar - manage events, sync, and public booking
Lets AI create and edit Excel files itself, including formulas, charts and PivotTables, without Excel installed.
Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Paperless-NGX over MCP: search, read, upload and tag documents; manage correspondents and types.
[Documentation](https://pvliesdonk.github.io/paperless-mcp/) | [Config wizard](https://pvliesdonk.github.io/paperless-mcp/latest/reference/configuration-generator/) | [PyPI](https://pypi.org/project/pvliesdonk-paperless-mcp/) | [Docker](https://github.com/pvliesdonk/paperless-mcp/pkgs/container/paperless-mcp)
This server gives an MCP client (Claude Desktop, Claude Code, claude.ai or any other) the API of an existing Paperless-NGX instance: one tool per Paperless operation, with the instance's own permissions. It adds no document store and no workflow of its own; what a task does with the tools is up to the model.
With the server connected, a client can handle requests such as:
What the server can reach, what it changes and who gets in is set out in the security model; the block below says who it serves and where it stops.
Pick the client you use. Each line installs the released version; the Get started tutorials carry on from there.
Claude Desktop. Download the .mcpb bundle from the releases page and open it with Claude Desktop (or Settings › Extensions › Advanced settings › Install Extension…). Claude Desktop asks for the required settings itself. Tutorial.
Claude Code. Two commands inside Claude Code; the second asks for a scope. Tutorial.
/plugin marketplace add pvliesdonk/claude-plugins
/plugin install paperless-mcp@pvliesdonk
A client that runs a command (stdio). To register it in Claude Code, see the Claude Code tutorial.
uv tool install "pvliesdonk-paperless-mcp"
paperless-mcp serve
A server for remote clients (streamable HTTP). A remote server connects the clients.
docker run --rm -p 8000:8000 --env-file .env ghcr.io/pvliesdonk/paperless-mcp:latest
A compose.yml ships at the repository root and runs as-is: copy .env.example to .env, then docker compose up -d. Deploy covers authentication, OIDC, a reverse proxy and system packages (.deb/.rpm on the releases page). The server answers /health and /health/ready outside the MCP mount, and its get_server_info tool reports the running version.
uv tool install "pvliesdonk-paperless-mcp[debug]" adds debugpy, for attaching a debugger to a running server.Everything is configured through environment variables with the PAPERLESS_MCP_ prefix. The ones most installs set:
| Variable | Default | Required | Description |
|---|---|---|---|
PAPERLESS_MCP_PAPERLESS_URL | (none) | Yes | Base URL of the Paperless-NGX REST API, without a trailing slash. |
PAPERLESS_MCP_API_TOKEN | (none) | Yes | Paperless service-account token used for outbound API requests. |
PAPERLESS_MCP_PAPERLESS_PUBLIC_URL | (none) | No | Public Paperless UI URL for user-visible links; defaults to PAPERLESS_URL. |
Every variable the server reads, the shared ones included, is in the configuration reference; .env.example lists the same surface in copy-paste form, and the config wizard writes one for your deployment.
CONTRIBUTING.md and SECURITY.md at the root.PAPERLESS_MCP_TOOLS_DENY (or PAPERLESS_MCP_TOOLS_ALLOW) to hide the mutating tools, including create_upload_link when transfers are enabled. The template applies visibility last in make_server, so hidden tools leave tools/list and are rejected on tools/call. Clients cannot invoke a write that will be refused, and the rule lives in one place for every server built on this template.PAPERLESS_MCP_HTTP_RETRIES applies to GETs on 5xx/network errors; writes never retry automatically, to avoid double-applying bulk edits or uploads.Lucide icon hint so MCP clients that render icons (Claude Desktop) get a coherent visual surface. See src/paperless_mcp/tools/_icons.py.null; Python consumers must handle that value. See task tools.Pydantic models use lenient validation for list-endpoint responses so newer Paperless-NGX versions do not break the client (the Document.some_future_paperless_field test pins this behaviour).prompts.py is intentionally empty; prompts land as concrete user-workflow patterns emerge in practice.