business-central-mcp
Обзор
Свойство | Значение |
Язык | TypeScript / Node 20+ |
npm-пакет | |
Версии BC | BC27, BC28 (совместимы на уровне протокола) |
Аутентификация | NavUserPassword (OAuth в планах) |
Инструменты | 12 |
Тесты | 284 модульных/протокольных + 111 интеграционных |
Лицензия | MIT |
Установка
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
Скачайте последний
.dxtиз Releases.Дважды щёлкните по файлу. Claude Desktop откроет Настройки → Расширения и запросит URL BC, имя пользователя и пароль.
Перезапустите Claude Desktop.
Отредактируйте claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.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.
Конфигурация
Переменная | Обязательно | По умолчанию | Описание |
| Да | — | Базовый URL сервера BC, например |
| Да | — | Имя пользователя NavUserPassword |
| Да | — | Пароль NavUserPassword |
| Нет | серверный | Идентификатор профиля, например |
| Нет |
| Только для мультитенантных развертываний. |
| Нет |
| Версия, сообщаемая BC при открытии сеанса. |
| Нет |
| Порт HTTP-транспорта (транспорт stdio игнорирует это). |
| Нет |
|
|
| Нет |
| Каталог для файлов журнала. |
| Нет |
| Каталог для состояния сеанса. |
| Нет |
| Тайм-аут одного вызова в мс. Завершает зависшие сеансы. |
| Нет |
| Попытки переподключения после завершения сеанса. |
| Нет |
| Базовая задержка (мс) для экспоненциальной задержки при переподключении. |
Что умеет?
Инструмент | Что делает |
| Открывает любую страницу по идентификатору — списки, карточки, документы, ролевые центры. Возвращает страницу в виде |
| Обновляет один раздел: фильтрация, постраничный вывод, нарезка, проекция вкладок/столбцов. Возвращает ту же форму |
| Записывает значения полей; BC проверяет и возвращает подтверждённые значения. Работает с учётом раздела (строки, фактбоксы, заголовок). |
| Выполняет действия заголовка / строки / мастера, а также детализацию по плиткам ролевого центра через ввод |
| Обрабатывает запросы подтверждения и страницы запросов |
| Выбор строк, детализация по записям, поиск по полям |
| Поиск Tell Me. Возвращает |
| Закрывает страницу и освобождает ресурсы сервера |
| Переключается на другую компанию в рамках сеанса |
| Показывает доступные компании |
| Выполняет отчёты и заполняет параметры страницы запроса |
| Управляет навигацией по страницам-мастерам (назад / далее / готово / отмена) |
Как это работает
Этот сервер напрямую использует внутренний протокол 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 Serverbc_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 выполняется сброс сеанса
Ключевые файлы
Файл | Назначение |
| Точка входа npm |
| Точка входа HTTP-транспорта MCP |
| Реестр инструментов MCP, схемы, обработчик запросов |
| По одному обработчику на инструмент ( |
| Бизнес-логика страниц, данных, действий, навигации, поиска |
| Транспорт WebSocket, типы проводов, захваты |
| Жизненный цикл сеанса, модальный стек, переподключение |
| Манифест расширения Claude Desktop |
| Сборка артефакта |
| Сборка и прикрепление |
| Отложенные задачи (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)
This server cannot be installed
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 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
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/masoniqbal777/Business-Central-Mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server