business-central-mcp
Übersicht
Eigenschaft | Wert |
Sprache | TypeScript / Node 20+ |
npm-Paket | |
BC-Versionen | BC27, BC28 (drahtkompatibel) |
Authentifizierung | NavUserPassword (OAuth auf der Roadmap) |
Tools | 12 |
Tests | 284 Unit-/Protokoll- + 111 Integrationstests |
Lizenz | MIT |
Installation
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-mcpBegrenzen Sie es mit --scope project auf das aktuelle Projekt. Siehe claude mcp --help für Scoping-Optionen.
Claude Desktop
Laden Sie die neueste
.dxtvon Releases herunter.Doppelklicken Sie. Claude Desktop öffnet Einstellungen → Erweiterungen und fragt nach BC-URL, Benutzername und Passwort.
Starten Sie Claude Desktop neu.
Bearbeiten Sie 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"
}
}
}
}Starten Sie Claude Desktop neu.
Konfiguration
Variable | Erforderlich | Standard | Beschreibung |
| Ja | — | Basis-URL des BC-Servers, z. B. |
| Ja | — | NavUserPassword-Benutzername |
| Ja | — | NavUserPassword-Passwort |
| Nein | Serverstandard | Profil-ID, z. B. |
| Nein |
| Nur für Multi-Tenant-Bereitstellungen. |
| Nein |
| Version, die BC beim Öffnen der Sitzung gemeldet wird. |
| Nein |
| HTTP-Transport-Port (stdio-Transport ignoriert dies). |
| Nein |
|
|
| Nein |
| Verzeichnis für Logdateien. |
| Nein |
| Verzeichnis für Sitzungsstatus. |
| Nein |
| Timeout pro Aufruf in ms. Beendet hängende Sitzungen. |
| Nein |
| Wiederverbindungsversuche nach Sitzungsende. |
| Nein |
| Basisverzögerung (ms) für exponentielles Wiederverbindungs-Backoff. |
Was kann es tun?
Tool | Was es tut |
| Öffnet jede Seite per ID – Listen, Karten, Belege, Role Center. Gibt die Seite als |
| Aktualisiert einen einzelnen Abschnitt: filtern, paginieren, aufteilen, Registerkarten/Spalten projizieren. Gibt dieselbe |
| Schreibt Feldwerte; BC validiert und bestätigt die Werte. Abschnittsbewusst (Zeilen, FactBoxen, Kopfbereich). |
| Führt Kopf-/Zeilen-/Assistentenaktionen aus oder bohrt per |
| Behandelt Bestätigungsaufforderungen und Anforderungsseiten |
| Zeilen auswählen, in Datensätze hineinbohren, Feldnachschläge |
| Tell-Me-Suche. Gibt |
| Schließt eine Seite und gibt Serverressourcen frei |
| Wechselt mitten in der Sitzung zu einem anderen Unternehmen |
| Verfügbare Unternehmen ermitteln |
| Berichte ausführen und Parameter der Anforderungsseite ausfüllen |
| 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 Serverbc_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 (
headerauf Kartenseiten,factbox,requestPage):fields[]und (fürheader)actions[]Listenstil (
linesauf Belegen,headerauf Listenseiten, Repeater-Unterseiten):rows[]undtotalRowCountCue-Kacheln (Role-Center-gehostete CardParts):
cues[]mitname,value,groupCaption,synopsis,hasActionjeder Kachel. Mitbc_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
LogicalModalityViolationExceptionmitten 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 |
| npm- |
| HTTP-MCP-Transport-Einstieg |
| MCP-Tool-Registry, Schemas, Request-Handler |
| Ein Handler pro Tool ( |
| Seiten-, Daten-, Aktions-, Navigations-, Such-Geschäftslogik |
| WebSocket-Transport, Wire-Typen, Captures |
| Sitzungslebenszyklus, modaler Stapel, Wiederverbindung |
| Claude-Desktop-Erweiterungsmanifest |
| Baut |
| Baut und hängt |
| 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)
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