Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения MCP — это интерактивные мини-приложения пользовательского интерфейса, работающие внутри Microsoft 365 Copilot на платформе серверов протокола контекста модели (MCP). Они позволяют декларативным агентам выходить за рамки текстовых ответов и предоставлять обширные и полезные интерфейсы непосредственно в чате Copilot. Вы можете добавить приложения MCP к своим декларативным агентам, добавив подключаемый модуль на основе сервера MCP , инструменты которого возвращают интерактивный пользовательский интерфейс. Microsoft 365 Copilot поддерживает мини-приложения пользовательского интерфейса, созданные с помощью следующих методов.
- MCP-приложения — расширение MCP, позволяющее MCP-серверам предоставлять интерактивные пользовательские интерфейсы узлам.
- OpenAI Apps SDK — инструменты для создания приложений ChatGPT на основе стандарта MCP Apps с дополнительной функциональностью ChatGPT.
Например, см. примеры подключаемых модулей сервера MCP, см. примеры интерактивного пользовательского интерфейса на основе MCP для Microsoft 365 Copilot на GitHub.
Подробнее о том, какие приложения MCP или возможности пакета SDK приложений OpenAI поддерживаются, см. в разделе Поддерживаемые возможности приложений MCP в Copilot.
Предварительные требования для приложений MCP
- Требования, указанные в разделе Требования к параметрам расширяемости Copilot
- Удаленный сервер MCP, предоставляющий мини-приложения пользовательского интерфейса или изменяемый для реализации мини-приложений пользовательского интерфейса
- Средство для просмотра ответов сервера MCP, например инспектор MCP
- Visual Studio Code
- Набор средств для агентов Microsoft 365 (версия 6.12.0 или более поздняя)
Требования к серверу MCP для приложений MCP
- Проверка подлинности - Copilot поддерживает OAuth 2.1 и единый вход (SSO) Microsoft Entra. В целях разработки Copilot поддерживает анонимную проверку подлинности с помощью параметра "Нет " в наборе средств агентов. Дополнительные сведения об аутентификации см. в разделе Настройка аутентификации для плагинов API в агентах.
-
Разрешенные URL-адреса . Как сервер MCP, так и поставщик удостоверений должны разрешить следующие URL-адреса.
- URL-адрес узла мини-приложений для CORS — Copilot отображает пользовательский интерфейс мини-приложения под узлом, специфичным для сервера MCP, со следующим URL-адресом:
{hashed-mcp-domain}.widget-renderer.usercontent.microsoft.comгде{hashed-mcp-domain}— хэш SHA-256 домена сервера MCP. Генератор URL-адресов узлов мини-приложений можно использовать для создания URL-адреса узла на основе URL-адреса сервера MCP. - URI перенаправления OAuth 2.1:
-
https://teams.microsoft.com/api/platform/v1.0/oAuthRedirectдля Copilot -
https://vscode.dev/redirectдля получения инструментов Visual Studio Code с помощью набора средств агентов
-
- URI перенаправления единого входа Microsoft Entra:
-
https://teams.microsoft.com/api/platform/v1.0/oAuthConsentRedirectдля Copilot - В настоящее время Visual Studio Code не поддерживает единый вход для средств получения
-
- URL-адрес узла мини-приложений для CORS — Copilot отображает пользовательский интерфейс мини-приложения под узлом, специфичным для сервера MCP, со следующим URL-адресом:
- Мини-приложения пользовательского интерфейса — реализуйте мини-приложения пользовательского интерфейса в соответствии с требованиями MCP Apps или OpenAI Apps SDK.
Рекомендации по приложениям MCP в Copilot
Дизайн пользовательского опыта
Дополнительные сведения о рекомендациях по проектированию UX см. в руководстве по взаимодействию с пользователем для приложений MCP в декларативных агентах для Microsoft 365 Copilot.
Проверка доступности API
Не все window.openai.* API доступны на каждой платформе или узле. Неподдерживаемые API .undefined Всегда проверка доступность API и предоставлять резервные варианты, если API недоступен.
Примеры
Этот простой шаблон позволяет избежать ошибок во время выполнения за счет проверки перед вызовом API.
if (window.openai.callTool) {
const result = await window.openai.callTool({ name: 'myTool', params: {} });
} else {
// Handle unsupported case — show fallback UI, skip the feature, etc.
}
В этом примере кнопка перехода в полноэкранный режим отображается только в том случае, если узел поддерживает requestDisplayMode API.
function FullScreenButton() {
// Don't render the button if the host doesn't support it
if (!window.openai.requestDisplayMode) {
return null;
}
return (
<button onClick={() => window.openai.requestDisplayMode({ mode: 'fullscreen' })}>
Enter Fullscreen
</button>
);
}
Кроме того, мини-приложение может проверка доступность всех API, которые оно использует при запуске, и соответствующим образом включать или отключать функции.
interface PlatformCapabilities {
canCallTools: boolean;
canChangeDisplayMode: boolean;
canSendMessages: boolean;
}
function detectCapabilities(): PlatformCapabilities {
return {
canCallTools: !!window.openai.callTool,
canChangeDisplayMode: !!window.openai.requestDisplayMode,
canSendMessages: !!window.openai.sendMessage,
};
}
// Use at widget startup
const capabilities = detectCapabilities();
if (!capabilities.canCallTools) {
// Show a reduced-functionality experience
}
Создание и загрузка неопубликованного агента
Создание декларативного агента из сервера MCP, настройка проверки подлинности и загрузка неопубликованного приложения — это одно и то же, независимо от того, возвращает ли сервер мини-приложения пользовательского интерфейса или нет. Полное руководство см. в статье Создание подключаемого модуля для декларативного агента из сервера MCP.
При выполнении этого руководства учитывайте следующие рекомендации для приложений MCP.
- Сервер MCP должен возвращать мини-приложения пользовательского интерфейса в соответствии с требованиями MCP Apps или OpenAI Apps SDK. См. требования к серверу MCP для приложений MCP.
- По умолчанию агент использует динамическое обнаружение средств и разрешает средства сервера, включая инструменты, возвращающие мини-приложения пользовательского интерфейса, во время выполнения, поэтому вам не нужно добавлять инструменты вручную. Если вместо этого вы закрепили фиксированный набор инструментов, обязательно включите хотя бы одно средство, которое возвращает мини-приложение пользовательского интерфейса.
- Если сервер MCP все еще находится в разработке и проверка подлинности не реализуется, выберите тип проверки подлинности "Нет ". Добавьте проверку подлинности перед развертыванием в рабочую среду.
Протестируйте агент
- В браузере перейдите по адресу https://m365.cloud.microsoft/chat.
- Выберите агента на левой боковой панели. Если агент не отображается, выберите "Все агенты".
- Попросите агента выполнить действие, вызывающее сервер MCP.
- Разрешите агенту подключиться к серверу MCP при появлении соответствующего запроса.
- Убедитесь, что агент отрисовывает мини-приложение пользовательского интерфейса.
Если мини-приложение не отображается или не работает должным образом, см. статью Устранение неполадок с приложениями MCP в Microsoft 365 Copilot.
Поддерживаемые возможности приложений MCP в Copilot
Microsoft 365 Copilot поддерживает следующие возможности.
Компонентный мост
| SDK приложений OpenAI | Эквивалент приложений MCP | Поддержка |
|---|---|---|
window.openai.toolInput |
app.ontoolinput |
✅ |
window.openai.toolOutput |
app.ontoolresult |
✅ |
window.openai.toolResponseMetadata |
app.ontoolresult → params._meta |
✅ |
window.openai.widgetState |
— | ✅ |
window.openai.setWidgetState(state) |
Недоступно напрямую. Используйте альтернативные механизмы, включая app.updateModelContext() |
✅ |
window.openai.callTool(name, args) |
app.callServerTool({ name, arguments }) |
✅ |
window.openai.sendFollowUpMessage({ prompt }) |
app.sendMessage({ ... }) |
✅ |
window.openai.uploadFile(file) |
— | ❌ |
window.openai.getFileDownloadUrl({ fileId }) |
— | ❌ |
window.openai.requestDisplayMode(...) |
app.requestDisplayMode({ mode }) |
✅ (только во весь экран) |
window.openai.requestModal(...) |
— | ❌ |
window.openai.notifyIntrinsicHeight(...) |
app.sendSizeChanged({ width, height }) |
✅ |
window.openai.openExternal({ href }) |
app.openLink({ url }) |
✅ |
window.openai.setOpenInAppUrl({ href }) |
— | ✅ |
window.openai.theme |
app.getHostContext()?.theme |
✅ |
window.openai.displayMode |
app.getHostContext()?.displayMode |
✅ |
window.openai.maxHeight |
app.getHostContext()?.viewport?.maxHeight |
✅ |
window.openai.safeArea |
app.getHostContext()?.safeAreaInsets |
✅ |
window.openai.view |
— | ✅ |
window.openai.userAgent |
app.getHostContext()?.userAgent |
✅ |
window.openai.locale |
app.getHostContext()?.locale |
✅ |
| — | app.ontoolinputpartial |
❌ |
| — | app.ontoolcancelled |
❌ |
| — | app.getHostContext()?.availableDisplayModes |
❌ |
| — | app.getHostContext()?.toolInfo |
❌ |
| — | app.onhostcontextchanged |
❌ |
| — | app.onteardown |
❌ |
| — | app.sendLog({ level, data }) |
❌ |
| — | app.getHostVersion() |
❌ |
| — | app.getHostCapabilities() |
✅ |
Дескриптор инструмента _meta поля
| SDK приложений OpenAI | Эквивалент приложений MCP | Поддержка |
|---|---|---|
_meta["openai/outputTemplate"] |
_meta.ui.resourceUri |
✅ |
_meta["openai/widgetAccessible"] |
_meta.ui.visibility (строка[]) |
❌ |
_meta["openai/visibility"] |
_meta.ui.visibility (строка[]) |
✅ |
_meta["openai/toolInvocation/invoking"] |
— | ❌ |
_meta["openai/toolInvocation/invoked"] |
— | ❌ |
_meta["openai/fileParams"] |
— | ❌ |
_meta["securitySchemes"] |
— | ❌ |
Аннотации дескрипторов инструментов
| SDK приложений OpenAI | Эквивалент приложений MCP | Поддержка |
|---|---|---|
readOnlyHint |
readOnlyHint |
✅ |
destructiveHint |
destructiveHint |
❌ |
openWorldHint |
openWorldHint |
❌ |
idempotentHint |
idempotentHint |
❌ |
Поля _meta ресурсов компонента
| SDK приложений OpenAI | Эквивалент приложений MCP | Поддержка |
|---|---|---|
_meta["openai/widgetDescription"] |
— | ❌ |
_meta["openai/widgetPrefersBorder"] |
_meta.ui.prefersBorder |
❌ |
_meta["openai/widgetCSP"] |
_meta.ui.csp |
✅ |
_meta["openai/widgetDomain"] |
_meta.ui.domain |
❌ |
| — | _meta.ui.permissions |
❌ |
Свойства в объекте CSP
| SDK приложений OpenAI | Эквивалент приложений MCP | Поддержка |
|---|---|---|
connect_domains |
connectDomains |
✅ |
resource_domains |
resourceDomains |
✅ |
frame_domains |
frameDomains |
❌ |
redirect_domains |
— | ❌ |
| — | baseUriDomains |
❌ |
Поля результатов _meta средства, предоставленные организатором
| SDK приложений OpenAI | Эквивалент приложений MCP | Поддержка |
|---|---|---|
_meta["openai/widgetSessionId"] |
— | ❌ |
Поля _meta, предоставляемые клиентом
| SDK приложений OpenAI | Эквивалент приложений MCP | Поддержка |
|---|---|---|
_meta["openai/locale"] |
_meta["openai/locale"] |
✅ |
_meta["openai/userAgent"] |
_meta["openai/userAgent"] |
✅ |
_meta["openai/userLocation"] |
_meta["openai/userLocation"] |
✅ |
_meta["openai/subject"] |
— | ❌ |
Вопросы и ответы о приложениях MCP в Copilot
Что такое приложения MCP?
Приложения MCP — это интерактивные мини-приложения пользовательского интерфейса, предоставляемые серверами MCP, которые отображаются непосредственно в Microsoft 365 Copilot. Они расширяют возможности декларативных агентов, выходя за рамки текстовых ответов, обеспечивая широкие возможности, такие как визуализация данных, формы и интерфейсы управления задачами.
В чем разница между приложениями MCP и пакетом SDK приложений OpenAI?
Приложения MCP — это открытое расширение стандарта MCP, позволяющее серверам MCP доставлять интерактивные пользовательские интерфейсы на любой совместимый узел. SDK приложений OpenAI основан на стандарте MCP Apps и добавляет дополнительные функции, специфичные для ChatGPT. Microsoft 365 Copilot поддерживает оба решения, хотя не все возможности доступны. Подробные сведения см. в разделе "Поддерживаемые возможности приложений MCP" в Copilot .
Можно ли использовать приложения MCP без проверки подлинности во время разработки?
Да. Анонимная проверка подлинности поддерживается для целей разработки. Однако перед развертыванием в рабочей среде необходимо добавить проверку подлинности. В качестве поддерживаемых методов проверки подлинности OAuth 2.1 и единого входа (SSO) Microsoft Entra можно использовать следующие методы проверки подлинности. Подробнее см. в разделе Настройка аутентификации для плагинов API в агентах.
Связанные материалы
- MCP-серверы как возможности подключаемого модуля
- Создание и повторное использование серверов MCP
- Интеграция и тестирование компонентов подключаемого модуля
- Упаковка подключаемого модуля
- Проверка подключаемого модуля
- Рекомендации по взаимодействию с пользователем для приложений MCP в декларативных агентах для Microsoft 365 Copilot
- Устранение неполадок с приложениями MCP в Microsoft 365 Copilot
- Примеры интерактивного пользовательского интерфейса на основе MCP для Microsoft 365 Copilot
- Создавайте подключаемые модули на основе сервера MCP для Microsoft 365 Copilot
- Обзор приложений MCP
- SDK приложений OpenAI