Skip to main content
Glama
masoniqbal777

business-central-mcp


Обзор

Свойство

Значение

Язык

TypeScript / Node 20+

npm-пакет

business-central-mcp

Версии BC

BC27, BC28 (совместимы на уровне протокола)

Аутентификация

NavUserPassword (OAuth в планах)

Инструменты

12

Тесты

284 модульных/протокольных + 111 интеграционных

Лицензия

MIT

Установка

VSCode

Install in VSCode

Нажмите на значок. VSCode откроется, предложит добавить сервер и запишет изменения в ваш пользовательский mcp.json.

Вам всё равно потребуется задать BC_BASE_URL, BC_USERNAME и BC_PASSWORD в блоке env записи. VSCode откроет файл для редактирования.

Рабочая область: создайте .vscode/mcp.json:

{
  "servers": {
    "business-central": {
      "command": "npx",
      "args": ["-y", "business-central-mcp"],
      "env": {
        "BC_BASE_URL": "http://your-bc-server/BC",
        "BC_USERNAME": "your-user",
        "BC_PASSWORD": "your-password"
      }
    }
  }
}

Claude Code

claude mcp add business-central \
  -e BC_BASE_URL=http://your-bc-server/BC \
  -e BC_USERNAME=you \
  -e BC_PASSWORD=secret \
  -- npx -y business-central-mcp

Ограничьте его текущим проектом с помощью --scope project. Параметры области см. в claude mcp --help.

Claude Desktop

  1. Скачайте последний .dxt из Releases.

  2. Дважды щёлкните по файлу. Claude Desktop откроет Настройки → Расширения и запросит URL BC, имя пользователя и пароль.

  3. Перезапустите Claude Desktop.

Отредактируйте claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "business-central": {
      "command": "npx",
      "args": ["-y", "business-central-mcp"],
      "env": {
        "BC_BASE_URL": "http://your-bc-server/BC",
        "BC_USERNAME": "your-user",
        "BC_PASSWORD": "your-password"
      }
    }
  }
}

Перезапустите Claude Desktop.

Конфигурация

Переменная

Обязательно

По умолчанию

Описание

BC_BASE_URL

Да

Базовый URL сервера BC, например http://your-bc-server/BC

BC_USERNAME

Да

Имя пользователя NavUserPassword

BC_PASSWORD

Да

Пароль NavUserPassword

BC_PROFILE

Нет

серверный

Идентификатор профиля, например BUSINESS MANAGER. Влияет на загружаемый ролевой центр и индексируемые страницы в Tell Me.

BC_TENANT_ID

Нет

default

Только для мультитенантных развертываний.

BC_CLIENT_VERSION

Нет

27.0.0.0

Версия, сообщаемая BC при открытии сеанса.

PORT

Нет

3000

Порт HTTP-транспорта (транспорт stdio игнорирует это).

LOG_LEVEL

Нет

info

debug / info / warn / error.

LOG_DIR

Нет

./logs

Каталог для файлов журнала.

STATE_DIR

Нет

./.state

Каталог для состояния сеанса.

BC_INVOKE_TIMEOUT

Нет

30000

Тайм-аут одного вызова в мс. Завершает зависшие сеансы.

BC_RECONNECT_MAX_RETRIES

Нет

4

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

BC_RECONNECT_BASE_DELAY

Нет

1000

Базовая задержка (мс) для экспоненциальной задержки при переподключении.

Что умеет?

Инструмент

Что делает

bc_open_page

Открывает любую страницу по идентификатору — списки, карточки, документы, ролевые центры. Возвращает страницу в виде sections[] с заголовком, строками, фактбоксами и плитками ролевого центра.

bc_read_data

Обновляет один раздел: фильтрация, постраничный вывод, нарезка, проекция вкладок/столбцов. Возвращает ту же форму Section, что и bc_open_page.

bc_write_data

Записывает значения полей; BC проверяет и возвращает подтверждённые значения. Работает с учётом раздела (строки, фактбоксы, заголовок).

bc_execute_action

Выполняет действия заголовка / строки / мастера, а также детализацию по плиткам ролевого центра через ввод cue.

bc_respond_dialog

Обрабатывает запросы подтверждения и страницы запросов

bc_navigate

Выбор строк, детализация по записям, поиск по полям

bc_search_pages

Поиск Tell Me. Возвращает { name, objectType, runTarget, departmentPath, category, score } для каждого результата.

bc_close_page

Закрывает страницу и освобождает ресурсы сервера

bc_switch_company

Переключается на другую компанию в рамках сеанса

bc_list_companies

Показывает доступные компании

bc_run_report

Выполняет отчёты и заполняет параметры страницы запроса

bc_wizard_navigate

Управляет навигацией по страницам-мастерам (назад / далее / готово / отмена)

Как это работает

Этот сервер напрямую использует внутренний протокол WebSocket BC — тот же, что использует веб-клиент. Он был восстановлен из декомпилированных сборок сервера BC. Никаких конечных точек OData, служб SOAP или Selenium.

Одно подключение WebSocket на сеанс. Все операции сериализуются через очередь промисов. BC27 и BC28 совместимы на уровне протокола.

LLM (Claude / Copilot / etc.)
   |
   v   MCP (stdio or HTTP)
business-central-mcp
   |
   v   WebSocket + JSON-RPC
BC Web Service Tier (BC27 / BC28)
   |
   v   internal calls
BC Server

bc_open_page возвращает страницу в виде плоского списка разделов:

{
  "pageContextId": "session:page:21:abc",
  "pageType": "Card",
  "caption": "Customer Card",
  "isModal": false,
  "sections": [
    { "sectionId": "header",                       "kind": "header",  "fields": [...], "actions": [...] },
    { "sectionId": "factbox:Customer Statistics",  "kind": "factbox", "fields": [...] }
  ]
}

Каждый раздел имеет собственную структуру содержимого:

  • Карточный стиль (header на страницах карточек, factbox, requestPage): fields[] и (для header) actions[]

  • Стиль списка (lines в документах, header на страницах списков, вложенные страницы повторителей): rows[] и totalRowCount

  • Плитки ролевого центра (CardPart, размещённые в ролевом центре): cues[] с name, value, groupCaption, synopsis, hasAction каждой плитки. Детализация через bc_execute_action { section, cue }.

bc_read_data возвращает один Section для запрошенного sectionId (по умолчанию "header"). Идентификатор раздела для FactBox или вложенной страницы берётся из ответа bc_open_page.

  • Автоматическое переподключение с экспоненциальной задержкой после завершения сеанса

  • Обрабатывает удержание NTLM-слота BC в течение ~15 секунд после сбоев

  • Автоматически закрывает всплывающие окна лицензий на новых базах данных

  • Тайм-аут вызова завершает зависшие сеансы и запускает восстановление

  • Автовосстановление после LogicalModalityViolationException в середине сеанса: согласует модальный стек и прозрачно повторяет попытку; при залипании диалога подтверждения BC выполняется сброс сеанса

Ключевые файлы

Файл

Назначение

src/stdio-server.ts

Точка входа npm bin — транспорт MCP через stdio

src/server.ts

Точка входа HTTP-транспорта MCP

src/mcp/

Реестр инструментов MCP, схемы, обработчик запросов

src/operations/

По одному обработчику на инструмент (bc_open_page, bc_read_data и т. д.)

src/services/

Бизнес-логика страниц, данных, действий, навигации, поиска

src/protocol/

Транспорт WebSocket, типы проводов, захваты

src/session/

Жизненный цикл сеанса, модальный стек, переподключение

manifest.json

Манифест расширения Claude Desktop

scripts/build-dxt.ts

Сборка артефакта .dxt для Claude Desktop

.github/workflows/release.yml

Сборка и прикрепление .dxt при пуше тегов v*

ROADMAP.md

Отложенные задачи (OAuth, Cursor, мастер инициализации)

Разработка

git clone https://github.com/SShadowS/business-central-mcp
cd business-central-mcp
npm install
npm run start:stdio-direct   # Run from source
npm test                     # 284 unit + protocol tests
npm run test:integration     # 111 integration tests against real BC (requires running BC server)

Дорожная карта

OAuth, поддержка Cursor, интерактивный мастер init и несколько пробелов в протоколе. Полный список и приоритеты см. в ROADMAP.md.


Автор: Torben Leth (sshadows@sshadows.dk) Лицензия: MIT (см. LICENSE)

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

  • MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.

  • Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.

  • MCP server for AI dialogue using various LLM models via AceDataCloud

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/masoniqbal777/Business-Central-Mcp'

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