Skip to main content
Glama
masoniqbal777

business-central-mcp


Übersicht

Eigenschaft

Wert

Sprache

TypeScript / Node 20+

npm-Paket

business-central-mcp

BC-Versionen

BC27, BC28 (drahtkompatibel)

Authentifizierung

NavUserPassword (OAuth auf der Roadmap)

Tools

12

Tests

284 Unit-/Protokoll- + 111 Integrationstests

Lizenz

MIT

Installation

VSCode

Install in VSCode

Klicken Sie auf das Badge. VSCode öffnet sich, fordert zum Hinzufügen des Servers auf und schreibt in Ihre Benutzer-mcp.json.

Sie müssen weiterhin BC_BASE_URL, BC_USERNAME und BC_PASSWORD im env-Block des Eintrags festlegen. VSCode öffnet die Datei zum Bearbeiten.

Arbeitsbereich: Erstellen Sie .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

Begrenzen Sie es mit --scope project auf das aktuelle Projekt. Siehe claude mcp --help für Scoping-Optionen.

Claude Desktop

  1. Laden Sie die neueste .dxt von Releases herunter.

  2. Doppelklicken Sie. Claude Desktop öffnet Einstellungen → Erweiterungen und fragt nach BC-URL, Benutzername und Passwort.

  3. Starten Sie Claude Desktop neu.

Bearbeiten Sie 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"
      }
    }
  }
}

Starten Sie Claude Desktop neu.

Konfiguration

Variable

Erforderlich

Standard

Beschreibung

BC_BASE_URL

Ja

Basis-URL des BC-Servers, z. B. http://your-bc-server/BC

BC_USERNAME

Ja

NavUserPassword-Benutzername

BC_PASSWORD

Ja

NavUserPassword-Passwort

BC_PROFILE

Nein

Serverstandard

Profil-ID, z. B. BUSINESS MANAGER. Beeinflusst, welches Role Center geladen wird und welche Seiten Tell Me indiziert.

BC_TENANT_ID

Nein

default

Nur für Multi-Tenant-Bereitstellungen.

BC_CLIENT_VERSION

Nein

27.0.0.0

Version, die BC beim Öffnen der Sitzung gemeldet wird.

PORT

Nein

3000

HTTP-Transport-Port (stdio-Transport ignoriert dies).

LOG_LEVEL

Nein

info

debug / info / warn / error.

LOG_DIR

Nein

./logs

Verzeichnis für Logdateien.

STATE_DIR

Nein

./.state

Verzeichnis für Sitzungsstatus.

BC_INVOKE_TIMEOUT

Nein

30000

Timeout pro Aufruf in ms. Beendet hängende Sitzungen.

BC_RECONNECT_MAX_RETRIES

Nein

4

Wiederverbindungsversuche nach Sitzungsende.

BC_RECONNECT_BASE_DELAY

Nein

1000

Basisverzögerung (ms) für exponentielles Wiederverbindungs-Backoff.

Was kann es tun?

Tool

Was es tut

bc_open_page

Öffnet jede Seite per ID – Listen, Karten, Belege, Role Center. Gibt die Seite als sections[] mit Kopfbereich, Zeilen, FactBoxen und Role-Center-Cuegroup-Kacheln zurück.

bc_read_data

Aktualisiert einen einzelnen Abschnitt: filtern, paginieren, aufteilen, Registerkarten/Spalten projizieren. Gibt dieselbe Section-Form wie bc_open_page zurück.

bc_write_data

Schreibt Feldwerte; BC validiert und bestätigt die Werte. Abschnittsbewusst (Zeilen, FactBoxen, Kopfbereich).

bc_execute_action

Führt Kopf-/Zeilen-/Assistentenaktionen aus oder bohrt per cue-Eingabe in Role-Center-Cue-Kacheln nach unten.

bc_respond_dialog

Behandelt Bestätigungsaufforderungen und Anforderungsseiten

bc_navigate

Zeilen auswählen, in Datensätze hineinbohren, Feldnachschläge

bc_search_pages

Tell-Me-Suche. Gibt { name, objectType, runTarget, departmentPath, category, score } pro Ergebnis zurück.

bc_close_page

Schließt eine Seite und gibt Serverressourcen frei

bc_switch_company

Wechselt mitten in der Sitzung zu einem anderen Unternehmen

bc_list_companies

Verfügbare Unternehmen ermitteln

bc_run_report

Berichte ausführen und Parameter der Anforderungsseite ausfüllen

bc_wizard_navigate

NavigatePage-/Assistentenabläufe steuern (zurück / weiter / fertig / abbrechen)

So funktioniert es

Dieser Server spricht direkt BCs internes WebSocket-Protokoll – dasselbe Protokoll, das der browserbasierte Webclient verwendet. Es wurde aus dekompilierten BC-Server-Assemblies zurückentwickelt. Keine OData-Endpunkte, keine SOAP-Dienste, kein Selenium.

Eine WebSocket-Verbindung pro Sitzung. Alle Operationen werden über eine Promise-Warteschlange serialisiert. BC27 und BC28 sind drahtkompatibel.

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 gibt die Seite als flache Liste von Abschnitten zurück:

{
  "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": [...] }
  ]
}

Jeder Abschnitt hat seine eigene Inhaltsform:

  • Kartenstil (header auf Kartenseiten, factbox, requestPage): fields[] und (für header) actions[]

  • Listenstil (lines auf Belegen, header auf Listenseiten, Repeater-Unter­seiten): rows[] und totalRowCount

  • Cue-Kacheln (Role-Center-gehostete CardParts): cues[] mit name, value, groupCaption, synopsis, hasAction jeder Kachel. Mit bc_execute_action { section, cue } nach unten bohren.

bc_read_data gibt eine einzelne Section für die angeforderte sectionId zurück (Standard: "header"). Die Abschnitts-ID für eine FactBox oder Unterseite stammt aus der bc_open_page-Antwort.

  • Automatische Wiederverbindung mit exponentiellem Backoff nach Sitzungsende

  • Behandelt BCs ~15s NTLM-Auth-Slot-Halte nach Abstürzen

  • Blendet Lizenz-Popups auf frischen Datenbanken automatisch aus

  • Invoke-Timeout beendet hängende Sitzungen und löst Wiederherstellung aus

  • Automatische Wiederherstellung nach LogicalModalityViolationException mitten in der Sitzung: gleicht den modalen Stapel ab und versucht es transparent erneut; fällt auf Sitzungsreset zurück, wenn BC eine Bestätigungsdialog kleben lässt

Wichtige Dateien

Datei

Zweck

src/stdio-server.ts

npm-bin-Einstieg – stdio-MCP-Transport

src/server.ts

HTTP-MCP-Transport-Einstieg

src/mcp/

MCP-Tool-Registry, Schemas, Request-Handler

src/operations/

Ein Handler pro Tool (bc_open_page, bc_read_data, usw.)

src/services/

Seiten-, Daten-, Aktions-, Navigations-, Such-Geschäftslogik

src/protocol/

WebSocket-Transport, Wire-Typen, Captures

src/session/

Sitzungslebenszyklus, modaler Stapel, Wiederverbindung

manifest.json

Claude-Desktop-Erweiterungsmanifest

scripts/build-dxt.ts

Baut .dxt-Artefakt für Claude Desktop

.github/workflows/release.yml

Baut und hängt .dxt bei v*-Tag-Pushes an

ROADMAP.md

Aufgeschobene Arbeiten (OAuth, Cursor, Init-Assistent)

Entwicklung

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)

Roadmap

OAuth, Cursor-Unterstützung, ein interaktiver init-Assistent und ein paar Protokolllücken. Die vollständige Liste und Prioritäten finden Sie in ROADMAP.md.


Autor: Torben Leth (sshadows@sshadows.dk) Lizenz: MIT (siehe 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