Repository navigation
Add design principles for line-of-business MCP apps - #121
Closed
kaul-vineet wants to merge 5 commits into
Closed
kaul-vineet wants to merge 5 commits into
kaul-vineet wants to merge 5 commits into
Conversation
added 4 commits
September 15, 2026 21:07
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 295ba6e5-2f05-42b2-a027-6e96c1aab030
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 295ba6e5-2f05-42b2-a027-6e96c1aab030
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 295ba6e5-2f05-42b2-a027-6e96c1aab030
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 295ba6e5-2f05-42b2-a027-6e96c1aab030
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 295ba6e5-2f05-42b2-a027-6e96c1aab030
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds detailed design and technical guidance for building line-of-business (LOB) MCP apps for Microsoft 365 Copilot. The article is intended for developers and architects integrating Copilot with enterprise systems such as Salesforce, ServiceNow, HubSpot, Dynamics 365, SAP, Workday, Jira, and Coupa.
LOB applications present challenges that aren't fully addressed by general MCP app guidance. They commonly have large and highly customized data models, complex record relationships, controlled values, long system-generated record IDs, source-specific permissions, consequential business actions, API throttling, and environment-specific workflows. Two organizations using the same LOB product can expose different fields, values, relationships, permissions, and processes.
The article provides reusable architecture and implementation patterns for addressing these challenges without reproducing the full LOB application inside Copilot. It recommends using the conversation to establish business context and focused app widgets for structured review, exploration, and action.
Guidance covered
The article explains how to map the target LOB data model before defining tools and how to keep agent instructions, MCP tool handlers, the LOB integration layer, and app widgets aligned with that model. It separates the responsibilities of each component so that business rules, validation, authorization, and API communication are enforced in the appropriate layer.
It describes how to select an authentication model based on the capabilities of the target LOB system, including delegated identity, application identity, and shared credentials. The guidance highlights the differences in downstream authorization and attribution for each model.
The user-experience guidance recommends building a contextual experience rather than replicating the LOB application or its screens. It covers focused app widgets, on-demand traversal of related business entities, avoiding heavy traversal screens for independent operations, and prefilling create forms with information already supplied through the conversation.
The tool-design guidance recommends exposing a focused set of recognizable business operations instead of mirroring an entire enterprise API. It also recommends reusing a small set of optimized list, detail, and form app widgets rather than creating a separate widget for every tool or entity.
The article introduces a two-call name-to-ID resolution pattern for viewing and editing records. The first call searches with recognizable business text and returns lightweight candidate records with stable IDs. If one record matches, the second call uses its ID directly. If multiple records match, the app widget displays a list with View or Edit controls bound to the corresponding IDs. This prevents an operation from being applied to the first or wrong matching record.
Additional patterns cover:
Reference implementations
The guidance is based on implementation patterns demonstrated by the Salesforce CRM, ServiceNow ITSM, and HubSpot CRM samples in the
mcp-interactiveUI-samplesrepository. It also links to the completed LOB MCP apps distributed through the Microsoft Copilot Agent Kit.Seven supporting images demonstrate related-record exploration, conversation-prefilled forms, filtered lists, server-side aggregation, relationship fields, relationship-resolution suggestions, and dedicated business actions.
Documentation placement
The article is added to the existing MCP server guidance in the Microsoft 365 Copilot extensibility documentation. It appears immediately after UX guidelines for MCP apps and before Add citations:
MCP servers → UX guidelines for MCP apps → Design line-of-business MCP apps → Add citations
Expected published URL:
https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/plugin-mcp-apps-lob-design-principlesFiles changed
docs/plugin-mcp-apps-lob-design-principles.md.docs/assets/images/lob-mcp-apps/.docs/TOC.ymlto add the article to the MCP app guidance.cspell.jsonwith valid LOB terminology used by the article.Validation
The article was validated with the repository-specific Markdown and spelling configurations: