Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las aplicaciones MCP son widgets de interfaz de usuario interactivos que se ejecutan dentro de Microsoft 365 Copilot, con tecnología de servidores de Protocolo de contexto de modelo (MCP). Permiten a los agentes declarativos ir más allá de las respuestas de texto y ofrecer experiencias enriquecidas y procesables directamente en el chat de Copilot. Puede agregar aplicaciones de MCP a sus agentes declarativos agregando un complemento basado en servidor MCP cuyas herramientas devuelven una interfaz de usuario interactiva. Microsoft 365 Copilot admite widgets de interfaz de usuario creados con los métodos siguientes.
- Aplicaciones MCP : una extensión de MCP que permite a los servidores MCP ofrecer interfaces de usuario interactivas a los hosts.
- OpenAI Apps SDK : herramientas para crear aplicaciones ChatGPT basadas en el estándar MCP Apps con funcionalidad adicional de ChatGPT.
Para ver ejemplos de complementos de servidor MCP, consulte Ejemplos de interfaz de usuario interactiva basada en MCP para Microsoft 365 Copilot en GitHub.
Para obtener más información sobre qué capacidades de las aplicaciones de MCP o del SDK de aplicaciones de OpenAI son compatibles, consulte Capacidades de las aplicaciones de MCP compatibles en Copilot.
Requisitos previos para las aplicaciones de MCP
- Requisitos especificados en Requisitos para las opciones de extensibilidad de Copilot
- Un servidor MCP remoto que proporciona widgets de interfaz de usuario o que puede modificar para implementar widgets de interfaz de usuario
- Una herramienta para ver las respuestas del servidor MCP, como MCP Inspector
- Visual Studio Code
- Kit de herramientas de agentes de Microsoft 365 (versión 6.12.0 o posterior)
Requisitos del servidor MCP para las aplicaciones de MCP
- Autenticación: Copilot admite OAuth 2.1 y el inicio de sesión único (SSO) de Microsoft Entra. Para fines de desarrollo, Copilot admite la autenticación anónima mediante la opción Ninguno en el Kit de herramientas de agentes. Para obtener más información sobre la autenticación, consulte Configuración de la autenticación para complementos de API en agentes.
-
Direcciones URL permitidas : tanto el servidor MCP como el proveedor de identidad deben permitir las siguientes direcciones URL.
- Dirección URL del host del widget para CORS: Copilot representa la interfaz de usuario del widget en un host específico del servidor MCP con la siguiente dirección URL:
{hashed-mcp-domain}.widget-renderer.usercontent.microsoft.com, donde{hashed-mcp-domain}está el hash SHA-256 del dominio del servidor MCP. Puede utilizar el generador de URL de host de widgets para generar la URL del host en función de la URL del servidor MCP. - URI de redireccionamiento de OAuth 2.1:
-
https://teams.microsoft.com/api/platform/v1.0/oAuthRedirectpara Copilot -
https://vscode.dev/redirectpara que Visual Studio Code recupere herramientas mediante el Kit de herramientas de agentes
-
- URI de redireccionamiento de SSO de Microsoft Entra:
-
https://teams.microsoft.com/api/platform/v1.0/oAuthConsentRedirectpara Copilot - Visual Studio Code no admite actualmente SSO para herramientas de captura
-
- Dirección URL del host del widget para CORS: Copilot representa la interfaz de usuario del widget en un host específico del servidor MCP con la siguiente dirección URL:
- Widgets de interfaz de usuario : implemente widgets de interfaz de usuario de acuerdo con los requisitos del SDK de aplicaciones de MCP u OpenAI Apps.
Procedimientos recomendados para aplicaciones de MCP en Copilot
Diseño de experiencia de usuario
Para obtener más información sobre los procedimientos recomendados de diseño de experiencia de usuario, consulte Directrices de experiencia de usuario para aplicaciones de MCP en agentes declarativos para Microsoft 365 Copilot.
Comprobar la disponibilidad de la API
No todas las API están disponibles en todas las window.openai.* plataformas o hosts. Las API no admitidas son undefined. Compruebe siempre la disponibilidad de la API y proporcione una reserva si la API no está disponible.
Ejemplos
Este sencillo patrón evita errores en tiempo de ejecución comprobando antes de llamar a la 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.
}
En este ejemplo, un botón para entrar en el modo de pantalla completa solo se representa si el host admite la 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>
);
}
Como alternativa, el widget puede comprobar la disponibilidad de todas las API que usa en el inicio y habilitar o deshabilitar las características en consecuencia.
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
}
Crear y transferir localmente el agente
La creación de un agente declarativo desde un servidor MCP, la configuración de la autenticación y la instalación de prueba son iguales independientemente de que el servidor devuelva widgets de interfaz de usuario o no. Para ver el tutorial completo, consulte Creación de un complemento para un agente declarativo desde un servidor MCP.
Tenga en cuenta las siguientes consideraciones de aplicaciones de MCP mientras sigue ese tutorial:
- El servidor MCP debe devolver widgets de interfaz de usuario de acuerdo con los requisitos de MCP Apps o OpenAI Apps SDK. Consulte Requisitos del servidor de MCP para las aplicaciones de MCP.
- De forma predeterminada, el agente usa la detección dinámica de herramientas y resuelve las herramientas del servidor (incluidas las herramientas que devuelven widgets de la interfaz de usuario) en tiempo de ejecución, por lo que no es necesario agregar herramientas manualmente. Si en su lugar anclas un conjunto fijo de herramientas, asegúrate de incluir al menos una herramienta que devuelva un widget de interfaz de usuario.
- Si el servidor MCP aún está en desarrollo y no implementa la autenticación, seleccione Ninguno como tipo de autenticación. Agregue autenticación antes de implementar en producción.
Prueba del agente
- Abra el explorador y vaya a https://m365.cloud.microsoft/chat.
- Seleccione su agente en la barra lateral izquierda. Si no ve a su agente, seleccione Todos los agentes.
- Pídale al agente que haga algo que invoque su servidor MCP.
- Permita que el agente se conecte al servidor MCP cuando se le solicite.
- Confirme que el agente representa el widget de interfaz de usuario.
Si el widget no aparece o no se comporta según lo esperado, consulte Solución de problemas de aplicaciones MCP en Microsoft 365 Copilot.
Funcionalidades de aplicaciones MCP admitidas en Copilot
Microsoft 365 Copilot admite las siguientes funcionalidades.
Puente de componentes
| OpenAI Apps SDK | Equivalente de Aplicaciones de MCP | ¿Se admite? |
|---|---|---|
window.openai.toolInput |
app.ontoolinput |
✅ |
window.openai.toolOutput |
app.ontoolresult |
✅ |
window.openai.toolResponseMetadata |
app.ontoolresult → params._meta |
✅ |
window.openai.widgetState |
— | ✅ |
window.openai.setWidgetState(state) |
No está disponible directamente. Utilice mecanismos alternativos, incluidos 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 }) |
✅ (solo pantalla completa) |
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() |
✅ |
Campos de _meta descriptores de herramientas
| OpenAI Apps SDK | Equivalente de Aplicaciones de MCP | ¿Se admite? |
|---|---|---|
_meta["openai/outputTemplate"] |
_meta.ui.resourceUri |
✅ |
_meta["openai/widgetAccessible"] |
_meta.ui.visibility (cadena[]) |
❌ |
_meta["openai/visibility"] |
_meta.ui.visibility (cadena[]) |
✅ |
_meta["openai/toolInvocation/invoking"] |
— | ❌ |
_meta["openai/toolInvocation/invoked"] |
— | ❌ |
_meta["openai/fileParams"] |
— | ❌ |
_meta["securitySchemes"] |
— | ❌ |
Anotaciones del descriptor de la herramienta
| OpenAI Apps SDK | Equivalente de Aplicaciones de MCP | ¿Se admite? |
|---|---|---|
readOnlyHint |
readOnlyHint |
✅ |
destructiveHint |
destructiveHint |
❌ |
openWorldHint |
openWorldHint |
❌ |
idempotentHint |
idempotentHint |
❌ |
Campos de _meta de recursos componentes
| OpenAI Apps SDK | Equivalente de Aplicaciones de MCP | ¿Se admite? |
|---|---|---|
_meta["openai/widgetDescription"] |
— | ❌ |
_meta["openai/widgetPrefersBorder"] |
_meta.ui.prefersBorder |
❌ |
_meta["openai/widgetCSP"] |
_meta.ui.csp |
✅ |
_meta["openai/widgetDomain"] |
_meta.ui.domain |
❌ |
| — | _meta.ui.permissions |
❌ |
Propiedades en el objeto CSP
| OpenAI Apps SDK | Equivalente de Aplicaciones de MCP | ¿Se admite? |
|---|---|---|
connect_domains |
connectDomains |
✅ |
resource_domains |
resourceDomains |
✅ |
frame_domains |
frameDomains |
❌ |
redirect_domains |
— | ❌ |
| — | baseUriDomains |
❌ |
Campos _meta resultados de herramientas proporcionadas por el host
| OpenAI Apps SDK | Equivalente de Aplicaciones de MCP | ¿Se admite? |
|---|---|---|
_meta["openai/widgetSessionId"] |
— | ❌ |
Campos de _meta proporcionados por el cliente
| OpenAI Apps SDK | Equivalente de Aplicaciones de MCP | ¿Se admite? |
|---|---|---|
_meta["openai/locale"] |
_meta["openai/locale"] |
✅ |
_meta["openai/userAgent"] |
_meta["openai/userAgent"] |
✅ |
_meta["openai/userLocation"] |
_meta["openai/userLocation"] |
✅ |
_meta["openai/subject"] |
— | ❌ |
Preguntas más frecuentes sobre las aplicaciones de MCP en Copilot
¿Qué son las aplicaciones MCP?
Las aplicaciones MCP son widgets de interfaz de usuario interactivos proporcionados por servidores MCP que se representan directamente dentro de Microsoft 365 Copilot. Amplían los agentes declarativos más allá de las respuestas de solo texto, lo que permite experiencias enriquecidas como visualizaciones de datos, formularios e interfaces de administración de tareas.
¿Cuál es la diferencia entre MCP Apps y OpenAI Apps SDK?
MCP Apps es una extensión abierta del estándar MCP que permite a los servidores MCP ofrecer interfaces de usuario interactivas a cualquier host compatible. El SDK de OpenAI Apps se basa en el estándar MCP Apps y agrega funcionalidad adicional específica para ChatGPT. Microsoft 365 Copilot admite ambos, aunque no todas las funcionalidades están disponibles. Consulte las funcionalidades de las aplicaciones de MCP compatibles en Copilot para obtener más información.
¿Puedo usar aplicaciones de MCP sin autenticación durante el desarrollo?
Sí. La autenticación anónima es compatible con fines de desarrollo. Sin embargo, debe agregar autenticación antes de implementar en producción. OAuth 2.1 y el inicio de sesión único (SSO) de Microsoft Entra son los métodos de autenticación admitidos. Para obtener más información, consulte Configuración de la autenticación para complementos de API en agentes.
Contenido relacionado
- Servidores MCP como capacidades del complemento
- Compilar o reutilizar servidores MCP
- Integrar y probar los componentes del plugin
- Empaquetar un complemento
- Validar un complemento
- Instrucciones de experiencia de usuario para aplicaciones de MCP en agentes declarativos para Microsoft 365 Copilot
- Solución de problemas de las aplicaciones de MCP en Microsoft 365 Copilot
- Ejemplos de interfaz de usuario interactiva basada en MCP para Microsoft 365 Copilot
- Compilar complementos desde un servidor MCP para Microsoft 365 Copilot
- Información general sobre las aplicaciones de MCP
- OpenAI Apps SDK