Använda MCP-flöden med MSAL Browser

Model Context Protocol (MCP) är en öppen standard som gör att AI-program kan ansluta säkert med externa verktyg, datakällor och tjänster. MSAL Browser stöder MCP-flöden genom att framtvinga att alla tokenbegäranden innehåller en resource parameter och cachelagring av åtkomsttoken som är nyckelade av den resursen.

Note

MCP-flöden stöds för både vanliga webbläsarprogram med hjälp av PublicClientApplication och NAA-program (Kapslad appautentisering) med .createNestablePublicClientApplication

Information om implementeringar på serversidan finns i MSAL Node MCP-flöden.

Förutsättningar

Aktivera MCP

Ange isMcp: true i konfigurationen auth när du skapar :PublicClientApplication

const msalConfig = {
    auth: {
        clientId: "your-client-id",
        authority: "https://login.microsoftonline.com/common",
        isMcp: true,
    },
};

const pca = new msal.PublicClientApplication(msalConfig);

För NAA-program använder du samma konfiguration med createNestablePublicClientApplication:

const pca = await msal.createNestablePublicClientApplication(msalConfig);

Parameter för resurs

När isMcp är truemåste varje tokenbegäran innehålla en resource parameter. Om du utelämnar det utlöser det ett resource_parameter_required fel.

const tokenRequest = {
    scopes: ["User.Read"],
    resource: "https://example.microsoft.com",
};

Important

Ange parametern resource direkt på begärandeobjektet. Skicka den inte via extraQueryParameters eller extraParameters samtidigt med egenskapen resource – det orsakar ett misplaced_resource_parameter-fel.

I följande exempel visas rätt och felaktiga sätt att ange parametern resource :

// 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" },
};

Resursbegränsad cachelagring

När isMcp är aktiverat cachelagras åtkomsttoken tillsammans med den resurs de är associerade med. Det här beteendet påverkar tyst tokenhämtning:

  • Cacheträff: Om det finns en cachelagrad åtkomsttoken för samma omfång och resurs returneras den från cachen.
  • Cachemiss: Om den begärda resursen inte matchar någon cachelagrad token återgår MSAL till nätverket för att hämta en ny token för den begärda resursen.
// 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,
});

Felhantering

Två fel är specifika för MCP-flöden:

Felkod Description
resource_parameter_required isMcp är true, men begäran innehåller ingen resource-parameter.
misplaced_resource_parameter En resource hittades både i egenskapen resource och i extraQueryParameters eller extraParameters. Använd bara en.

Båda felen kastas som ClientAuthError. Mer information finns i dokumentationen om fel.

Nästa steg