Codeunit 8351 "MCP Config Implementation"
System Application · System.MCP
Across versions
- BC23-26not present
- BC27added
- BC2855 procedures added, 6 procedures removed
- BC2926 procedures added, 7 procedures removed
- BC301 procedures added
Neighbourhood 21 connected objects and pages
System Application · System.MCP · BC27-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| Access | Internal |
Procedures
GetConfigurationIdByName(Name: Text[100]): Guid(internal)CreateConfiguration(Name: Text[100]; Description: Text[250]): Guid(internal)ActivateConfiguration(ConfigId: Guid; Active: Boolean)(internal)AllowCreateUpdateDeleteTools(ConfigId: Guid; Allow: Boolean)(internal)DisableCreateUpdateDeleteToolsInConfig(ConfigId: Guid)(internal)DeleteConfiguration(ConfigId: Guid)(internal)CopyConfiguration(SourceConfigId: Guid)(internal)CopyConfiguration(SourceConfigId: Guid; NewName: Text[100]; NewDescription: Text[250]): Guid(internal)EnableDynamicToolMode(ConfigId: Guid; Enable: Boolean)(internal)EnableDiscoverReadOnlyObjects(ConfigId: Guid; Enable: Boolean)(internal)EnableAPITools(ConfigId: Guid; Enable: Boolean)+ BC29 (internal)EnableDataQueryTools(ConfigId: Guid; Enable: Boolean)+ BC29 (internal)IsAPIToolsEnabled(ConfigId: Guid): Boolean+ BC29 (internal)IsDataQueryToolsEnabled(ConfigId: Guid): Boolean+ BC29 (internal)CreateDefaultConfiguration()(internal)IsDefaultConfiguration(MCPConfiguration: Record "MCP Configuration"): Boolean(internal)IsDesignatedDefaultConfiguration(MCPConfiguration: Record "MCP Configuration"): Boolean+ BC28 (internal)SetAsDefaultConfiguration(ConfigId: Guid)+ BC28 (internal)ClearDefaultConfiguration()+ BC28 (internal)IsConfigurationActive(ConfigId: Guid): Boolean+ BC28 (internal)ValidateConfiguration(var MCPConfiguration: Record "MCP Configuration"; OnActivate: Boolean)+ BC28 (internal)FindWarningsForConfiguration(ConfigId: Guid; var MCPConfigurationWarning: Record "MCP Config Warning"): Boolean+ BC28 (internal)GetWarningMessage(MCPConfigWarning: Record "MCP Config Warning"): Text+ BC28 (internal)GetRecommendedAction(MCPConfigWarning: Record "MCP Config Warning"): Text+ BC28 (internal)ApplyRecommendedActions(var MCPConfigWarning: Record "MCP Config Warning")+ BC28 (internal)ApplyRecommendedAction(var MCPConfigWarning: Record "MCP Config Warning")+ BC28 (internal)CreateAPIPageTool(ConfigId: Guid; APIPageId: Integer; ValidateAPIPublisher: Boolean): Guid+ BC28 (internal)GetAPIToolId(ConfigId: Guid; ObjectId: Integer; ObjectType: Option): Guid+ BC28 − BC28 (internal)CreateAPIQueryTool(ConfigId: Guid; QueryAPIId: Integer): Guid+ BC28 (internal)CreateAPICodeunitTool(ConfigId: Guid; CodeunitAPIId: Integer): Guid+ BC29 (internal)DeleteTool(ToolId: Guid)(internal)AllowRead(ToolId: Guid; Allow: Boolean)(internal)AllowCreate(ToolId: Guid; Allow: Boolean)(internal)AllowModify(ToolId: Guid; Allow: Boolean)(internal)AllowDelete(ToolId: Guid; Allow: Boolean)(internal)AllowActions(ToolId: Guid; Allow: Boolean)+ BC29 (internal)LookupAPIObjects(var SelectedObjects: Record "MCP API Object Buffer"; ObjectType: Option; TypeFilter: Boolean): Boolean+ BC29 (internal)GetAPIPublishers(var MCPAPIPublisherGroup: Record "MCP API Publisher Group")(internal)LookupAPIPublisher(var MCPAPIPublisherGroup: Record "MCP API Publisher Group"; var APIPublisher: Text; var APIGroup: Text)(internal)LookupAPIGroup(var MCPAPIPublisherGroup: Record "MCP API Publisher Group"; APIPublisher: Text; var APIGroup: Text)(internal)ResolvePublisherForGroup(var MCPAPIPublisherGroup: Record "MCP API Publisher Group"; var APIPublisher: Text; APIGroupValue: Text)+ BC29 (internal)ValidateAPIPageTool(PageId: Integer; ValidateAPIPublisher: Boolean)+ BC28 Δ BC29 (internal)ValidateAPIQueryTool(QueryId: Integer)+ BC28 Δ BC29 (internal)ValidateAPICodeunitTool(CodeunitId: Integer)+ BC29 (internal)AddToolsByAPIGroup(ConfigId: Guid)(internal)AddStandardAPITools(ConfigId: Guid)(internal)CheckAPIToolExists(ConfigId: Guid; ObjectId: Integer; ObjectType: Option): Boolean+ BC28 − BC28 (internal)GetObjectCaption(ToolId: Guid): Text[100](internal)ValidateAPIPageVersion(ObjectId: Integer; APIVersion: Text)+ BC28 (internal)ValidateAPIQueryVersion(ObjectId: Integer; APIVersion: Text)+ BC28 (internal)ValidateAPICodeunitVersion(ObjectId: Integer; APIVersion: Text)+ BC29 (internal)LookupAPIPageVersions(PageId: Integer; var APIVersion: Text[30])+ BC28 (internal)LookupAPIQueryVersions(QueryId: Integer; var APIVersion: Text[30])+ BC28 (internal)LookupAPICodeunitVersions(CodeunitId: Integer; var APIVersion: Text[30])+ BC29 (internal)GetHighestAPIPageVersion(PageId: Integer): Text[30]+ BC28 + BC29 − BC29 (internal)GetHighestAPIQueryVersion(QueryId: Integer): Text[30]+ BC28 + BC29 − BC29 (internal)GetHighestAPICodeunitVersion(CodeunitId: Integer): Text[30]+ BC29 (internal)IsAPIPage(PageId: Integer): Boolean+ BC29 (internal)CreateVSCodeEntraApplication()+ BC28 (internal)ShowConnectionString(ConfigurationName: Text[100])+ BC28 (internal)GenerateConnectionString(ConfigurationName: Text[100]): Text+ BC28 (internal)EncodeForMCPHeaderIfNonAscii(Value: Text): Text+ BC28 (internal)CreateEntraApplication(Name: Text[100]; Description: Text[250]; ClientId: Guid)+ BC28 (internal)DeleteEntraApplication(Name: Text[100])+ BC28 (internal)ExportConfigurationToFile(ConfigId: Guid; ConfigName: Text[100])+ BC28 (internal)ImportConfigurationFromFile()+ BC28 (internal)ExportConfiguration(ConfigId: Guid; var OutStream: OutStream)+ BC28 (internal)ImportConfiguration(var InStream: InStream; NewName: Text[100]; NewDescription: Text[250]): Guid+ BC28 (internal)TriggerNoActiveConfigsFeedback()+ BC28 (internal)TriggerGeneralFeedback()+ BC28 (internal)HasNoActiveConfigurations(): Boolean+ BC28 (internal)GetTelemetryCategory(): Text[50](internal)LogConfigurationCreated(MCPConfiguration: Record "MCP Configuration")+ BC28 (internal)LogConfigurationModified(MCPConfiguration: Record "MCP Configuration"; xMCPConfiguration: Record "MCP Configuration")+ BC28 (internal)LogConfigurationDeleted(MCPConfiguration: Record "MCP Configuration")+ BC28 (internal)
Plus 26 local procedures.
Calls
From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an Object::"Name" argument. Interface dispatch and calls through events are not counted, so the list is not complete.
- Codeunit 4100 “Temp Blob” (4 calls:
ExportConfigurationToFile → CreateInStream,ExportConfigurationToFile → CreateOutStream,ImportConfigurationFromFile → CreateInStream, …) - Codeunit 1590 “Microsoft User Feedback” (3 calls:
TriggerGeneralFeedback → RequestFeedback,TriggerNoActiveConfigsFeedback → RequestDislikeFeedback,TriggerNoActiveConfigsFeedback → WithCustomQuestion) - Page 8356 “MCP API Publisher Lookup” (3 calls:
LookupAPIGroup → (object),LookupAPIPublisher → (object),ResolvePublisherForGroup → (object)) - Codeunit 457 “Environment Information” (2 calls:
GenerateConnectionString → GetEnvironmentName,GenerateConnectionString → IsSaaS) - Codeunit 3060 “Uri” (1 call:
IsTIEEnvironment → AreURIsHaveSameHost) - Codeunit 3960 “Regex” (1 call:
EncodeForMCPHeaderIfNonAscii → IsMatch) - Codeunit 4110 “Base64 Convert” (1 call:
EncodeForMCPHeaderIfNonAscii → ToBase64) - Codeunit 433 “Azure AD Tenant” (1 call:
GenerateConnectionString → GetAadTenantId) - Page 8359 “MCP Config Warning List” (1 call:
ValidateConfiguration → (object)) - Page 8366 “MCP API Version Lookup” (1 call:
LookupAPIObjectVersions → (object))
Called by
- Codeunit 8350 “MCP Config” (28 calls:
ActivateConfiguration → ActivateConfiguration,AllowActions → AllowActions,AllowCreate → AllowCreate, …) - Page 8351 “MCP Config Card” (4 calls:
OnAfterGetRecord → IsDefaultConfiguration,OnDeleteRecord → LogConfigurationDeleted,OnInsertRecord → LogConfigurationCreated, …) - Codeunit 8354 “MCP Config Missing Parent” (3 calls:
ApplyRecommendedAction → CheckAPIToolExists,ApplyRecommendedAction → CreateAPIPageTool,CheckForWarnings → IsAPIPage) - Page 8350 “MCP Config List” (3 calls:
OnOpenPage → HasNoActiveConfigurations,OnQueryClosePage → HasNoActiveConfigurations,OnQueryClosePage → TriggerNoActiveConfigsFeedback) - Page 8352 “MCP Config Tool List” (3 calls:
AddAPIObjects → CheckAPIToolExists,AddAPIObjects → LookupAPIObjects,OnOpenPage → IsConfigurationActive) - Codeunit 8352 “MCP Install” (2 calls:
OnInstallAppPerDatabase → CreateDefaultConfiguration,OnInstallAppPerDatabase → CreateVSCodeEntraApplication) - Codeunit 8356 “MCP Upgrade” (2 calls:
UpgradeMCPAPIToolVersion → GetHighestAPIPageVersion,UpgradeMCPAPIToolVersion → IsAPIPage) - Codeunit 8368 “MCP Data Query Tools Feature” (2 calls:
IsActive → IsDataQueryToolsEnabled,SetActive → EnableDataQueryTools) - Codeunit 8369 “MCP API Tools Feature” (2 calls:
IsActive → IsAPIToolsEnabled,SetActive → EnableAPITools) - Codeunit 8370 “MCP Dyn. Tool Mode Feature” (1 call:
SetActive → EnableDynamicToolMode) - Page 8369 “MCP Server Feature Settings” (1 call:
SaveChanges → EnableDiscoverReadOnlyObjects)
Recent changes
- 2026-10-07 #12207 [MCP] Prepare Data Query Tools for billing (main, BC30, feature)
- 2026-08-20 #10008 [MCP] Add codeunit APIs as MCP tools in MCP configuration (main, BC30, feature)
- 2026-07-27 #8085 [MCP] Server Features in MCP configuration: API Tools, Dynamic Tool Mode, Data Query Tools (Preview) (main, BC30, feature)
Ask your agent
Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "codeunit", object_name: "MCP Config Implementation"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.