NULA.BG

io.github.encorp-io由 GitHub 帳號 encorp-io 發布v0.1.0更新於 Oct 24, 2026

Bulgarian accounting platform nula.bg: invoices, bills, OCR, customers, inventory and banking.

概覽

AI 產生的概覽

針對保加利亞會計平台 nula.bg 的非官方 MCP 伺服器,讓助理查詢與管理發票、採購單、OCR、客戶、庫存與銀行資料。

可以做什麼
依公司編號或營業稅號查詢企業,並列出客戶與往來對象、商品價格與庫存、銀行帳戶與交易明細,附帶應收帳齡、月度彙總和銀行交易與發票的配對建議;啟用對應模組時還可查看 NRA 與 NOI 單據狀態。搜尋、預覽、建立、修改發票,標記已付款或已寄送,下載 PDF、寄送電子郵件,以及刪除最後一張發票。搜尋與建立採購單(含第 117 條協議),並更新採購單分類。從本機磁碟上傳最多 10 份文件做 OCR,並查看辨識狀態與配額。提供開立發票、處理單據、月底複核與催收逾期款的提示範本,以及零稅率依據、協議依據與列舉值等資源。
適用情境
適合已在用 nula.bg 的保加利亞企業與會計人員,希望讓助理在對話中草擬與開立發票、用 OCR 歸檔採購單據、追蹤應收帳款並核對銀行付款。建議先以唯讀模式試用評估。
執行需求
透過 npx 或 Claude Desktop 的 .mcpb 套件在本機以 stdio 執行;npx 方式需要 Node.js 20 或更新版本。需要 nula.bg 的 API 金鑰,放在 NULA_API_KEY 中;多家公司可用 NULA_PROFILES 提供別名對應金鑰的 JSON 對照。需要連線至 nula.bg 的網路。選用設定包括模組、預設幣別與語言、下載目錄和允許上傳的資料夾。
安裝前請注意
API 金鑰可存取公司的會計資料,應比照密碼保管。預設為唯讀;設定 NULA_READ_ONLY=false 後會註冊建立、修改、寄送電子郵件與刪除文件的工具,刪除只針對最後一張發票,且對已入帳文件常會失敗。寫入類工具標示為破壞性,用戶端支援時會要求確認。上傳檔案只從 NULA_FILE_ROOTS 讀取。本專案為非官方用戶端,與 nula.bg 無關聯。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 NULA.BG,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

nulabg-mcp

[CI] [npm] [Node.js] [License: MIT]

MCP сървър за счетоводната платформа nula.bg. Дава на Claude и на други AI асистенти (Claude Desktop, Claude Code, Cursor, VS Code…) достъп до вашите фактури, покупки, OCR, клиенти, склад и банки чрез nula.bg API ключ.

Неофициален клиент. Проектът не е свързан с nula.bg. Работи върху публичното им REST API.

🇬🇧 In English: an MCP server for nula.bg, a Bulgarian cloud accounting platform — invoices, bills with OCR, customers, inventory, bank feeds and derived reports, over an API key. Read-only by default. Install the .mcpb bundle in Claude Desktop, or run npx -y nulabg-mcp with NULA_API_KEY set. The rest of this README is in Bulgarian, because the platform, its documents and its users are; the tool descriptions the model sees are in English. Issues and pull requests in either language are welcome.

Какво може

Модул (toolset)ToolsКакво прави
corenula_lookup_companyСправка за фирма по ЕИК или ДДС номер (Търговски регистър / VIES)
invoicesnula_search_invoices, nula_create_invoice, nula_update_invoice, nula_update_invoice_metadata, nula_get_invoice_pdf, nula_email_invoice, nula_delete_last_invoiceТърсене, издаване (с preview), редакция, платена/изпратена, категории, прикачени файлове, PDF, изпращане по имейл, изтриване на последната фактура
billsnula_search_bills, nula_create_bill, nula_update_bill_categoriesПокупки, вкл. протоколи по чл.117 ЗДДС
ocrnula_ocr_upload, nula_ocr_statusКачване на до 10 документа от диска, изчакване на разпознаването, квота
customersnula_search_customersКлиенти и контрагенти
inventorynula_search_items, nula_list_item_categoriesАртикули, цени, сметки, наличности
bankingnula_list_bank_accounts, nula_list_bank_transactionsБанкови сметки и движения
insightsnula_receivables_report, nula_period_summary, nula_match_bank_transactionsВземания с aging, обобщение за месец, предложения за равнение банка ↔ фактура
nra (изкл.)nula_nra_declarations, nula_nra_refresh_resultСтатус на декларациите към НАП (без подаване)
noi (изкл.)nula_noi_documents, nula_noi_get_documentДокументи към НОИ (Прил. 9/10/11)

21 tools при разрешени промени, 13 в режим само за четене (по подразбиране), 25 с включени nra и noi. При няколко фирми се появява и nula_list_companies.

Освен това има:

  • Prompts: issue-invoice, process-receipts, month-end-review, collect-overdue.
  • Resources: основанията за 0% ДДС, основанията за протоколи, всички стойности на enum-ите и PDF на фактура.

Примерни заявки:

  • „Издай фактура на ЕИК 123456789 за 10 часа консултации по 60 € без ДДС, платима по банка до 15 дни.“
  • „Качи всички PDF-и от ~/Documents/Фактури/Септември като покупки и ми покажи какво е разпознато.“
  • „Кои клиенти ми дължат пари от над 30 дни?“
  • „Сравни входящите плащания по банковата сметка за септември с неплатените фактури.“

Инсталация

Нужен е API ключ от nula.bg, генериран от вашия акаунт в nula.bg. Ключът дава достъп до данните на фирмата, затова го пазете като парола.

🔒 По подразбиране сървърът е само за четене. Claude може да търси и чете, но не може да създава, редактира, изпраща или трие нищо в nula.bg. Така тестването и оценката са безопасни. За да разрешите промени, задайте NULA_READ_ONLY=false (в Claude Desktop: махнете отметката „Само четене“ в настройките на разширението).

Claude Desktop (препоръчително)

  1. Свалете nulabg-mcp-<версия>.mcpb от Releases.
  2. Отворете файла с двоен клик (или Settings → Extensions → Install Extension).
  3. Въведете API ключа. Той се пази в keychain-а на системата. „Само четене“ е включено по подразбиране.

Node.js не е нужен, защото Claude Desktop го съдържа.

Claude Code

bash
claude mcp add nulabg --scope user --env NULA_API_KEY=<вашият-ключ> -- npx -y nulabg-mcp

С право на промени (след като сте тествали):

bash
claude mcp add nulabg --scope user --env NULA_API_KEY=<вашият-ключ> --env NULA_READ_ONLY=false -- npx -y nulabg-mcp

Cursor / Windsurf / Claude Desktop (ръчно)

~/.cursor/mcp.json или claude_desktop_config.json:

json
{  "mcpServers": {    "nulabg": {      "command": "npx",      "args": ["-y", "nulabg-mcp"],      "env": { "NULA_API_KEY": "<вашият-ключ>" }    }  }}

VS Code

.vscode/mcp.json. Ключът се иска при стартиране и не се записва във файла:

json
{  "inputs": [{ "type": "promptString", "id": "nula-key", "description": "nula.bg API key", "password": true }],  "servers": {    "nulabg": {      "command": "npx",      "args": ["-y", "nulabg-mcp"],      "env": { "NULA_API_KEY": "${input:nula-key}" }    }  }}

Проверка на ключа от терминала:

bash
NULA_API_KEY=<вашият-ключ> npx -y nulabg-mcp --check

Настройки

ПроменливаПо подразбиранеОписание
NULA_API_KEY—API ключ (задължителен, освен ако не ползвате NULA_PROFILES)
NULA_READ_ONLYtrueСамо четене. Промени в nula.bg се разрешават само с изрично false (0, no, off). Всяка друга стойност, вкл. грешно изписана, оставя режима само за четене
NULA_TOOLSETScore,invoices,bills,ocr,customers,inventory,banking,insightsКои модули да са активни; all включва и nra, noi
NULA_CONFIRM_WRITESelicitПотвърждение в клиента преди създаване, изпращане и изтриване (ако клиентът поддържа elicitation); never го изключва
NULA_DEFAULT_CURRENCYEURВалута за нови документи
NULA_DEFAULT_LANGUAGEbgЕзик на PDF и имейл (bg / en)
NULA_DEFAULT_INVOICE_CATEGORY—Категория за нови фактури (nula.bg изисква поне една)
NULA_DOWNLOAD_DIR~/Downloads/nulaКъде се записват PDF и XML
NULA_FILE_ROOTS~Папки, от които може да се качват файлове (разделени с :, на Windows с ;)
NULA_PROFILES—Няколко фирми: {"firma-a":"ключ1","firma-b":"ключ2"} или път до JSON файл
NULA_DEFAULT_PROFILEdefault или първиятФирма по подразбиране при NULA_PROFILES
NULA_BILL_CALLBACK_URLhttps://nula.bg/Адрес, който nula.bg уведомява след създаване на покупка (вижте „Ограничения“)
NULA_BASE_URLhttps://nula.bg
NULA_TIMEOUT_MS / NULA_MAX_CONCURRENCY / NULA_LOG_LEVEL30000 / 4 / info

Няколко фирми (за счетоводители)

bash
NULA_PROFILES='{"alfa":"ключ-1","beta":"ключ-2"}' NULA_DEFAULT_PROFILE=alfa npx -y nulabg-mcp

Всеки tool получава параметър company, а nula_list_companies показва наличните фирми без ключовете.

Безопасност

  • Преглед преди създаване. nula_create_invoice и nula_create_bill имат preview_only. Асистентът е инструктиран първо да покаже номер, редове и суми и да изчака потвърждение.
  • Потвърждение в клиента. Създаването, редакцията, изпращането по имейл и изтриването искат изрично „да“ чрез MCP elicitation, когато клиентът го поддържа. Tools, които изпращат или трият, са маркирани като destructive, така че клиентите искат одобрение.
  • Изтриване. nula.bg трие само последната фактура. Tool-ът изисква номера ѝ (expected_number), отказва, ако последната е друга, и отказва предварително, ако фактурата е осчетоводена (виж „Ограничения“).
  • Без повторни опити при запис. Заявки, които създават, променят, изпращат или трият, никога не се повтарят автоматично. При timeout отговорът казва „статусът е неизвестен, проверете преди нов опит“.
  • Файлове. Четат се само PDF, JPG и PNG (по съдържание, не по разширение), само от NULA_FILE_ROOTS, без скрити папки, до 10 MB. URL-и се приемат само https, без локални и вътрешни адреси.
  • Ключът. Не се логва и не се връща в отговори. Логовете отиват в stderr.
  • Само четене по подразбиране. Докато не зададете изрично NULA_READ_ONLY=false, tools, които създават, променят, изпращат или трият, изобщо не се регистрират, така че Claude не може да ги извика. При грешно изписана стойност сървърът остава само за четене.
  • Без подаване към НАП и НОИ. Подаването на декларации изисква КЕП и не е достъпно през този сървър.

Ограничения (v0.1)

  • Проверено срещу реален акаунт на 26.09.2026. Всички 13 read tools и операциите със запис (издаване, редакция, платена/изпратена, PDF, имейл) работят с истински данни. Форматите на отговорите са документирани в docs/research/nula-api-analysis.md §8–§9. Единственото, което не минава, е изтриването — виж по-долу. OCR, НАП и НОИ не са тествани, защото ключът няма достъп до тях.
  • OCR, НАП и НОИ изискват ключ с достъп до фирмата. С ключ, създаден в профила, тези endpoint-и връщат 403 „This token is not scoped to a team you can access“. Останалите модули работят.
  • Артикули: търсенето по SKU минава през обхождане на каталога, защото /open-cart/products/{sku} и getItemDetails връщат 404 дори за съществуващи артикули, а филтърът search не търси по SKU.
  • Покупка по id: /ocr/bill/{id} работи само за документи, минали през OCR; за останалите сървърът намира покупката в списъка.
  • „Изпратена“ фактура: nula.bg не връща такъв статус, затова nula_update_invoice_metadata иска и двата флага (is_paid и is_sent) или номера на фактурата.
  • Изтриването на фактура често е невъзможно през API-то. DELETE /api/v1/deleteInvoice се вика без параметри и трие последната издадена фактура, но връща HTTP 403 (с празно съобщение) за осчетоводен документ. Във фирма със счетоводен модул всички фактури излизат с has_accounting: true, тоест изтриването не минава и документът се маха ръчно от уеб приложението или с кредитно известие. Tool-ът проверява това предварително, вместо да праща обречена заявка.
  • Callback URL при покупки. createBill изисква callback_url. По подразбиране се подава адресът на самия nula.bg, така че данни не излизат към трети страни. Ако имате собствен webhook, задайте NULA_BILL_CALLBACK_URL.
  • Липсващи API операции. nula.bg API няма създаване или редакция на контрагент (клиентът се създава автоматично с първата фактура), GET на фактура по id, справки по ДДС и плащания.

Разработка

bash
npm installnpm run build        # TypeScript → dist/npm test             # unit + протоколни тестове (Vitest, фалшив nula.bg API)npm run lint         # Biomenpm run inspect      # MCP Inspector срещу dist/cli.jsnpm run pack:mcpb    # Claude Desktop bundle → nulabg-mcp-<версия>.mcpbnode dist/cli.js --list-tools

Стек:

  • TypeScript;
  • @modelcontextprotocol/server 2.x (MCP spec 2026-07-28, съвместим и с клиенти от 2025 г.);
  • zod 4;
  • Node.js ≥ 20.

Архитектура и решения: docs/SPEC.md. Проучване: docs/research/.

Release: стъпките и предварителните проверки са в docs/RELEASING.md. Накратко: вдигате версията в package.json, обновявате CHANGELOG.md и пускате tag vX.Y.Z; GitHub Actions публикува в npm с provenance, прикачва .mcpb към GitHub Release и обновява MCP Registry.

Принос

Issues и pull requests са добре дошли — на български или на английски. Най-полезни са докладите за несъответствия с истинското API (имена и типове на полета, без реални данни), защото официалната документация описва почти само заявките.

Лиценз

MIT © Encorp

來源:README.md,提交 7789906

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.0最新Sep 27, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分