Добавление приложений MCP в декларативные агенты в Microsoft 365 Copilot

Приложения MCP — это интерактивные мини-приложения пользовательского интерфейса, которые выполняются внутри Microsoft 365 Copilot на основе серверов MCP. Они позволяют декларативным агентам выходить за рамки текстовых ответов и предоставлять широкие возможности непосредственно в чате Copilot. Приложения MCP можно добавить в декларативные агенты, добавив в агент действие на основе сервера MCP и расширив средства MCP, используемые агентом, чтобы включить пользовательский интерфейс. Microsoft 365 Copilot поддерживает мини-приложения пользовательского интерфейса, созданные с помощью следующих методов.

  • Приложения MCP — расширение для MCP, которое позволяет серверам MCP предоставлять интерактивные пользовательские интерфейсы узлам.
  • OpenAI Apps SDK — средства для создания приложений ChatGPT на основе стандарта приложений MCP с дополнительными функциями ChatGPT.

Примеры подключаемых модулей сервера MCP см. в статье Примеры интерактивного пользовательского интерфейса на основе MCP для Microsoft 365 Copilot на GitHub.

Дополнительные сведения о поддерживаемых возможностях MCP Apps или OpenAI Apps SDK см. в разделе Поддерживаемые возможности приложений MCP в Copilot.

Снимок экрана: приложение MCP отрисовки мини-приложения встроенных задач Sprint в Microsoft 365 Copilot

Снимок экрана приложения MCP, отображающего мини-приложение

Предварительные требования для приложений MCP

Требования к серверу MCP для приложений MCP

  • Проверка подлинности. Поддерживается единый вход OAuth 2.1 и Microsoft Entra. Анонимная проверка подлинности поддерживается в целях разработки. Дополнительные сведения о проверке подлинности см. в разделе Настройка проверки подлинности для подключаемых модулей API в агентах.
  • Разрешенные URL-адреса . Следующие URL-адреса должны быть разрешены как сервером MCP, так и поставщиком удостоверений.
    • 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 для получения средств с помощью набора средств агентов
    • Microsoft Entra URI перенаправления единого входа:
      • https://teams.microsoft.com/api/platform/v1.0/oAuthConsentRedirect для Copilot
      • Visual Studio Code в настоящее время не поддерживает единый вход для получения средств.
  • Мини-приложения пользовательского интерфейса . Мини-приложения пользовательского интерфейса должны быть реализованы в соответствии с требованиями к пакетам SDK приложений MCP или OpenAI Apps.

Рекомендации по работе с приложениями MCP в Copilot

Проектирование взаимодействия с пользователем

Дополнительные сведения о рекомендациях по проектированию пользовательского интерфейса см. в статье Руководство по работе с пользователем для приложений 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
}

Создание декларативного агента

  1. Откройте Visual Studio Code и щелкните значок Microsoft 365 Agents Toolkit на панели действий слева.

  2. Выберите Создать агент или приложение в области задач Набор агентов.

    Снимок экрана: интерфейс набора средств агентов

  3. Выберите Декларативный агент.

  4. Выберите Добавить действие, а затем — Начать с сервера MCP. При появлении запроса выберите Удаленный сервер MCP.

  5. Введите URL-адрес сервера MCP.

  6. Выберите расположение для проекта агента.

  7. Введите имя агента.

После выполнения этих действий набор средств агентов создает необходимые файлы для агента и открывает новое окно Visual Studio Code с загруженным проектом агента.

Обновление и загрузка неопубликованного агента

  1. Откройте vscode/mcp.json файл. Нажмите кнопку Пуск в редакторе файлов.

  2. В редакторе файлов выберите действие ATK: выборка из MCP , а затем выберите ai-plugin.json.

    Снимок экрана: действие

  3. Выберите средства, которые будет использовать агент, и нажмите кнопку ОК. Обязательно выберите хотя бы одно средство с мини-приложением пользовательского интерфейса.

  4. Выберите подходящий тип проверки подлинности.

    Снимок экрана: запрос на выбор типа проверки подлинности

    Важно!

    Если сервер MCP находится в разработке и не реализует проверку подлинности, этот шаг пропускается. После добавления проверки подлинности на сервер необходимо вручную добавить проверку подлинности в манифест.

  5. Щелкните значок Microsoft 365 Agents Toolkit на панели действий слева.

  6. В области Учетные записи выберите Войти в Microsoft 365. (Если вы уже вошли в систему, перейдите к следующему шагу.

  7. Убедитесь, что в вашей учетной записи Microsoft 365 отображаются настраиваемые функции отправки приложений и доступ Copilot. В противном случае проверка с администратором организации. Дополнительные сведения см. в разделе Требования к параметрам расширяемости Copilot.

  8. В области Жизненный цикл выберите Подготовка.

  9. При появлении запроса добавьте сведения о проверке подлинности.

  10. Дождитесь, пока набор средств сообщит о завершении подготовки.

Протестируйте агент

  1. В браузере перейдите по адресу https://m365.cloud.microsoft/chat.
  2. Выберите агент на левой боковой панели. Если агент не отображается, выберите Все агенты.
  3. Попросите агента выполнить что-то, что вызывает сервер MCP.
  4. Разрешите агенту подключаться к серверу MCP при появлении запроса.
  5. Агент отрисовывает мини-приложение пользовательского интерфейса.

Если мини-приложение не отображается или работает должным образом, см. статью Устранение неполадок приложений 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.ontoolresultparams._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 (string[])
_meta["openai/visibility"] _meta.ui.visibility (string[])
_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 _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 Apps основан на стандарте приложений MCP и добавляет дополнительные функции, характерные для ChatGPT. Microsoft 365 Copilot поддерживает и то, и другое, хотя доступны не все возможности. Дополнительные сведения см. в статье Поддерживаемые возможности приложений MCP в Copilot .

Можно ли использовать приложения MCP без проверки подлинности во время разработки?

Да. Анонимная проверка подлинности поддерживается в целях разработки. Однако перед развертыванием в рабочей среде необходимо добавить проверку подлинности. OAuth 2.1 и Microsoft Entra единый вход (SSO) — это поддерживаемые методы проверки подлинности. Дополнительные сведения см . в разделе Настройка проверки подлинности для подключаемых модулей API в агентах.