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.
El Protocolo de contexto de modelo (MCP) es un estándar abierto que permite a las aplicaciones de inteligencia artificial conectarse de forma segura con herramientas externas, orígenes de datos y servicios. MSAL Browser admite flujos MCP aplicando que todas las solicitudes de token incluyan un resource parámetro y almacene en caché los tokens de acceso con clave de ese recurso.
Note
Los flujos de MCP se admiten para las aplicaciones de explorador estándar que usan PublicClientApplication y las aplicaciones de autenticación de aplicaciones anidadas (NAA) mediante createNestablePublicClientApplication.
Para las implementaciones del lado servidor, consulte Flujos de MCP del nodo MSAL.
Prerequisites
- Registro de una aplicación en la plataforma de identidad de Microsoft
-
@azure/msal-browserv5 o superior instalada en tu proyecto
Habilitación de MCP
Establezca isMcp: true en la configuración auth al crear su PublicClientApplication:
const msalConfig = {
auth: {
clientId: "your-client-id",
authority: "https://login.microsoftonline.com/common",
isMcp: true,
},
};
const pca = new msal.PublicClientApplication(msalConfig);
Para las aplicaciones NAA, use la misma configuración con createNestablePublicClientApplication:
const pca = await msal.createNestablePublicClientApplication(msalConfig);
Parámetro de recurso
Cuando isMcp es true, cada solicitud de token debe incluir un resource parámetro. Si se omite, se produce un resource_parameter_required error.
const tokenRequest = {
scopes: ["User.Read"],
resource: "https://example.microsoft.com",
};
Importante
Establezca el resource parámetro directamente en el objeto de solicitud. No lo pases a través de extraQueryParameters o de extraParameters al mismo tiempo que la propiedad resource; al hacerlo, se genera un error misplaced_resource_parameter.
En el ejemplo siguiente se muestran las formas correctas e incorrectas de establecer el resource parámetro :
// Correct
const request = {
scopes: ["User.Read"],
resource: "https://example.microsoft.com",
};
// Wrong — resource in both locations
const request = {
scopes: ["User.Read"],
resource: "https://example.microsoft.com",
extraQueryParameters: { resource: "https://example.microsoft.com" },
};
Almacenamiento en caché con ámbito de recurso
Cuando isMcp está habilitado, los tokens de acceso se almacenan en caché con su recurso asociado. Este comportamiento afecta a la adquisición silenciosa de tokens:
- Acceso a la caché: si existe un token de acceso almacenado en caché para los mismos ámbitos y recurso, se devuelve desde la caché.
- Error de caché: si el recurso solicitado no coincide con ningún token almacenado en caché, MSAL vuelve a la red para adquirir un nuevo token para el recurso solicitado.
// First request — acquires token from network
const token1 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-a.microsoft.com",
account: account,
});
// Same resource — returns cached token
const token2 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-a.microsoft.com",
account: account,
});
// Different resource — falls back to network
const token3 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-b.microsoft.com",
account: account,
});
Gestión de errores
Dos errores son específicos de los flujos de MCP:
| Código de error | Description |
|---|---|
resource_parameter_required |
isMcp es true pero la solicitud no incluye un resource parámetro . |
misplaced_resource_parameter |
Se encontró resource tanto en la propiedad resource como en extraQueryParameters o extraParameters. Use solo una. |
Ambos errores se lanzan como ClientAuthError. Para obtener más información, consulte la documentación de errores.