Skip to main content
Glama

informer-mcp

Сервер Model Context Protocol для бухгалтерского API Informer (v2). Он даёт любому MCP-клиенту прямой доступ к вашим контрагентам, счетам продаж и покупок, котировкам, заказам, квитанциям, товарам и финансовым отчётам.

Каждый инструмент извлечён из собственного OpenAPI-документа Informer (api.informer.eu/docs/v2). Его копия поставляется вместе с сервером, так что сервер работает офлайн, но остаётся актуальным — см. Поддержание актуальности при изменениях API.

Неофициальный проект. Не связан с Informer и не одобрен компанией Informer.


Быстрый старт

Вставьте это в любого ИИ-ассистента, который умеет устанавливать MCP-серверы:

Install the following MCP server: https://github.com/vladxyz/informer-mcp and run the local setup screen for the API keys.

Он клонирует репозиторий, соберёт проект, зарегистрирует сервер в вашем клиенте, а затем запустит informer-mcp setup — после чего в браузере на 127.0.0.1 откроется страница. Здесь вводятся ваши учётные данные API; в чате ничего не спрашивают, и никакой ключ никогда не попадает в переписку.

Что вы видите на этой странице

По одной карточке на администрацию, а если у вас их больше одной — ещё и кнопка Добавить администрацию:

┌─ Administration ────────────────────────────── Remove ─┐
│  ALIAS                        COMPANY NAME             │
│  [ acme                ]      [ ACME BV           ]    │
│  Short handle you use         Optional, shown in       │
│  in prompts.                  tool descriptions.       │
│                                                        │
│  API KEY                      SECURITY CODE            │
│  [ •••••••••••••••••  ]      [ •••••••••••••••  ]     │
│                                                        │
│  ACCESS                                                │
│  [ Read and write   ▾ ]                                │
│  Read only hides every tool that changes this          │
│  client's books.                                       │
└────────────────────────────────────────────────────────┘

  [ Add administration ]   [ Verify & save ]   ☐ Save without verifying

Поле

Что сюда указывать

Псевдоним

Короткое имя, которое вы будете произносить в запросах, — например, «перечисли открытые счета для acme». Буквы, цифры, - и _.

Название компании

Необязательная подпись, которая показывается модели, чтобы она знала: acme — это ACME BV.

API-ключ

Создаётся в настройках этой администрации на app.informer.eu/settings/api.

Секретный код

Показывается в настройках этой администрации на app.informer.eu/settings/account.

Доступ

Чтение и запись либо Только чтение, чтобы скрыть все инструменты, которые могут изменить книги этого клиента.

Оба учётных данных привязаны к одной администрации, поэтому бухгалтер добавляет по одной карточке на каждого клиента. Подробнее — в разделе Несколько клиентских администраций.

Что происходит при нажатии «Проверить и сохранить»

  1. Каждая пара «ключ/секретный код» проверяется через API, и страница показывает название компании, которой она на самом деле принадлежит: если ключ вставлен не в ту строку, это видно до сохранения.

  2. Если пара отклонена, ничего не записывается, а проблемная строка называется. Отметьте Сохранить без проверки, чтобы сохранить её в любом случае, например при работе офлайн.

  3. В случае успеха данные записываются в ~/.informer-mcp.json с правами 0600. Если страница открыта через open_setup, работающий сервер подхватывает изменение сразу — новая администрация становится доступной в самом следующем сообщении. Если страница открыта из терминала, перезапустите клиент.

Спросите «к каким администрациям у вас есть доступ?», чтобы проверить это — запрос вызывает list_administrations и перечисляет каждый псевдоним с его компанией.


Related MCP server: billingo-mcp

Что вы получаете

  • 68 инструментов — все 49 документированных конечных точек — чтение и запись.

  • Настройка в браузере. Попросите ассистента открыть страницу настройки или запустите informer-mcp setup. Он проверяет каждый ключ через API, записывает файл конфигурации, и изменение вступает в силу без перезапуска.

  • Следует за API. Когда Informer публикует новую конечную точку, сервер подхватывает её и добавляет инструмент, пока клиент остаётся подключён, — без переустановки и перезапуска.

  • Несколько клиентских администраций в одном сервере. Бухгалтер может работать с книгами всех клиентов из одного подключения: аргумент administration становится обязательным, как только настроено более одной администрации.

  • Один запрос по всему портфелю. Инструменты только для чтения принимают список псевдонимов или "all" и опрашивают их параллельно, возвращая результаты, сгруппированные по клиенту.

  • Полные схемы запросов. Инструменты создания/обновления рекламируют полную JSON Schema для своей полезной нагрузки, поэтому модель знает нужные поля и правила до отправки.

  • Выбор режима. Флаг --read-only скрывает все изменяющие инструменты, а отдельные клиенты могут оставаться доступными только для чтения, пока остальные — для записи. Списки разрешённых и запрещённых инструментов сужают поверхность ещё сильнее.

  • Загрузка PDF и вложений — декодируются из base64 и записываются сразу на диск.

  • Устойчивый HTTP. Таймауты, повторные запросы с поддержкой Retry-After, а голландCache сообщения валидации Informer возвращаются дословно (HTTP 422: invoice_date: ongeldig).

Требования

  • Node.js 20 или новее

  • Аккаунт InformerOnline с доступом к API

Настройка учётных данных

Просто спросите в разговоре:

«Я хочу изменить свои администрации Informer» «Добавить нового клиента в Informer» «Мой API-ключ Informer изменился»

Ваш ассистент вызовет инструмент open_setup, и страница откроется. Никакого файла конфигурации искать не нужно и ничего не надо править вручную — ведь страница представляет собой браузерную форму, и ваш API-код никогда не придётся вводить в чат.

Та же страница, но из терминала:

npm run setup          # or: informer-mcp setup

В любом случае вы получаете http://127.0.0.1:<port> в браузере — с формой для каждой администрации: псевдоним, название компании, API-ключ, секретный код и флажок разрешения на запись. Сохранение проверяет каждую пару через API, поэтому опечатка в ключ видна сразу, а вы видите, какой компании принадлежит каждый ключ, и затем записывает ~/.informer-mcp.json с правами 0600.

Если запустить сервер вообще без учётных данных, он автоматически откроет ту же страницу, ведь именно в этот момент она вам нужна. Установите INFORMER_AUTO_SETUP=false, чтобы отключить это, или INFORMER_OPEN_BROWSER=false на машине без браузера, чтобы только вывести URL. Как бы ни была открыта, страница всегда одна: повторный запрос возвращает тот же URL.

Что страница делает намеренно:

  • она привязывается только к 127.0.0.1, и при каждом запуске генерируется случайный токен, который должен быть и в URL, и в запросе сохранения, чтобы никакой другой сайт в вашем браузере не мог отправить туда POST-запрос;

  • она никогда не отправляет сохранённые ключи обратно на страницу — существующие администрации показываются с пустыми учётными данными и сохраняются, если вы не введёте новое значение;

  • она refuses сохранять учётные данные, которые API отклоняет, если вы не отметите опцию Сохранить без проверки.

Ничто не мешает вам записать файл или переменные окружения вручную; страница — это удобство, а не обязательное условие.

Откуда берутся ключи

API аутентифицируется через два заголовка, оба обязательны:

Переменная окружения

Где найти

INFORMER_API_KEY

app.informer.eu/settings/api

INFORMER_SECURITY_CODE

app.informer.eu/settings/account

Оба привязаны к одной администрации: API-ключ принадлежит той администрации, в которой он создан (GET /administration возвращает «администрацию, связанную с этим API-ключом»), а секретный код идентифицирует конкретную компанию. Не существует конечной точки, которая перечисляла бы администрации или переключала между ними.

Ключ даёт полный доступ к книгам этой администрации. Относитесь к нему как к паролю: держите в окружении, в менеджере секретов или в файле конфигурации вне репозитория.

Несколько клиентских администраций

Бухгалтеру с несколькими клиентами нужна пара «ключ/секретный код» для каждой клиентской администрации — ее может создать пользователь-бухгалтер, имеющий доступ к администрации. Добавьте их на странице настройки или запишите ~/.informer-mcp.json (или любой файл, указанный INFORMER_CONFIG_FILE) самостоятельно:

{
  "administrations": {
    "acme":     { "label": "ACME BV",         "api_key": "...", "security_code": "..." },
    "bakkerij": { "label": "Bakkerij de Bol", "api_key": "...", "security_code": "...", "mode": "read-only" }
  }
}

Если настроено более одной администрации, каждый инструмент требует аргумент administration, который в схемах объявляется как перечисление ваших псевдонимов:

list_sales_invoices({ "administration": "acme", "filter": "open" })

Значения по умолчанию намеренно нет. Записать счёт в бухгалтерскую книгу не того клиента — ошибка, которая не должна случиться тихо, поэтому вызов без этого аргумента отклоняется проверкой схемы ещё до любого HTTP-запроса; отклоняется и никогда не настроенный псевдоним.

list_administrations показывает настроенные псевдонимы; передайте verify: true, чтобы получить название компании из API для каждого — это подтвердит и что ключи работают, и что каждый псевдоним указывает на ту компанию, на которую вы и ожидали.

Запрос к нескольким клиентам сразу

Инструменты только для чтения также принимают список псевдонимов или "all":

list_sales_invoices({ "administration": "all", "filter": "open", "records": 50 })
list_sales_invoices({ "administration": ["acme", "bakkerij"], "filter": "open" })

Администрации запрашиваются параллельно (число управляется INFORMER_FANOUT_CONCURRENCY, по умолчанию четыре одновременно), а ответ группируется по псевдонимам:

{
  "administrations": ["acme", "bakkerij"],
  "results": {
    "acme": { "pagination": { "total": 3 }, "invoices": [ ... ] },
    "bakkerij": { "error": "[bakkerij] HTTP 401: Authentication failed" }
  }
}

Три свойства, о которых стоит знать:

  • Сбой одного клиента не роняет весь запрос. Его строка получит error, а остальные по-прежнему вернут данные.

  • Бюджет ответа делится поровну. Каждая администрация получает INFORMER_MAX_RESPONSE_CHARS / n символов, поэтому один большой клиент не вытесняется весь остальных; все, что сверх его доли, возвращается в виде { "truncated": true, "partial": ... }.

  • Распределение только для чтения. Инструменты, которые пишут, а также скачивание PDF/вложений принимают только один псевдоним. В их схемах даже нет массива или "all", и показатель оснований повторно отклоняет их. Не стоит разрешить случайно создать один и тот же счёт в двенадцати администрациях.

При одной администрации API-ответ по-прежнему возвращается как есть, без обёртки, — то что было раньше.

В случае одной администрарии (самый распространённый случай) ничего не меняется: задайте INFORMER_API_KEY and INFORMER_SECURITY_CODE as it was before, and the argument remains optional.

Установка

git clone https://github.com/vladxyz/informer-mcp.git
cd informer-mcp
npm install          # also builds dist/ via the prepare script
npm run setup        # opens a local page to enter your API credentials

Страница настройки запускается на 127.0.0.1, проверяет каждый ключ через API и записывает ~/.informer-mcp.json. См. Настройка учётных данных.

Claude Desktop, в качестве расширения

Самый простой путь — собрать пакет и открыть его.

npm run bundle          # writes informer-mcp.mcpb

В Claude Desktop перейдите в Настройки → Расширения → Дополнительные настройки → Установить расширение… и выберите файл .mcpb. Он содержит все свои зависимости, так что предварительно устанавливать ничего, кроме Node.js 20, не требуется.

В диалогскаустановке предлагаются API-ключ, секретный код и переключатель только для чтения. Все три можно оставить пустыми: тогда сервер при первом запуске откроет свою страницу настройки — это также единственный способ настроить более одной администрации.

Обратите внимание: Settings → Connectors → Add custom connector в Claude Desktop — это другая возможность: она принимает URL удалённого MCP-сервера. Наш сервер работает локально через stdio, поэтому ставится как расширение, а не как подключение.

Claude Desktop, вручную

Отредактируйте файл конфигурации напрямую:

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "informer": {
      "command": "node",
      "args": ["C:\\path\\to\\informer-mcp\\dist\\index.js"]
    }
  }
}

После этого перезапустите Claude Desktop. В Windows обратная косая черта в JSON должны быть удвоены; прямой слеш тоже работает и его проще читать.

Любой другой MCP-клиент

Сервер говорит по протоколу MCP через stdio, поэтому любой клиент настраивается одинаково — это команда и аргументы. Блок выше работает как есть в Claude Code (claude mcp add), Cursor, Zed и в других MCP-совместимых программах.

Учётные данные берутся из ~/.informer-mcp.json, поэтому их не нужно повторять в конфигурации клиента. Если их нужно передать отдельно для каждого клиента, добавьте блок env с переменными INFORMER_API_KEY и INFORMER_SECURITY_CODE, либо укажите INFORMER_CONFIG_FILE в другом месте.

Добавьте "--read-only" в args, чтобы зарегистрировать сервер, который не может ничего изменить — см. Read-only or read-write. Регистрация одного и того же сервера дважды под двумя именами, один read-only и один read-write, работает хорошо.

stdout несёт протокол, поэтому всё логирование идёт в stderr — однострочный баннер при запуске сообщает, сколько инструментов было зарегистрировано и какие администрации он нашёл.

Read-only or read-write

По умолчанию доступен каждый инструмент. Чтобы полностью убрать записывающие инструменты, запустите сервер с флагом:

informer-mcp --read-only     # only the tools that read
informer-mcp --read-write    # the default: create, update and delete too

INFORMER_READ_ONLY=true делает то же самое, и флаг имеет приоритет над переменной — так вы можете зарегистрировать один и тот же сервер дважды в одном клиенте, один раз read-only для повседневных вопросов и один раз read-write для сессий, где вы действительно что-то бронируете.

В режиме read-only записывающие инструменты вообще не регистрируются: они никогда не появляются в списке инструментов, так что модели не за что зацепиться.

Per client

Отдельные администрации можно закрепить в конфигурационном файле — это удобная форма, когда вам разрешено смотреть только на книги некоторых клиентов:

{
  "administrations": {
    "acme":     { "api_key": "...", "security_code": "..." },
    "bakkerij": { "api_key": "...", "security_code": "...", "mode": "read-only" }
  }
}

"read_only": true работает как сокращение. Побеждает самое ограничительное значение:

Сервер

Клиент

Результат

--read-write (по умолчанию)

не задано

read-write

--read-write

"read-only"

read-only

--read-only

не задано

read-only

--read-only

"read-write"

read-only — флаг ограничивает всё

Таким образом, клиент, помеченный как read-only, никогда не может быть случайно записан, а сессия, запущенная с --read-only, остаётся такой, что бы ни говорил конфигурационный файл.

Когда одни администрации доступны для записи, а другие нет, записывающие инструменты остаются зарегистрированными, но их перечисление administration предлагает только доступные для записи. Запрос на создание счёта в read-only клиенте отклоняется до любого HTTP-запроса:

Administration(s) bakkerij are configured as read-only, so this tool cannot change them.
Writable: acme, garage.

list_administrations сообщает фактический режим каждого клиента, а стартовый баннер резюмирует его: read-write: acme, garage.

Configuration

Переменная

По умолчанию

Назначение

INFORMER_API_KEY

API-ключ для одной администрации.

INFORMER_SECURITY_CODE

Код безопасности для этой администрации.

INFORMER_CONFIG_FILE

~/.informer-mcp.json

JSON-файл со списком нескольких администраций. Создаётся setup, если отсутствует.

INFORMER_ADMINISTRATIONS

Тот же JSON встроенно, как переменная окружения. Переопределяет файл по псевдониму.

INFORMER_ADMINISTRATION_ALIAS

default

Псевдоним для пары INFORMER_API_KEY.

INFORMER_ADMINISTRATION_LABEL

Человекочитаемое имя для этого псевдонима.

INFORMER_ADMINISTRATION_MODE

read-only или read-write для этого псевдонима.

INFORMER_BASE_URL

https://api.informer.eu/v2

Переопределяет корень API.

INFORMER_READ_ONLY

false

true открывает только GET-инструменты для каждой администрации. То же, что --read-only.

INFORMER_TOOLS

(все)

Белый список тегов и/или имён инструментов, через запятую.

INFORMER_EXCLUDE_TOOLS

(нет)

Чёрный список, применяется после белого.

INFORMER_TIMEOUT_MS

30000

Таймаут на запрос.

INFORMER_MAX_RETRIES

2

Повторы для 408/429/5xx и сетевых ошибок.

INFORMER_MAX_RESPONSE_CHARS

100000

Более длинные результаты инструментов обрезаются с уведомлением. Равномерно распределяется по запросу fan-out.

INFORMER_FANOUT_CONCURRENCY

4

Сколько администраций запрос fan-out затрагивает одновременно.

INFORMER_AUTO_SETUP

true

false останавливает открытие страницы настройки, когда учётные данные не настроены.

INFORMER_OPEN_BROWSER

true

false печатает URL настройки вместо запуска браузера.

INFORMER_SPEC_MAX_AGE_HOURS

24

Как долго кэшированное описание API может храниться до фонового обновления. 0 отключает его.

INFORMER_SPEC_CACHE

~/.informer-mcp.spec.json

Где кэшируется загруженное описание API.

INFORMER_SPEC_URL

Опубликованный документ Informer

Переопределяет описание API для загрузки.

Фильтры принимают либо тег OpenAPI, либо имя инструмента и сопоставляются без учёта регистра и пунктуации:

# read-only access to invoicing data
INFORMER_TOOLS="Sales Invoices,Relations" node dist/index.js --read-only

# everything except deleting attachments
INFORMER_EXCLUDE_TOOLS=delete_sales_invoice_attachment node dist/index.js

Using it

После подключения спрашивайте на простом языке:

  • «Какие счета-фактуры по продажам за 2026 год ещё не оплачены?»list_sales_invoices с filter

  • «Создай черновик счёта для ACME на 10 часов консультаций по €125.»get_sales_invoice_options для валидных id главной книги/НДС/шаблона, затем create_sales_invoice

  • «Скачай счёт 12345 в формате PDF на мой рабочий стол.»get_sales_invoice_pdf с save_path

  • «Покажи балансовый отчёт за период 6 2026 года.»get_balance_report

Conventions worth knowing

  • Выбирайте администрацию явно. При нескольких настроенных клиентах каждый инструмент принимает administration: "<alias>". list_administrations сопоставляет псевдонимы с компаниями, а read-only инструменты также принимают список или "all".

  • Даты всегда в формате YYYY-MM-DD.

  • Инструменты списков разбиты на страницы через page (по умолчанию 1) и records (по умолчанию 20) и возвращают объект pagination с total и pages.

  • Полезная нагрузка запроса передаётся одним аргументом body. Параметры пути и запроса остаются на верхнем уровне, поэтому update_relation принимает { "id": 42, "body": { ... } }.

  • Сначала вызывайте инструмент *_options при создании документов. get_sales_invoice_options, get_quotation_options и подобные возвращают валидные id главной книги, НДС, шаблона, валюты и условий оплаты для вашей администрации.

  • Отчёты требуют явных диапазонов. get_balance_report требует year_from, year_to и period; get_column_balance_report также требует диапазон главной книги.

PDFs and attachments

Informer возвращает файлы в base64 внутри JSON. Инструменты, которые это делают (get_*_pdf, download_sales_invoice_attachment), принимают необязательный save_path:

  • с save_path — файл декодируется и записывается по этому пути, а инструмент возвращает { saved_to, filename, bytes, mime_type };

  • без него — файл возвращается как встроенный ресурс MCP с правильным MIME-типом, что для больших документов может быть дорого по контексту.

Загрузка работает наоборот: upload_sales_invoice_attachment принимает { filename, file }, где file — содержимое в base64 (макс. 10 МБ; PDF, PNG, JPEG, GIF, DOC(X), XLS(X)).

Tool reference

npm run tools печатает этот список из текущей спецификации; npm run tools -- --md перегенерирует таблицы ниже.

Помимо инструментов конечных точек есть три серверных:

Инструмент

Что делает

list_administrations

Какие клиентские администрации настроены, их компании и в какие можно писать.

open_setup

Открывает локальную страницу для добавления, изменения или удаления администраций и их учётных данных.

refresh_api_spec

Перечитывает описание API Informer и обновляет инструменты.

Administration

Инструмент

Конечная точка

Описание

get_administration

GET /administration

Получить сведения об администрации

Relations

Инструмент

Конечная точка

Описание

get_relation

GET /relations/{id}

Получить одну связь

update_relation

PUT /relations/{id}

Обновить связь

list_relations

GET /relations

Получить список связей

create_relation

POST /relations

Создать новую связь

Contacts

Инструмент

Конечная точка

Описание

get_contact

GET /contact/{id}

Получить один контакт

update_contact

PUT /contact/{id}

Обновить контакт

create_contact

POST /contact

Создать новый контакт

Sales Invoices

Инструмент

Конечная точка

Описание

get_sales_invoice

GET /invoices/sales/{id}

Получить один счёт-фактуру по продажам

update_sales_invoice

PUT /invoices/sales/{id}

Обновить счёт-фактуру по продажам

list_sales_invoices

GET /invoices/sales

Получить список счетов-фактур по продажам

create_sales_invoice

POST /invoices/sales

Создать новый счёт-фактуру по продажам

get_sales_invoice_options

GET /invoices/sales/options

Получить параметры счёта-фактуры по продажам

get_sales_invoice_pdf

GET /invoices/sales/pdf/{id}

Получить PDF счёта-фактуры по продажам

send_sales_invoice

POST /invoices/sales/send/{id}

Отправить счёт-фактуру по продажам

upload_sales_invoice_attachment

POST /invoices/sales/{id}/attachments

Загрузить вложение для счёта

download_sales_invoice_attachment

GET /invoices/sales/{id}/attachments/{attachment_id}

Скачать вложение счёта

delete_sales_invoice_attachment

DELETE /invoices/sales/{id}/attachments/{attachment_id}

Удалить вложение для счёта

Purchase Invoices

Tool

Endpoint

Description

get_purchase_invoice

GET /invoices/purchase/{id}

Получить один счет на покупку

list_purchase_invoices

GET /invoices/purchase

Получить список счетов на покупку

create_purchase_invoice

POST /invoices/purchase

Создать новый счет на покупку

get_purchase_invoice_options

GET /invoices/purchase/options

Получить параметры счета на покупку

get_purchase_invoice_pdf

GET /invoices/purchase/pdf/{id}

Получить PDF счета на покупку

Повторяющиеся счета

Tool

Endpoint

Description

get_recurring_invoice

GET /invoices/recurring/{id}

Получить один повторяющийся счет

update_recurring_invoice

PUT /invoices/recurring/{id}

Обновить повторяющийся счет

list_recurring_invoices

GET /invoices/recurring

Получить список повторяющихся счетов

create_recurring_invoice

POST /invoices/recurring

Создать новый повторяющийся счет

get_recurring_invoice_options

GET /invoices/recurring/options

Получить параметры повторяющегося счета

Заказы на продажу

Tool

Endpoint

Description

get_sales_order

GET /orders/sales/{id}

Получить один заказ на продажу

update_sales_order

PUT /orders/sales/{id}

Обновить заказ на продажу

list_sales_orders

GET /orders/sales

Получить список заказов на продажу

create_sales_order

POST /orders/sales

Создать новый заказ на продажу

get_sales_order_options

GET /orders/sales/options

Получить параметры заказа на продажу

get_sales_order_pdf

GET /orders/sales/pdf/{id}

Получить PDF заказа на продажу

send_sales_order

POST /orders/sales/send/{id}

Отправить заказ на продажу

Котировки

Tool

Endpoint

Description

get_quotation

GET /quotations/{id}

Получить одну котировку

update_quotation

PUT /quotations/{id}

Обновить котировку

list_quotations

GET /quotations

Получить список котировок

create_quotation

POST /quotations

Создать новую котировку

get_quotation_options

GET /quotations/options

Получить параметры котировки

get_quotation_pdf

GET /quotations/pdf/{id}

Получить PDF котировки

send_quotation

POST /quotations/send/{id}

Отправить котировку

Книга продаж

Tool

Endpoint

Description

get_salesbook_invoice

GET /salesbook/{id}

Получить один счет из книги продаж

update_salesbook_invoice

PUT /salesbook/{id}

Обновить счет из книги продаж

list_salesbook_invoices

GET /salesbook

Получить список счетов из книги продаж

create_salesbook_invoice

POST /salesbook

Создать новый счет из книги продаж

get_salesbook_invoice_options

GET /salesbook/options

Получить параметры книги продаж

get_salesbook_invoice_pdf

GET /salesbook/pdf/{id}

Получить PDF книги продаж

Условия оплаты

Tool

Endpoint

Description

list_payment_conditions

GET /payment-conditions

Получить все условия оплаты

Шаблоны

Tool

Endpoint

Description

list_templates

GET /templates

Получить все шаблоны

НДС

Tool

Endpoint

Description

list_vat_options

GET /vat

Получить все параметры НДС

Главные книги

Tool

Endpoint

Description

list_ledgers

GET /ledgers

Получить все счета главной книги

Затраты

Tool

Endpoint

Description

list_cost_centres

GET /costs

Получить все счета центров затрат

Валюты

Tool

Endpoint

Description

list_currencies

GET /currencies

Получить все валюты

Журналы

Tool

Endpoint

Description

list_journals

GET /journals

Получить все журналы

Типы подписок

Tool

Endpoint

Description

list_subscription_types

GET /subscription-types

Получить все типы подписок

Вложения

Tool

Endpoint

Description

list_attachments

GET /attachments

Получить все вложения

Товары

Tool

Endpoint

Description

list_products

GET /products

Получить все товары

Квитанции

Tool

Endpoint

Description

get_receipt

GET /receipts/{id}

Получить одну квитанцию

update_receipt

PUT /receipts/{id}

Обновить квитанцию

list_receipts

GET /receipts

Получить список квитанций

create_receipt

POST /receipts

Создать новую квитанцию

Меморандум

Tool

Endpoint

Description

get_memorandum_entry

GET /memorandum/{id}

Получить одну запись меморандума

update_memorandum_entry

PUT /memorandum/{id}

Обновить запись меморандума

list_memorandum_entries

GET /memorandum

Получить список записей меморандума

create_memorandum_entry

POST /memorandum

Создать новую запись меморандума

Отчеты

Tool

Endpoint

Description

get_balance_report

GET /reports/balance

Получить балансовый отчет

get_column_balance_report

GET /reports/column-balance

Получить колоночный баланс

Именование инструментов

Имена образуются от HTTP-метода и пути, а не от описания, поэтому они остаются стабильными при обновлениях спецификации:

Pattern

Example

GET /resources

list_relations

GET /resources/{id}

get_relation

POST /resources

create_relation

PUT /resources/{id}

update_relation

GET /resources/options

get_sales_invoice_options

GET /resources/pdf/{id}

get_sales_invoice_pdf

POST /resources/send/{id}

send_quotation

Конечные точки, которые таблица именования не распознает, получают имя по шаблону <глагол>_<путь_в_виде_слага>, поэтому обновление спецификации никогда не приводит к появлению нерабочего инструмента.

Отслеживание изменений API

Инструменты генерируются из документа OpenAPI от Informer, поэтому когда Informer добавляет конечную точку, единственное, чего не хватает, — это свежая копия этого документа. Сервер может получить её сам.

Три уровня, в порядке приоритета:

  1. Скачанная копия, кэшируемая в ~/.informer-mcp.spec.json.

  2. Встроенная копия в openapi/api-docs.json, которая поставляется с сервером и всегда работает офлайн.

  3. Ни одна из них не принимается вслепую — загрузка должна разобраться как документ OpenAPI 3 хотя бы с одной рабочей операцией, иначе она отклоняется, а текущие инструменты остаются. Портальная страница или страница обслуживания не могут стереть ваш набор инструментов.

По расписанию

Раз в день, вскоре после запуска, сервер в фоновом режиме проверяет наличие более нового документа. Запуск никогда не блокируется, а неудачная проверка записывается в журнал и игнорируется. INFORMER_SPEC_MAX_AGE_HOURS=0 отключает эту проверку.

По запросу

Инструмент refresh_api_spec делает то же самое, когда вы его вызываете, — это полезно, если ожидаемая конечная точка отсутствует или аргумент отклоняется как неизвестный:

«Обнови описание API Informer и расскажи, что изменилось».

{
  "adopted": true,
  "api_version": "2.0.0",
  "endpoints": 49,
  "tools": 68,
  "changes": {
    "added":   [{ "tool": "list_projects", "endpoint": "GET /projects" }],
    "removed": [],
    "changed": [{ "tool": "create_sales_invoice", "endpoint": "POST /invoices/sales",
                  "notes": ["body now requires: project_id"] }],
    "unchanged": 66
  },
  "note": "The tool list has been updated; no restart is needed."
}

Передайте dry_run, чтобы увидеть этот отчет без применения изменений.

Различие намеренно конкретное: оно называет инструменты, которые появились и исчезли, а для изменившихся говорит, что именно изменилось — новый аргумент, удалённый аргумент, поле, которое теперь стало обязательным. Это та часть, которую не видно при простом сравнении путей, и обычно именно она иначе проявилась бы как непонятная ошибка 422.

Применение документа обновляет работающий сервер: регистрируются новые инструменты, удаляются отозванные, изменённые рекламируются заново, и отправляется уведомление tools/list_changed, чтобы ваш клиент перезагрузил список в середине сеанса.

Копия в репозитории

npm run update-spec обновляет встроенный документ и сообщает, какие пути пришли и ушли. Именно эту команду нужно запускать, если вы хотите зафиксировать изменение для всех, кто устанавливает сервер; refresh_api_spec влияет только на вашу машину.

Ресурсы

Сервер также предоставляет сам документ OpenAPI как ресурс MCP по адресу informer://openapi.json — это удобно, когда нужно, чтобы модель проверила определение поля, не гадая.

Разработка

npm install         # install + build
npm run setup       # enter credentials in the browser
npm run bundle      # package as informer-mcp.mcpb for one-click install
npm run dev         # run from source with tsx
npm test            # vitest
npm run typecheck   # tsc --noEmit
npm run build       # compile to dist/
npm run tools       # print the tool surface
npm run update-spec # re-download openapi/api-docs.json and report added/removed paths

Структура проекта

openapi/api-docs.json   vendored OpenAPI 3.0 document — the source of truth
src/openapi.ts          spec → operations: tool names, JSON Schema conversion
src/client.ts           HTTP client: auth headers, retries, error formatting
src/tools.ts            operations → MCP tools, filtering, result formatting
src/server.ts           server assembly (tools + openapi resource)
src/spec.ts             download, validate, cache and diff the OpenAPI document
src/setup.ts            local setup server: verify credentials, write the config file
src/setup-page.ts       the HTML it serves
src/index.ts            stdio entry point and CLI
manifest.json           extension manifest: entry point and install-time settings
scripts/update-spec.mjs refresh the vendored spec
scripts/list-tools.ts   print/regenerate the tool reference
scripts/bundle.mjs      stage production dependencies and pack the .mcpb

Добавление конечных точек обычно вообще не требует изменения кода — работающий сервер подхватывает их сам, а npm run update-spec фиксирует то же изменение во встроенной копии. Только действительно новые формы URL требуют правила в таблице RESOURCES в src/openapi.ts; без него они всё равно становятся инструментами, просто с более скучным именем.

Как преобразуются схемы

OpenAPI 3.0 — это не совсем JSON Schema. На пути к определению инструмента MCP:

  • ссылки #/components/schemas/X становятся #/$defs/X, при этом встраивается только транзитивное замыкание, которое реально нужно каждой операции, — поэтому определения инструментов остаются компактными;

  • nullable: true становится объединением ["type", "null"];

  • параметры пути и запроса становятся свойствами верхнего уровня, тела запросов помещаются под body, а additionalProperties: false не даёт опечаткам дойти до API.

Аргументы проверяются по этой схеме до любого HTTP-вызова.

Примечания по безопасности

  • Этот сервер может создавать, обновлять и удалять реальные бухгалтерские записи. Начните с --read-only, если вам нужна только отчётность, закрепите отдельных клиентов с помощью "mode": "read-only" и позвольте вашему MCP-клиенту запрашивать подтверждение для инструментов записи.

  • Учётные данные для нескольких клиентов в одном процессе означают, что один ошибочно направленный вызов может затронуть чужие книги. Обязательный аргумент administration, перечень известных псевдонимов, ограничение только на чтение при рассылке и префикс псевдонима в каждом сообщении об ошибке ([acme] HTTP 422: ...) существуют именно для этого. Держите файл конфигурации вне системы контроля версий и доступным только для чтения вами.

  • Инструменты аннотированы с помощью readOnlyHint, destructiveHint и idempotentHint, поэтому клиенты, использующие эти подсказки, могут ограничивать доступ к рискованным.

  • Ничего не записывается в stdout, и учётные данные никогда не отображаются в выводе инструментов и не отправляются обратно на страницу настройки. open_setup возвращает URL, а не ключ — у ассистента нет способа прочитать ваши учётные данные и нет причин просить их в чате.

  • Описание API загружается без учётных данных, и документ, который не разбирается как пригодный файл OpenAPI 3, отклоняется, а не принимается.

Лицензия

MIT — см. LICENSE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    MCP server to interact with the Cuéntica accounting API, allowing users to manage invoices, expenses, income, clients, providers, and bank accounts via natural language.
    59
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for the Billingo V3 Hungarian invoicing API. Manage invoices, partners, products, spendings, and bank accounts from any MCP client.
    10
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that wraps the cebelca.biz accounting API, exposing tools for operations like managing partners, invoices, proformas, and fetching PDFs.
    2
  • A
    license
    B
    quality
    A
    maintenance
    Read-only MCP server for self-hosted Manager.io bookkeeping, providing curated GET tools to access accounting data like invoices, balances, and reports.
    10
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.

  • MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.

  • A basic MCP server to operate on the Postman API.

View all MCP Connectors

Latest Blog Posts

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/vladxyz/informer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server