UNPKG

bc-webclient-mcp

Version:

Model Context Protocol (MCP) server for Microsoft Dynamics 365 Business Central via WebUI protocol. Enables AI assistants to interact with BC through the web client protocol, supporting Card, List, and Document pages with full line item support and server

108 lines 3.26 kB
/** * Page Service * * Handles all Business Central page operations including metadata retrieval, * data reading/writing, and page lifecycle management. * * This service layer abstracts the business logic from the MCP tool adapters. */ import type { Result } from '../core/result.js'; import type { BCError } from '../core/errors.js'; export interface PageMetadata { pageId: string; pageContextId: string; caption: string; description: string; pageType: 'Card' | 'List' | 'Document' | 'Worksheet' | 'Report'; fields: Array<{ name: string; caption: string; type: string; required: boolean; editable: boolean; }>; actions: Array<{ name: string; caption: string; enabled: boolean; description?: string; }>; } export interface PageData { pageId: string; pageContextId: string; sessionId: string; caption: string; pageType: string; records: Array<{ fields: Record<string, unknown>; primaryKey?: Record<string, unknown>; }>; totalCount: number; } export interface PageWriteResult { success: boolean; pageContextId: string; updatedFields: Record<string, unknown>; validationErrors?: Array<{ field: string; message: string; }>; } /** * Service for managing Business Central page operations */ export declare class PageService { private readonly metadataParser; private readonly dataExtractor; private readonly handlerParser; constructor(); /** Close all open forms on a connection */ private closeExistingForms; /** Build query string for OpenForm */ private buildOpenFormQuery; /** Load child forms and accumulate handlers */ private loadChildFormHandlers; /** Store page context for later use */ private storePageContext; /** Determine page type from caption */ private determinePageType; /** * Get metadata for a Business Central page */ getMetadata(pageId: string | number, bcConfig?: { baseUrl: string; username: string; password: string; tenantId: string; }): Promise<Result<PageMetadata, BCError>>; /** * Read data from a Business Central page */ readData(pageContextId: string, filters?: Record<string, unknown>, options?: { limit?: number; offset?: number; setCurrent?: boolean; }): Promise<Result<PageData, BCError>>; /** Validate pageContextId and get connection */ private validatePageContext; /** Refresh page and get current handlers */ private refreshPageData; /** Extract records from handlers based on page type */ private extractPageRecords; /** Apply filters and pagination to records */ private applyFiltersAndPagination; /** * Write data to a Business Central page */ writeData(pageContextId: string, fields: Record<string, unknown>): Promise<Result<PageWriteResult, BCError>>; /** * Generate a natural language description of the page */ private generateDescription; /** * Convert BC control type to user-friendly field type */ private controlTypeToFieldType; } //# sourceMappingURL=page-service.d.ts.map