mcp-paperless-ngx
Создан на основе REST API версии 10 и отличается тремя вещами:
Учтённое покрытие. Каждая из 92 документированных конечных точек либо доступна как инструмент, либо перечислена в
src/tools/coverage.tsс письменным обоснованием, почему её исключили. Тест это проверяет, так что релиз Paperless, добавляющий эндпоинт, приводит к падению CI, а не к тихой потере поддержки.Дисциплина токенов. Документ Paperless несёт в себе полный текст OCR. Наивные обёртки возвращают его по умолчанию, и один поиск может исчерпать контекст модели. Здесь результаты списков обрезаются на стороне сервера через
?fields=, текст живёт за отдельным постраничным инструментом, и ни один эндпоинт списка не передаёт сырой ответ API — тест это проверяет. См. Стоимость контекста.Ограниченная поверхность. 99 инструментов утопили бы список инструментов модели. Наборы инструментов позволяют открыть только то, что нужно конкретному клиенту, а
--read-onlyполностью убирает все пути записи.
Paperless-ngx 2.x не поддерживается: API версии 10 ввёл эндпоинты (вложенные теги, версии документов,
share_link_bundles, операции разделения PDF), которые этот сервер считает существующими.
Быстрый старт
npx -y mcp-paperless-ngx --check # verify connectivity, then exitClaude Code
claude mcp add paperless --scope user \
--env PAPERLESS_URL=https://paperless.example.com \
--env PAPERLESS_TOKEN=your-api-token \
-- npx -y mcp-paperless-ngxClaude Desktop, Cursor, Cline и другие MCP-клиенты
{
"mcpServers": {
"paperless": {
"command": "npx",
"args": ["-y", "mcp-paperless-ngx"],
"env": {
"PAPERLESS_URL": "https://paperless.example.com",
"PAPERLESS_TOKEN": "your-api-token"
}
}
}
}Получение API-токена
Веб-интерфейс Paperless → ваше имя пользователя (справа сверху) → My Profile → кнопка с круговой стрелкой рядом с полем API-токена.
Related MCP server: paperlessngx-mcp
Конфигурация
Переменная | Обязательная | По умолчанию | Назначение |
| да | — | Базовый URL, с которым общается сервер. |
| да | — | API-токен. |
| нет |
| URL, используемый при построении ссылок для пользователя, если экземпляр доступен снаружи под другим именем. |
| нет | см. ниже | Наборы инструментов через запятую или |
| нет |
| Открывать только инструменты, которые ничего не могут изменить. |
| нет | — | Дополнительные заголовки запросов в виде JSON ( |
| нет | системная временная папка | Куда записываются скачанные файлы. |
| нет |
| Жёсткий потолок размера страниц списков, что бы ни запросила модель. |
| нет |
| Таймаут запроса. |
| нет |
| Версия REST API, отправляемая в заголовке |
Флаги CLI --url, --token, --public-url, --toolsets и --read-only переопределяют
окружение. --check проверяет связь, --list-tools печатает включённые инструменты.
Наборы инструментов
Набор инструментов | По умолчанию | Содержимое |
| вкл | Поиск, чтение, обновление, удаление, загрузка, скачивание, заметки, массовые и PDF-операции |
| вкл | Теги, корреспонденты, типы документов, пути хранения |
| вкл | Определения пользовательских полей |
| вкл | Сохранённые представления |
| вкл | Ссылки для публикации и пакеты ссылок для публикации |
| вкл | Правила автоматизации, триггеры, действия |
| вкл | Глобальный поиск, статистика, статус, задачи, корзина |
| выкл | IMAP-аккаунты, почтовые правила, обработанная почта |
| выкл | Пользователи, группы, профиль, конфигурация, журналы (только чтение) |
mail и admin по умолчанию выключены, потому что большинству сессий они не нужны, а каждый
дополнительный инструмент стоит контекста на каждом запросе. Включите их явно:
PAPERLESS_TOOLSETS=documents,metadata,system,mail
PAPERLESS_TOOLSETS=allСтоимость контекста
Обёртка API для языковой модели имеет стоимость, которой нет у самого API: всё, что видит модель, оплачивается на каждом запросе. Два места, где это бьёт, и что этот сервер с ними делает.
Ответы. Три формы дороги в Paperless и легко возвращаются случайно:
Источник | Проблема | Обработка |
Списки документов | Каждый документ несёт полный текст OCR в |
|
| Возвращает полные объекты | Документы сводятся, остальные типы сокращаются до id + name |
Workflows, mail rules, groups, tasks | 27–34 поля на объект, вложенные определения триггеров/действий инлайн | Сводятся к идентифицирующим полям; вложенные списки схлопываются в счётчики. |
Определения инструментов. Это более крупная и менее очевидная стоимость: имена, описания и JSON-схемы отправляются с каждым запросом, независимо от того, вызывается ли какой-либо инструмент.
Наборы инструментов | Инструменты | Примерная стоимость на запрос |
| 99 | ~20 500 токенов |
по умолчанию | 85 | ~18 500 токенов |
| 49 | ~12 900 токенов |
Сделать это бесплатным невозможно — это цена инструмента, которым модель может пользоваться без
угадывания. Но стоит подходить осознанно: если ваши сессии только ищут и подшивают документы,
запуск PAPERLESS_TOOLSETS=documents,metadata экономит больше контекста, чем любое урезание ответов.
Безопасность
Сервер открывает деструктивные операции, потому что менеджер документов без них — не совсем менеджер. Он не пытается угадывать, когда они уместны — это суждение принадлежит клиенту и пользователю. Вместо этого он делает следующее:
Деструктивные инструменты помечены
destructiveHint: true, чтобы MCP-клиенты могли требовать подтверждения.Описания инструментов прямо говорят, что нельзя отменить (
empty_trash,delete_custom_field,delete_originals), и просят подтверждения перед вызовом.--read-onlyудаляет все инструменты записи из списка, а не отказывает им во время вызова.Массовые эндпоинты поддерживают режим «применить ко всему, что соответствует этому фильтру». Этот сервер не открывает его: массовые инструменты принимают явные списки ID, так что неправильный фильтр не может молча затронуть весь архив.
create_share_linkсоздаёт публично доступный URL. Его описание говорит об этом, а подсказкаaudit_sharingсуществует, чтобы просмотреть, что уже открыто.
Эндпоинты, связанные с учётными данными (генерация токенов, включение TOTP, отключение второго фактора
у кого-то),
намеренно не открыты. См. EXCLUDED_ENDPOINTS для полного списка и обоснования.
Подсказки
Зарегистрированы как слэш-команды в клиентах, поддерживающих MCP-подсказки:
Подсказка | Что она делает |
| Проходит по неразобранным документам, предлагает метаданные с предпочтением существующих записей, ничего не применяет, пока пользователь не одобрит. |
| Находит документ по расплывчатому описанию, сначала ища дёшево, а потом широко. |
| Просматривает все публичные ссылки для публикации и помечает те, что никогда не истекают. |
Тестирование
Три уровня, потому что они ловят разные вещи:
npm test # logic — no network
PAPERLESS_URL=… PAPERLESS_TOKEN=… \
node scripts/smoke-test.mjs # all 55 read-only tools, live
PAPERLESS_URL=… PAPERLESS_TOKEN=… \
node scripts/write-test.mjs # writes, live — see the warningnpm test проверяет собственные рассуждения сервера: покрытие эндпоинтов, значения enum
против схемы, что ни один инструмент списка не утекает сырые объекты API, что режим только для чтения
действительно убирает записи.
smoke-test.mjs проверяет предположения, которые он делает о Paperless. Он вызывает каждый
инструмент только для чтения против реального экземпляра, разрешая ID из вызовов списков вместо
жёсткого кодирования, и печатает размеры ответов, чтобы дорогие инструменты оставались видимыми. Он
ничего не записывает.
write-test.mjs покрывает остальное: загрузку и потребление, обновление каждого типа поля,
заметки, массовые правки тегов, ссылки для публикации, ротацию и цикл корзины.
Он трогает только объекты, которые создаёт сам. Всё, что он создаёт, называется с префиксом
zz-mcp-testи удаляется в конце, и он никогда не изменяет документ, который не загрузил. Если запуск прерван, остатки с этим префиксом безопасно удалить. Если есть тестовый экземпляр, предпочтите его.
Следим за Paperless
PAPERLESS_URL=… PAPERLESS_TOKEN=… node scripts/sync-schema.mjs
npm testsync-schema.mjs перегенерирует schema/endpoints.json из OpenAPI-документа вашего собственного экземпляра.
Тестовый набор затем сообщает о любом эндпоинте, который не открыт и не исключён явно. Это
весь цикл обслуживания: укажите на более новый Paperless, и тест скажет, что изменилось.
Разработка
npm install
npm start # run from source
npm run build # compile to build/
npm test # unit tests + coverage checks
npm run inspect # build, then open the MCP inspectorПредшествующее искусство
Несколько MCP-серверов для Paperless уже существуют, наиболее известный — cubinet-code/paperless-ngx-mcp, а также nloui/paperless-mcp и barryw/PaperlessMCP. Они нацелены на API 2.x. Если вы используете Paperless-ngx 2.x, воспользуйтесь одним из них; этот предполагает 3.x.
Лицензия
MIT. См. LICENSE.
This server cannot be installed
Maintenance
Related MCP Servers
- AlicenseCqualityAmaintenanceAn MCP (Model Context Protocol) server for interacting with a Paperless-NGX API server. This server provides tools for managing documents, tags, correspondents, and document types in your Paperless-NGX instance.23363137TypeScriptISC
- FlicenseAqualityBmaintenanceA privacy-first MCP server for Paperless-ngx that lets an LLM agent search, organize, tag, and reference documents without exposing full text unless explicitly requested.13
- FlicenseAqualityCmaintenanceMCP server for Paperless-ngx document management. Enables AI models to search, retrieve, update documents and manage metadata.7
- AlicenseNot gradedqualityAmaintenanceA read-only and write MCP server for Paperless-ngx, enabling document listing, metadata retrieval, and creation of tags, correspondents, document types, and sorting workflows via natural language.MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tobee89/mcp-paperless-ngx'
If you have feedback or need assistance with the MCP directory API, please join our Discord server