MSAL Browser ile MCP akışlarını kullanma

Model Bağlam Protokolü (MCP), yapay zeka uygulamalarının dış araçlara, veri kaynaklarına ve hizmetlere güvenli bir şekilde bağlanmasını sağlayan açık bir standarttır. MSAL Browser, tüm belirteç isteklerinin bir resource parametre içermesini ve bu kaynak tarafından anahtarlanan erişim belirteçlerini önbelleğe alma zorunluluğuyla MCP akışlarını destekler.

Note

MCP akışları, PublicClientApplication kullanan standart tarayıcı uygulamaları ve createNestablePublicClientApplication kullanan İç İçe Uygulama Kimlik Doğrulaması (NAA) uygulamaları için desteklenir.

Sunucu tarafı uygulamaları için bkz. MSAL Node MCP akışları.

Prerequisites

MCP'yi etkinleştirme

PublicClientApplication oluştururken, auth yapılandırmasında isMcp: true ayarlayın:

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

const pca = new msal.PublicClientApplication(msalConfig);

NAA uygulamaları için ile createNestablePublicClientApplicationaynı yapılandırmayı kullanın:

const pca = await msal.createNestablePublicClientApplication(msalConfig);

Kaynak parametresi

isMcp true olduğunda, her token isteği must bir resource parametresini içermelidir. Bunu atlamak resource_parameter_required hatasına neden olur.

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

Important

Parametreyi resource doğrudan istek nesnesi üzerinde ayarlayın. Bunu, resource özelliğiyle aynı anda extraQueryParameters veya extraParameters aracılığıyla geçirmeyin; aksi takdirde misplaced_resource_parameter hatası oluşur.

Aşağıdaki örnekte, parametresini ayarlamanın doğru ve yanlış yolları gösterilmektedir 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" },
};

Kaynak düzeyinde önbellekleme

Etkinleştirildiğinde isMcp , erişim belirteçleri ilişkili kaynaklarıyla önbelleğe alınır. Bu davranış sessiz belirteç alımını etkiler:

  • Önbellek isabeti: Aynı kapsamlar ve kaynak için önbelleğe alınmış bir erişim belirteci varsa, önbellekten döndürülür.
  • Önbellek hatası: İstenen kaynak önbelleğe alınmış hiçbir belirteçle eşleşmiyorsa MSAL, istenen kaynak için yeni bir belirteç almak üzere ağa başvurur.
// 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,
});

Hata yönetimi

MCP akışlarına özgü iki hata vardır:

Hata kodu Description
resource_parameter_required isMcp, true ancak istek bir resource parametresi içermiyor.
misplaced_resource_parameter Bir resource, hem resource özelliğinde hem de extraQueryParameters veya extraParameters içinde bulundu. Yalnızca bir tane kullanın.

Her iki hata da ClientAuthError olarak fırlatılır. Daha fazla bilgi için hata belgelerine bakın.

Sonraki Adımlar