Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O PROTOCOLO MCP (Model Context Protocol) é um padrão aberto que permite que os aplicativos de IA se conectem com segurança com ferramentas externas, fontes de dados e serviços. O MSAL Browser dá suporte a fluxos MCP impondo que todas as solicitações de token incluam um resource parâmetro e tokens de acesso de cache chaveados por esse recurso.
Note
Os fluxos MCP são compatíveis tanto com aplicativos de navegador padrão que usam PublicClientApplication quanto com aplicativos com Autenticação de Aplicativo Aninhado (NAA) que usam createNestablePublicClientApplication.
Para implementações do lado do servidor, consulte fluxos MCP do MSAL Node.
Pré-requisitos
- Registre um aplicativo na plataforma de identidade da Microsoft
-
@azure/msal-browserv5 ou superior instalada no seu projeto
Ativando o MCP
Defina isMcp: true na configuração auth ao criar seu PublicClientApplication:
const msalConfig = {
auth: {
clientId: "your-client-id",
authority: "https://login.microsoftonline.com/common",
isMcp: true,
},
};
const pca = new msal.PublicClientApplication(msalConfig);
Para aplicativos NAA, use a mesma configuração com createNestablePublicClientApplication:
const pca = await msal.createNestablePublicClientApplication(msalConfig);
Parâmetro de recurso
Quando isMcp for true, cada solicitação de token deve incluir um parâmetro resource. Omitir isso gerará um resource_parameter_required erro.
const tokenRequest = {
scopes: ["User.Read"],
resource: "https://example.microsoft.com",
};
Importante
Defina o resource parâmetro diretamente no objeto de solicitação. Não passe isso via extraQueryParameters ou extraParameters ao mesmo tempo que a propriedade resource — isso gera um erro misplaced_resource_parameter.
O exemplo a seguir mostra as maneiras corretas e incorretas de definir o 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" },
};
Cache com escopo de recurso
Quando isMcp estiver habilitado, os tokens de acesso serão armazenados em cache com o recurso associado. Esse comportamento afeta a aquisição silenciosa de tokens:
- Acerto de cache: se houver um token de acesso armazenado em cache para os mesmos escopos e recursos, ele será retornado do cache.
- Falha de cache: se o recurso solicitado não corresponder a nenhum token armazenado em cache, a MSAL retornará à rede para adquirir um novo token para o 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,
});
Tratamento de erros
Dois erros são específicos para fluxos MCP:
| Código do erro | Description |
|---|---|
resource_parameter_required |
isMcp é true , mas a solicitação não inclui um resource parâmetro. |
misplaced_resource_parameter |
Um resource foi encontrado tanto na propriedade resource quanto em extraQueryParameters ou extraParameters. Use apenas um. |
Ambos os erros são gerados como ClientAuthError. Para obter mais informações, consulte a documentação de erros.