Skip to main content
Glama

ru-docs-mcp — счета, акты и QR-оплата для ИИ-агентов

penmadebykisss/ru-docs-mcp MCP server CI

MCP-сервер, который позволяет Claude, Cursor и другим ИИ-ассистентам выставлять документы российского бизнеса в PDF: счёт на оплату с QR-кодом для оплаты из банковского приложения, акт выполненных работ, отдельный платёжный QR и сумму прописью. Реквизиты проверяются по контрольным суммам (ИНН, КПП, БИК, ключ расчётного счёта) до создания файла. Работает полностью локально: без регистрации, токенов и отправки данных куда-либо.

Скажите ассистенту:

  • «Выстави счёт ООО „Ромашка“ на разработку лендинга 45 000 ₽ и 12 часов поддержки по 1500, без НДС, оплата до 6 октября»

  • «Сделай акт за сентябрь по тем же позициям»

  • «Дай QR для оплаты 1500 ₽ за консультацию, скину клиенту в Telegram»

  • «Напиши 1 234 567,89 прописью»

Вместе с ru-business-mcp ассистент сам подтянет реквизиты покупателя по ИНН и банка по БИК.

Инструменты

Инструмент

Что делает

invoice_create

Счёт на оплату в PDF по типовой форме: банковский блок, позиции, НДС или «Без НДС», сумма прописью, подписи, QR-код оплаты

act_create

Акт выполненных работ (оказанных услуг) в PDF с подписями сторон

payment_qr

QR-код оплаты по ГОСТ Р 56042 (PNG) — открывается в приложениях Сбербанка, Т-Банка, ВТБ, Альфы и других

amount_in_words

Сумма прописью: RUB, USD, EUR, CNY или просто число

НДС: без НДС (УСН, самозанятые, патент) или ставки 0, 5, 7, 10, 20, 22 % — «в том числе» или сверху.

Related MCP server: rendoc

Установка

Нужен Node.js 18+.

Claude Desktop

{
  "mcpServers": {
    "ru-docs": {
      "command": "npx",
      "args": ["-y", "github:penmadebykisss/ru-docs-mcp"]
    }
  }
}

Claude Code

claude mcp add ru-docs -- npx -y github:penmadebykisss/ru-docs-mcp

PDF сохраняются в ~/Documents/ru-docs (или в папку из переменной RU_DOCS_DIR), путь приходит в ответе; файл также передаётся клиенту целиком.

Проверка

npm test   # создаёт настоящие PDF и PNG во временной папке

English

ru-docs-mcp lets AI assistants issue Russian business paperwork as PDF: invoices (счёт на оплату) with a bank payment QR code (GOST R 56042, scanned by any Russian banking app), acts of completed work, standalone payment QR codes and amounts in words. Requisites (INN, KPP, BIK, account key) are checksum-validated before a file is produced. Fully local, no API keys.

npx -y github:penmadebykisss/ru-docs-mcp

Лицензия

MIT. Шрифт DejaVu Sans — свободная лицензия Bitstream Vera / Public Domain.

Available Tools

4 tools
act_createАкт выполненных работ (PDF)A

Создаёт акт выполненных работ (оказанных услуг) в PDF: исполнитель, заказчик, основание, период, таблица услуг, итог с НДС или без, сумма прописью, стандартная фраза об отсутствии претензий и места для подписей обеих сторон. Используйте как закрывающий документ после оплаты или выполнения работ; счёт выставляет invoice_create (позиции можно передать те же). Реквизиты проверяются по контрольным суммам, банковские данные для акта не обязательны. Возвращает путь к файлу, итоги и PDF. Пишет файл на диск; сеть не нужна.

ParametersJSON Schema
NameRequiredDescriptionDefault
vatNoНДС: none — без НДС (УСН, самозанятые, ИП на патенте), иначе ставка в процентахnone
dateNoДата документа ГГГГ-ММ-ДД (по умолчанию сегодня)
buyerYesПокупатель / заказчик
itemsYesПозиции документа
numberYesНомер документа, например «15» или «2026-015»
periodNoПериод оказания услуг: «сентябрь 2026» или «01.09.2026–30.09.2026»
sellerYesПоставщик / исполнитель (вы)
purposeNoОснование: «Договор № 7 от 01.09.2026»
output_dirNoПапка для PDF (по умолчанию ~/Documents/ru-docs или RU_DOCS_DIR)
vat_includedNoЦены уже включают НДС (по умолчанию да); false — НДС начисляется сверху

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare it is a write (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds genuine behavioral context: requisites are validated by checksums, bank details are optional for an act, the tool writes a file to disk and needs no network, and it returns a file path, totals and the PDF. However, idempotency/non-destructiveness and the write nature are already carried by annotations, so the added value is useful but not exhaustive (no overwrite/conflict behavior).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense but front-loaded block: creation purpose first, contents next, usage and routing to the sibling after, then behavior and return values. Every sentence carries weight, though the run-on semicolon structure is slightly heavy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with nested inputs and no output schema, the description covers the essentials: what is produced, when to use it, validation behavior, that bank details are optional, that it writes to disk, and what it returns. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter, including nested seller/buyer and item fields, is documented in the schema, so the baseline is 3. The description adds only marginal semantics beyond that — that bank data is not required for the act and that items may be reused from invoice_create — without contributing format or validation detail the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (creates an act of completed works as PDF) and enumerates the document contents (executor, customer, basis, period, services table, VAT total, amount in words, signature blocks). It explicitly differentiates itself from its sibling by naming invoice_create as the tool that issues invoices instead.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use condition — 'закрывающий документ после оплаты или выполнения работ' — and names the alternative tool (invoice_create) with the note that the same line items can be reused. No inference is required to choose between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

amount_in_wordsСумма прописьюA
Read-only

Переводит сумму в текст по правилам делопроизводства: «Сто двенадцать рублей 01 копейка» (копейки цифрами, как в счетах) или полностью словами. Поддерживает RUB, USD, EUR, CNY; для просто числа прописью (без валюты) передайте currency=none. Используйте для договоров, расписок, платёжек; счета и акты из invoice_create/act_create уже содержат сумму прописью. Только вычисление, без сети.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesСумма, например 1234567.89
currencyNoВалюта или none — только числоRUB
minor_in_wordsNoКопейки/центы тоже словами (по умолчанию цифрами)

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false; the description reinforces the latter with 'Только вычисление, без сети' (calculation only, no network) and discloses output behavior (kopecks as digits by default vs fully in words). It does not need rate-limit/auth detail for a pure offline computation, so 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The output format example and the primary purpose are front-loaded, followed by currency scope, usage, and the offline note. Every sentence carries distinct, non-redundant information and none could be removed without losing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param, no-output-schema computation tool, the description covers input semantics, output format, supported currencies, and routing versus siblings. An agent has everything it needs to call and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains currency=none for a plain number without currency and maps minor_in_words to the 'kopecks in digits vs words' behavior with a worked example. This goes beyond the schema's terse field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (converts an amount into text) and immediately shows the exact output format, so the agent knows precisely what it produces. It also distinguishes itself from siblings by noting that invoice_create/act_create already embed this conversion, making it unambiguous versus peers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use (contracts, receipts, payment orders) and when-not-to-use (invoices/acts from invoice_create/act_create already contain the amount in words), naming the sibling alternatives directly. Nothing about tool selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoice_createСчёт на оплату (PDF с QR-кодом)A

Создаёт счёт на оплату в PDF по типовой форме: банковский блок получателя, поставщик и покупатель, таблица позиций, итог, НДС (или «Без НДС»), сумма прописью, подписи и QR-код оплаты по ГОСТ Р 56042 — покупатель сканирует его в приложении банка, и все реквизиты с суммой подставляются сами. Перед созданием проверяет ИНН, КПП, БИК и соответствие счёта БИК; при ошибках файл не создаётся. Возвращает путь к файлу, итоги (sum, vat_amount, total, total_words) и сам PDF. Для закрывающего документа используйте act_create, только QR без счёта — payment_qr. Пишет файл на диск; сеть не нужна.

ParametersJSON Schema
NameRequiredDescriptionDefault
vatNoНДС: none — без НДС (УСН, самозанятые, ИП на патенте), иначе ставка в процентахnone
dateNoДата документа ГГГГ-ММ-ДД (по умолчанию сегодня)
noteNoПримечание внизу счёта
buyerYesПокупатель / заказчик
itemsYesПозиции документа
numberYesНомер документа, например «15» или «2026-015»
sellerYesПоставщик / исполнитель (вы)
purposeNoОснование: «Договор № 7 от 01.09.2026»
with_qrNoДобавить QR-код оплаты (нужны банковские реквизиты продавца)
due_dateNoОплатить до, ГГГГ-ММ-ДД
output_dirNoПапка для PDF (по умолчанию ~/Documents/ru-docs или RU_DOCS_DIR)
vat_includedNoЦены уже включают НДС (по умолчанию да); false — НДС начисляется сверху

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=false, idempotentHint=false, destructiveHint=false, but the description goes further and adds genuinely useful behavior: it validates INN/KPP/BIK and BIK consistency and refuses to write the file on error, it writes the PDF to disk (side effect location), it needs no network, and it returns the path plus computed totals and the PDF itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then validation behavior, then sibling routing, then side effects — a sensible order with no filler sentences. It is dense, but every clause carries information; only the fine-grained enumeration of document parts is slightly over-detailed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, nested-object tool with no output schema, the description covers the missing pieces: what the return contains (path, sum/vat_amount/total/total_words, the PDF), the validation-and-abort behavior, and the on-disk side effect. An agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 12 parameters, including the VAT enum values and the note that QR requires seller bank details. The description's mentions of НДС/«Без НДС» and сумма прописью largely restate what the schema and the returned-totals list already convey, so it adds little beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and artifact (создаёт счёт на оплату в PDF по типовой форме) and enumerates the exact document contents: bank block, parties, line items, totals, VAT, amount in words, signatures, QR per ГОСТ Р 56042. It also explicitly separates itself from the closing document (act_create) and the standalone QR tool (payment_qr), so an agent can route without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names both alternatives and the condition that selects each: act_create for a closing document, payment_qr when only the QR is needed, invoice_create for the invoice itself. It also states the precondition (INN/KPP/BIK validation must pass, otherwise no file is produced).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

payment_qrQR-код для оплаты по реквизитамA
Idempotent

Делает QR-код оплаты по ГОСТ Р 56042 (формат ST00012, UTF-8), который понимают приложения Сбербанка, Т-Банка, ВТБ, Альфа и других: клиент сканирует его и получает заполненную платёжку с получателем, счётом, суммой и назначением. Удобно отправить в мессенджер вместо реквизитов. Возвращает PNG (картинку и путь к файлу) и строку payload. Если нужен полноценный счёт с QR внутри — invoice_create. Реквизиты получателя проверяются. Пишет PNG на диск; сеть не нужна.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesСумма в рублях
purposeYesНазначение платежа, например «Оплата по счёту № 15 от 29.09.2026. Без НДС»
recipientYesПолучатель платежа: name, inn, bank_name, bik, account, при наличии kpp и correspondent_account
output_dirNoПапка для PNG (по умолчанию ~/Documents/ru-docs)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=false) by disclosing that it writes a PNG to disk, needs no network, validates recipient details, and what it returns (image, file path, payload string). These are the exact traits an agent needs for a local file-writing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core capability and standard, then the routing hint and the side effects. Dense but every clause adds information; the laundry list of supported banks is the one slightly expendable element.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing the return values (PNG image + file path + payload string) and the disk-write side effect. For a nested-object, 4-parameter tool, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including nested recipient fields, so the schema already carries parameter meaning. The description adds only the high-level notion that recipient/account/amount/purpose end up on the payment form; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and artifact (creates a payment QR per GOST R 56042 / ST00012), names the consuming apps, and explicitly distinguishes itself from invoice_create. An agent can identify the tool's output without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete use case (send in a messenger instead of bank details) and an explicit alternative with its selecting condition: 'Если нужен полноценный счёт с QR внутри — invoice_create.' The routing decision is fully resolvable from the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedact_create
    • First observedamount_in_words
    • First observedinvoice_create
    • First observedpayment_qr

TDQS

A4.3/5.0

Scored across 4 tools

Disambiguation4/5

Each tool has a clear primary purpose: invoice_create (full invoice PDF), act_create (closing act PDF), payment_qr (standalone payment QR), and amount_in_words (number-to-text). invoice_create and payment_qr overlap on payment QR generation, but the descriptions explicitly clarify when to use which (embedded QR vs. standalone).

Naming Consistency4/5

Three tools follow a consistent noun_action pattern (invoice_create, act_create, amount_in_words), and payment_qr is a minor deviation using a noun compound without a verb. Still uniform snake_case and readable throughout.

Tool Count4/5

Four tools is slightly thin but well-scoped to the document-generation domain, with each tool earning its place. No redundant or filler tools.

Completeness4/5

Covers the core Russian document workflow: invoices, closing acts, standalone payment QR, and amount-to-words conversion, with amount_in_words complementing the document tools. Minor gaps exist (no other document types like contracts/reciepts that amount_in_words hints at, no template customization), but the stated purpose is well covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers