Skip to main content
Glama
masoniqbal777

business-central-mcp


Resumen

Propiedad

Valor

Idioma

TypeScript / Node 20+

Paquete npm

business-central-mcp

Versiones BC

BC27, BC28 (compatibles a nivel de protocolo)

Autenticación

NavUserPassword (OAuth en la hoja de ruta)

Herramientas

12

Pruebas

284 unitarias/protocolo + 111 de integración

Licencia

MIT

Instalación

VSCode

Instalar en VSCode

Haz clic en la insignia. VSCode se abre, te pide que agregues el servidor y escribe en tu mcp.json de usuario.

Aún tendrás que configurar BC_BASE_URL, BC_USERNAME y BC_PASSWORD en el bloque env de la entrada. VSCode abre el archivo para que lo edites.

Espacio de trabajo: crea .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

Limítalo al proyecto actual con --scope project. Consulta claude mcp --help para ver las opciones de alcance.

Claude Desktop

  1. Descarga el último .dxt desde Releases.

  2. Haz doble clic. Claude Desktop abre Configuración → Extensiones y te pide la URL de BC, el nombre de usuario y la contraseña.

  3. Reinicia Claude Desktop.

Edita 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"
      }
    }
  }
}

Reinicia Claude Desktop.

Configuración

Variable

Requerido

Por defecto

Descripción

BC_BASE_URL

URL base del servidor BC, p. ej. http://your-bc-server/BC

BC_USERNAME

Nombre de usuario de NavUserPassword

BC_PASSWORD

Contraseña de NavUserPassword

BC_PROFILE

No

predeterminado del servidor

Id. de perfil, p. ej. BUSINESS MANAGER. Afecta a qué Centro de roles se carga y qué páginas indexa Tell Me.

BC_TENANT_ID

No

default

Solo implementaciones multiinquilino.

BC_CLIENT_VERSION

No

27.0.0.0

Versión notificada a BC durante la apertura de sesión.

PORT

No

3000

Puerto de transporte HTTP (el transporte stdio lo ignora).

LOG_LEVEL

No

info

debug / info / warn / error.

LOG_DIR

No

./logs

Directorio para archivos de registro.

STATE_DIR

No

./.state

Directorio para el estado de sesión.

BC_INVOKE_TIMEOUT

No

30000

Tiempo de espera por invocación en ms. Mata sesiones colgadas.

BC_RECONNECT_MAX_RETRIES

No

4

Intentos de reconexión tras la muerte de la sesión.

BC_RECONNECT_BASE_DELAY

No

1000

Retraso base (ms) para la retrocesión exponencial de reconexión.

¿Qué puede hacer?

Herramienta

Qué hace

bc_open_page

Abre cualquier página por ID: listas, tarjetas, documentos, centros de roles. Devuelve la página como sections[] con encabezado, líneas, cuadros de información y mosaicos de grupo de indicadores del Centro de roles.

bc_read_data

Refresca una sola sección: filtra, pagina, divide, proyecta pestañas/columnas. Devuelve la misma forma Section que bc_open_page.

bc_write_data

Escribe valores de campo; BC valida y devuelve los valores confirmados. Consciente de secciones (líneas, cuadros de información, encabezado).

bc_execute_action

Ejecuta acciones de encabezado / fila / asistente, o profundiza en mosaicos de indicadores del Centro de roles mediante la entrada cue.

bc_respond_dialog

Gestiona avisos de confirmación y páginas de solicitud

bc_navigate

Selecciona filas, profundiza en registros, búsquedas de campo

bc_search_pages

Búsqueda de Tell Me. Devuelve { name, objectType, runTarget, departmentPath, category, score } por resultado.

bc_close_page

Cierra una página y libera recursos del servidor

bc_switch_company

Cambia a una empresa diferente a mitad de sesión

bc_list_companies

Descubre las empresas disponibles

bc_run_report

Ejecuta informes y rellena los parámetros de la página de solicitud

bc_wizard_navigate

Conduce flujos de NavigatePage / asistente (atrás / siguiente / finalizar / cancelar)

Cómo funciona

Este servidor habla directamente el protocolo WebSocket interno de BC, el mismo que usa el cliente web basado en navegador. Fue ingeniado a partir de ensamblados de servidor BC descompilados. Sin puntos de conexión OData, sin servicios SOAP, sin Selenium.

Una conexión WebSocket por sesión. Todas las operaciones se serializan a través de una cola de promesas. BC27 y BC28 son compatibles a nivel de protocolo.

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 devuelve la página como una lista plana de secciones:

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

Cada sección tiene su propia forma de contenido:

  • Estilo tarjeta (header en páginas de tarjeta, factbox, requestPage): fields[] y (para header) actions[]

  • Estilo lista (lines en documentos, header en páginas de lista, subpáginas repetidoras): rows[] y totalRowCount

  • Mosaicos de indicadores (CardParts alojados en el Centro de roles): cues[] con el name, value, groupCaption, synopsis, hasAction de cada mosaico. Profundiza con bc_execute_action { section, cue }.

bc_read_data devuelve una sola Section para el sectionId solicitado (por defecto "header"). El ID de sección para un cuadro de información o subpágina proviene de la respuesta de bc_open_page.

  • Reconexión automática con retrocesión exponencial tras la muerte de la sesión

  • Gestiona la retención de la ranura de autenticación NTLM de ~15 s de BC después de fallos

  • Descarta automáticamente los avisos de licencia en bases de datos nuevas

  • El tiempo de espera de invocación mata sesiones colgadas y activa la recuperación

  • Recuperación automática de LogicalModalityViolationException a mitad de sesión: reconcilia la pila modal y reintenta de forma transparente; recurre al restablecimiento de sesión cuando BC mantiene un diálogo de confirmación fijo

Archivos clave

Archivo

Propósito

src/stdio-server.ts

Entrada bin de npm: transporte MCP stdio

src/server.ts

Entrada de transporte MCP HTTP

src/mcp/

Registro de herramientas MCP, esquemas, manejador de solicitudes

src/operations/

Un manejador por herramienta (bc_open_page, bc_read_data, etc.)

src/services/

Lógica de negocio de página, datos, acciones, navegación, búsqueda

src/protocol/

Transporte WebSocket, tipos de cable, capturas

src/session/

Ciclo de vida de sesión, pila modal, reconexión

manifest.json

Manifiesto de extensión de Claude Desktop

scripts/build-dxt.ts

Construye el artefacto .dxt para Claude Desktop

.github/workflows/release.yml

Construye y adjunta .dxt en pushes de etiqueta v*

ROADMAP.md

Trabajo pendiente (OAuth, Cursor, asistente de inicio)

Desarrollo

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)

Hoja de ruta

OAuth, soporte para Cursor, un asistente interactivo de init y algunas brechas de protocolo. Consulta ROADMAP.md para la lista completa y las prioridades.


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