[MCP] Add Query API tool support to MCP configuration#6670
[MCP] Add Query API tool support to MCP configuration#6670
Conversation
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
There was a problem hiding this comment.
AL Documentation Audit
Documentation gaps were detected in the following apps:
- MCP-Test-Library: 0% documentation coverage
- MCP-Test: 0% documentation coverage
- MCP: 0% documentation coverage
- Power-BI-Report-embeddings-for-Dynamics-365-Business-Central: 74% documentation coverage
To generate documentation, run /al-docs init or /al-docs update using GitHub Copilot CLI or Claude Code.
This review is for awareness to help keep documentation in sync with code changes. It is okay to dismiss this request.
…te/onbuyuka/mcpquery
There was a problem hiding this comment.
Pull request overview
This PR extends the MCP configuration feature to support API Query objects as tools (in addition to API Pages), and enriches API query metadata with AboutText to improve discoverability for MCP clients.
Changes:
- Add end-to-end MCP configuration support for Query API tools (lookup UI, validation, creation, version selection, warnings handling, import/export parsing).
- Update MCP tool-list UI to be query-aware and disable CUD/bound-actions toggles for Query tools.
- Add
AboutTextdescriptions to a large set of API queries (PowerBIReports, APIReportsFinance, and obsolete query APIs) and add test coverage + mock API query.
Reviewed changes
Copilot reviewed 98 out of 98 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/System Application/Test/MCP/src/MCPConfigTest.Codeunit.al | Adds/updates tests for query-tool creation, lookup, and behavior parity with page tools |
| src/System Application/Test Library/MCP/src/MockAPIQuery.Query.al | Adds a mock API query used by MCP tests |
| src/System Application/Test Library/MCP/src/MCPConfigTestLibrary.Codeunit.al | Renames/extends test-library APIs for page vs. query tool lookup/versioning |
| src/System Application/Test Library/MCP/app.json | Extends ID range to include the new mock query object |
| src/System Application/App/MCP/src/Configuration/Pages/MCPQueryConfigToolLookup.Page.al | New lookup page for selecting API queries as MCP tools |
| src/System Application/App/MCP/src/Configuration/Pages/MCPConfigToolList.Page.al | Updates tool list UI to support both Page and Query tools |
| src/System Application/App/MCP/src/Configuration/Codeunits/MCPUpgrade.Codeunit.al | Uses new “highest API page version” helper during upgrade |
| src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfigMissingReadTool.Codeunit.al | Scopes “missing read” warning logic to Page tools only |
| src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfigMissingParent.Codeunit.al | Updates missing-parent remediation to use page-specific tool creation/checks |
| src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfigMissingObject.Codeunit.al | Extends missing-object warning detection to Query tools |
| src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfigImplementation.Codeunit.al | Core implementation for query tool lifecycle, lookup, validation, versioning, publisher aggregation, and import parsing |
| src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfig.Codeunit.al | Public API surface updates: page tool creation rename + query tool creation + new GetAPIToolId overload |
| src/Apps/W1/PowerBIReports/App/_Obsolete/Sales/APIs/ValueEntriesSales.Query.al | Adds AboutText for obsolete query API |
| src/Apps/W1/PowerBIReports/App/_Obsolete/Sales/APIs/SalesLinePBIAPI.Query.al | Adds AboutText for obsolete query API |
| src/Apps/W1/PowerBIReports/App/_Obsolete/Purchasing/APIs/ValueEntriesPurch.Query.al | Adds AboutText for obsolete query API |
| src/Apps/W1/PowerBIReports/App/_Obsolete/Finance/APIs/GLEntriesIncomeStatement.Query.al | Adds AboutText for obsolete query API |
| src/Apps/W1/PowerBIReports/App/_Obsolete/Finance/APIs/GLEntriesClosing.Query.al | Adds AboutText for obsolete query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/SalesValueEntriesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/SalesLineV2PBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/SalesLineItemShipped.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/SalesLineItemOutstanding.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/SalesInvoiceLinesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/SalesInvProjectLedgerEntry.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/SalesCreditLinesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/SalesCrProjectLedgerEntry.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/OpportunityPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/OpportunityEntriesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/ItemBudgetNames.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Sales/APIs/ItemBudgetEntriesSales.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Purchasing/APIs/PurchaseLinesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Purchasing/APIs/PurchaseInvoiceLines.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Purchasing/APIs/PurchaseCreditLines.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Purchasing/APIs/PurchValueEntriesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Purchasing/APIs/PurchLinesItemReceived.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Purchasing/APIs/PurchLinesItemOutstd.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Purchasing/APIs/ItemBudgetEntriesPurch.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Projects/APIs/PurchLinesJobReceived.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Projects/APIs/PurchLinesJobOutstanding.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Projects/APIs/Jobs.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Projects/APIs/JobTasks.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Projects/APIs/JobPlanningLines.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Projects/APIs/JobLedgerEntriesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/WorkCenters.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/WorkCenterGroupsPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/RoutingsPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/RoutingLinksPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/ProdOrdersPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/ProdOrderRoutingLines.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/ProdOrderLinesManuf.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/ProdOrderCompManuf.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/ProdOrderCapacityNeeds.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/ManufacturingSetupPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/ManufValueEntriesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/MachineCenters.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/ItemLedgerEntriesProd.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/InvAdjEntOrderPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/CapacityLedgerEntries.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Manufacturing/APIs/CalendarEntries.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/Zones.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/WhseJournalLinesToBin.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/WhseJournalLinesFromBin.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/WarehouseEntries.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/WarehouseActivityLines.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/ValueEntriesItem.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/TransferLines.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/ServiceLinesOrder.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/SalesLinesOutstanding.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/RequisitionLines.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/PurchaseLinesOutstanding.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/ProdOrderLinesInvt.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/ProdOrderCompInvt.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/PlanningComponents.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/JobPlanningLinesItem.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/ItemLedgerEntriesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/Bins.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/AssemblyLinesItem.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Inventory/APIs/AssemblyHeadersOrder.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Finance/APIs/VendorLedgEntriesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Finance/APIs/GLIncomeStatementPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Finance/APIs/GLEntriesBalanceSheet.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Finance/APIs/GLBudgets.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Finance/APIs/GLBudgetEntriesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Finance/APIs/GLAccounts.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Finance/APIs/GLAccountCategories.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Finance/APIs/CustomerLedgerEntries.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Finance/APIs/CloseIncomeSourcePBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Finance/APIs/AccountCategories.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Core/APIs/ResourcesPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Core/APIs/PowerBIDimensionSetEntries.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Core/APIs/ItemsPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Core/APIs/DynamicDimensionsPBIAPI.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/PowerBIReports/App/Core/APIs/Dimensions.Query.al | Adds AboutText for Power BI query API |
| src/Apps/W1/APIReportsFinance/App/src/APIFinanceGLEntry.Query.al | Adds AboutText for finance reporting query API |
| src/Apps/W1/APIReportsFinance/App/src/APIFinanceGLBudgetEntry.Query.al | Adds AboutText for finance reporting query API |
| src/Apps/W1/APIReportsFinance/App/src/APIFinVendLedgEntry.Query.al | Adds AboutText for finance reporting query API |
| src/Apps/W1/APIReportsFinance/App/src/APIFinDtldVendLedgEntry.Query.al | Adds AboutText for finance reporting query API |
| src/Apps/W1/APIReportsFinance/App/src/APIFinDtldCustLedgEntry.Query.al | Adds AboutText for finance reporting query API |
| src/Apps/W1/APIReportsFinance/App/src/APIFinCustLedgEntry.Query.al | Adds AboutText for finance reporting query API |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…ddStandardAPITools Agent-Logs-Url: https://github.com/microsoft/BCApps/sessions/12003cc6-9304-41be-934e-d81c4eb8b0c2 Co-authored-by: onbuyuka <[email protected]>
…te/onbuyuka/mcpquery
…oft/BCApps into private/onbuyuka/mcpquery
- Add APIVersion filter to the query branch of AddStandardAPITools so it matches the page branch behavior (avoids adding duplicate v1.0/beta tools for the same standard API). - Add Mock APIV2 Query test fixture (empty publisher/group, v2.0) so the standard-API filter has something to match. - Assert query tool creation in TestAddStandardAPITools and TestAddToolsByAPIGroup - both previously verified only the page tool. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Summary
Changes
Core MCP Configuration (MCPConfigImplementation, MCPConfig):
UI:
API Query AboutText additions (86 queries):
Tests:
Fixes AB#631273