Um Microsoft MCP Server for Enterprise verwenden zu können, müssen Sie es in Ihrem Mandanten aktivieren. Dieser Prozess stellt derzeit sowohl den MCP-Server als auch Visual Studio Code zur Bereitstellung. Nach der Bereitstellung können Sie Ihren MCP-Client so konfigurieren, dass er eine Verbindung mit dem MCP-Server herstellt.
In diesem Artikel wird beschrieben, wie Sie den MCP-Server bereitstellen und sowohl VS Code als auch benutzerdefinierte MCP-Clients konfigurieren, um eine Verbindung mit Microsoft MCP Server for Enterprise herzustellen.
Bereitstellen des MCP-Servers und von VS Code (nur einmal pro Mandant erforderlich)
Starten Sie PowerShell im Administratormodus, und installieren Sie Microsoft.Entra. Beta-PowerShell-Modul (Version 1.0.13 oder höher):
Install-Module Microsoft.Entra.Beta -Force -AllowClobber
Authentifizieren Sie sich bei dem Mandanten, in dem Sie den MCP-Server registrieren möchten. Ihnen muss entweder die Rolle Anwendungsadministrator oder Cloudanwendungsadministrator zugewiesen sein, um den erforderlichen Berechtigungen zuzustimmen:
Connect-Entra -Scopes 'Application.ReadWrite.All', 'Directory.Read.All', 'DelegatedPermissionGrant.ReadWrite.All'
Tipp
Führen Sie Get-EntraContext nach der Authentifizierung aus, um das Konto, den Mandanten und die bereiche zu bestätigen, die derzeit verwendet werden.
Registrieren Sie Microsoft MCP Server for Enterprise in Ihrem Mandanten, und erteilen Sie Visual Studio Code alle Berechtigungen:
Grant-EntraBetaMCPServerPermission -ApplicationName VisualStudioCode
Bestätigen der MCP-Serverregistrierung
Überprüfen Sie, ob beide Anwendungen vorhanden sind, indem Sie Microsoft Graph, Microsoft Entra PowerShell oder das Microsoft Entra-Portal verwenden.
| Name |
Global eindeutige appId (Client-ID) |
| Microsoft MCP Server for Enterprise |
e8c77dc2-69b3-43f4-bc51-3213c9d915b4 |
| Visual Studio Code |
aebc6443-996d-45c2-90f0-388ff96faa56 |
GET https://graph.microsoft.com/v1.0/servicePrincipals?$select=id,appId,displayName&$filter=appId in('e8c77dc2-69b3-43f4-bc51-3213c9d915b4','aebc6443-996d-45c2-90f0-388ff96faa56')
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Select = new string []{ "id","appId","displayName" };
requestConfiguration.QueryParameters.Filter = "appId in('e8c77dc2-69b3-43f4-bc51-3213c9d915b4','aebc6443-996d-45c2-90f0-388ff96faa56')";
});
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphserviceprincipals "github.com/microsoftgraph/msgraph-sdk-go/serviceprincipals"
//other-imports
)
requestFilter := "appId in('e8c77dc2-69b3-43f4-bc51-3213c9d915b4','aebc6443-996d-45c2-90f0-388ff96faa56')"
requestParameters := &graphserviceprincipals.ServicePrincipalsRequestBuilderGetQueryParameters{
Select: [] string {"id","appId","displayName"},
Filter: &requestFilter,
}
configuration := &graphserviceprincipals.ServicePrincipalsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
servicePrincipals, err := graphClient.ServicePrincipals().Get(context.Background(), configuration)
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
ServicePrincipalCollectionResponse result = graphClient.servicePrincipals().get(requestConfiguration -> {
requestConfiguration.queryParameters.select = new String []{"id", "appId", "displayName"};
requestConfiguration.queryParameters.filter = "appId in('e8c77dc2-69b3-43f4-bc51-3213c9d915b4','aebc6443-996d-45c2-90f0-388ff96faa56')";
});
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
const options = {
authProvider,
};
const client = Client.init(options);
let servicePrincipals = await client.api('/servicePrincipals')
.filter('appId in(\'e8c77dc2-69b3-43f4-bc51-3213c9d915b4\',\'aebc6443-996d-45c2-90f0-388ff96faa56\')')
.select('id,appId,displayName')
.get();
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\ServicePrincipals\ServicePrincipalsRequestBuilderGetRequestConfiguration;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestConfiguration = new ServicePrincipalsRequestBuilderGetRequestConfiguration();
$queryParameters = ServicePrincipalsRequestBuilderGetRequestConfiguration::createQueryParameters();
$queryParameters->select = ["id","appId","displayName"];
$queryParameters->filter = "appId in('e8c77dc2-69b3-43f4-bc51-3213c9d915b4','aebc6443-996d-45c2-90f0-388ff96faa56')";
$requestConfiguration->queryParameters = $queryParameters;
$result = $graphServiceClient->servicePrincipals()->get($requestConfiguration)->wait();
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
Import-Module Microsoft.Graph.Applications
Get-MgServicePrincipal -Property "id,appId,displayName" -Filter "appId in('e8c77dc2-69b3-43f4-bc51-3213c9d915b4','aebc6443-996d-45c2-90f0-388ff96faa56')"
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.service_principals.service_principals_request_builder import ServicePrincipalsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = ServicePrincipalsRequestBuilder.ServicePrincipalsRequestBuilderGetQueryParameters(
select = ["id","appId","displayName"],
filter = "appId in('e8c77dc2-69b3-43f4-bc51-3213c9d915b4','aebc6443-996d-45c2-90f0-388ff96faa56')",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.service_principals.get(request_configuration = request_configuration)
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
Bestätigen der Berechtigungen, die Ihren MCP-Clients erteilt wurden
Überprüfen Sie die Microsoft MCP Server-Berechtigungen, die jedem MCP-Client erteilt wurden.
GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants?$select=id,clientId,resourceId,scope&$filter=clientId eq '{mcp-client-servicePrincipal}' and resourceId eq '{mcp-server-servicePrincipal}'
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Oauth2PermissionGrants.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Select = new string []{ "id","clientId","resourceId","scope" };
requestConfiguration.QueryParameters.Filter = "clientId eq '{mcp-client-servicePrincipal}' and resourceId eq '{mcp-server-servicePrincipal}'";
});
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphoauth2permissiongrants "github.com/microsoftgraph/msgraph-sdk-go/oauth2permissiongrants"
//other-imports
)
requestFilter := "clientId eq '{mcp-client-servicePrincipal}' and resourceId eq '{mcp-server-servicePrincipal}'"
requestParameters := &graphoauth2permissiongrants.Oauth2PermissionGrantsRequestBuilderGetQueryParameters{
Select: [] string {"id","clientId","resourceId","scope"},
Filter: &requestFilter,
}
configuration := &graphoauth2permissiongrants.Oauth2PermissionGrantsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
oauth2PermissionGrants, err := graphClient.Oauth2PermissionGrants().Get(context.Background(), configuration)
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
OAuth2PermissionGrantCollectionResponse result = graphClient.oauth2PermissionGrants().get(requestConfiguration -> {
requestConfiguration.queryParameters.select = new String []{"id", "clientId", "resourceId", "scope"};
requestConfiguration.queryParameters.filter = "clientId eq '{mcp-client-servicePrincipal}' and resourceId eq '{mcp-server-servicePrincipal}'";
});
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
const options = {
authProvider,
};
const client = Client.init(options);
let oauth2PermissionGrants = await client.api('/oauth2PermissionGrants')
.filter('clientId eq \'{mcp-client-servicePrincipal}\' and resourceId eq \'{mcp-server-servicePrincipal}\'')
.select('id,clientId,resourceId,scope')
.get();
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Oauth2PermissionGrants\Oauth2PermissionGrantsRequestBuilderGetRequestConfiguration;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestConfiguration = new Oauth2PermissionGrantsRequestBuilderGetRequestConfiguration();
$queryParameters = Oauth2PermissionGrantsRequestBuilderGetRequestConfiguration::createQueryParameters();
$queryParameters->select = ["id","clientId","resourceId","scope"];
$queryParameters->filter = "clientId eq '{mcp-client-servicePrincipal}' and resourceId eq '{mcp-server-servicePrincipal}'";
$requestConfiguration->queryParameters = $queryParameters;
$result = $graphServiceClient->oauth2PermissionGrants()->get($requestConfiguration)->wait();
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
Import-Module Microsoft.Graph.Identity.SignIns
Get-MgOauth2PermissionGrant -Property "id,clientId,resourceId,scope" -Filter "clientId eq '{mcp-client-servicePrincipal}' and resourceId eq '{mcp-server-servicePrincipal}'"
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.oauth2_permission_grants.oauth2_permission_grants_request_builder import Oauth2PermissionGrantsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = Oauth2PermissionGrantsRequestBuilder.Oauth2PermissionGrantsRequestBuilderGetQueryParameters(
select = ["id","clientId","resourceId","scope"],
filter = "clientId eq '{mcp-client-servicePrincipal}' and resourceId eq '{mcp-server-servicePrincipal}'",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.oauth2_permission_grants.get(request_configuration = request_configuration)
In der SDK-Dokumentation finden Sie ausführliche Informationen zum Hinzufügen des SDK zu Ihrem Projekt und zum Erstellen einer authProvider -Instanz.
Verbinden Ihres MCP-Clients mit dem MCP-Server
- Klicken Sie auf Microsoft MCP Server for Enterprise installieren , um die MCP-Installationsseite von VS Code zu öffnen.
- Wählen Sie In VS Code installieren aus, und authentifizieren Sie sich mit einem Administratorkonto.
- Öffnen Sie Copilot Chat im Agent-Modus, und stellen Sie eine mandantenspezifische Frage, z. B. "Wie viele Benutzer sind in meinem Mandanten?"
- Überprüfen Sie die MCP-Serverantwort, die Folgendes enthält:
- Die Tools, die aufgerufen wurden, um die Absicht zu verstehen.
- Der ausgeführte Microsoft Graph-REST-API-Aufruf.
- Eine Antwort in natürlicher Sprache, die die Mandantendaten zusammenfasst.
- Melden Sie sich beim Microsoft Entra Admin Center mit einem Konto an, das Anwendungen registrieren kann (Die Rollen Anwendungsadministrator oder Cloudanwendungsadministrator sind ausreichend).
- Registrieren Sie eine Anwendung, und berücksichtigen Sie die folgenden Einstellungen:
- Anwendungsname.
- Unterstützte Kontotypen (einzelner Mandant).
- Plattform- und Umleitungs-URI für Ihren MCP-Client.
- Notieren Sie sich sowohl die Anwendungs-ID (Client) als auch die Verzeichnis-ID (Mandant) für die spätere Konfiguration.
- So erteilen Sie Berechtigungen:
- Wählen Sie Delegierte Berechtigungen aus, und fügen Sie die Bereiche hinzu, die Ihrem Szenario entsprechen (z. B. hinzufügen
MCP.User.Read.All , um Benutzer im Mandanten zu zählen).
- Erteilen Sie die Administratoreinwilligung für die delegierten Berechtigungen, die Sie hinzugefügt haben.
- Testen Sie Ihren MCP-Client, um sicherzustellen, dass er eine Verbindung mit microsoft MCP Server for Enterprise herstellen und die erforderlichen Vorgänge ausführen kann.
Verwalten von Bereichen für benutzerdefinierte MCP-Clients mithilfe von Microsoft Entra PowerShell:
Grant-EntraBetaMCPServerPermission -ApplicationId "<MCP_Client_Application_Id>" -Scopes "<Scope1>", "<Scope2>", "<...>"
Revoke-EntraBetaMCPServerPermission -ApplicationId "<MCP_Client_Application_Id>" -Scopes "<Scope1>", "<Scope2>", "<...>"
Anzeigen unterstützter MCP-Serverbereiche
Der MCP-Server unterstützt nur delegierte Berechtigungen für benutzeraktive Szenarien. Nur-App-Berechtigungen oder reine App-Workflows werden nicht unterstützt. Verwenden Sie eine der folgenden Optionen (erfordert mindestens die DelegatedPermissionGrant.Read.All delegierte Berechtigung), um die verfügbaren MCP-Bereiche zu überprüfen, und konzentrieren Sie sich auf Bereiche, bei denen isEnabled ist true.
GET https://graph.microsoft.com/v1.0/servicePrincipals(appId='e8c77dc2-69b3-43f4-bc51-3213c9d915b4')/oauth2PermissionScopes
Liste der MCP-Serverbereiche
Die Benennung von MCP-Bereichen folgt dem Muster MCP.{microsoft-graph-scope-name}. Beispielsweise wird der Microsoft Graph-Bereich User.Read.All auf dem MCP-Server als MCP.User.Read.All verfügbar gemacht. Um zu verstehen, was jeder Bereich zulässt, lesen Sie die Microsoft Graph-Berechtigungsreferenz.
- MCP. AccessReview.Read.All
- MCP. AdministrativeUnit.Read.All
- MCP. Application.Read.All
- MCP. AuditLog.Read.All
- MCP. AuthenticationContext.Read.All
- MCP. Device.Read.All
- MCP. DirectoryRecommendations.Read.All
- MCP. Domain.Read.All
- MCP. EntitlementManagement.Read.All
- MCP. GroupMember.Read.All
- MCP. HealthMonitoringAlert.Read.All
- MCP. IdentityRiskEvent.Read.All
- MCP. IdentityRiskyServicePrincipal.Read.All
- MCP. IdentityRiskyUser.Read.All
- MCP. LicenseAssignment.Read.All
- MCP. LifecycleWorkflows.Read.All
- MCP. LifecycleWorkflows-CustomExt.Read.All
- MCP. LifecycleWorkflows-Reports.Read.All
- MCP. LifecycleWorkflows-Workflow.Read.All
- MCP. LifecycleWorkflows-Workflow.ReadBasic.All
- MCP. NetworkAccess.Read.All
- MCP. NetworkAccess-Reports.Read.All
- MCP. Organization.Read.All
- MCP. Policy.Read.All
- MCP. Policy.Read.ConditionalAccess
- MCP. ProvisioningLog.Read.All
- MCP. Reports.Read.All
- MCP. RoleAssignmentSchedule.Read.Directory
- MCP. RoleEligibilitySchedule.Read.Directory
- MCP. RoleManagement.Read.Directory
- MCP. Synchronization.Read.All
- MCP. User.Read.All
- MCP. UserAuthenticationMethod.Read.All
- MCP. GroupSettings.Read.All
Deaktivieren von MCP Server for Enterprise
Da MCP Server for Enterprise ein Dienst im Besitz von Microsoft ist, können Sie ihn nicht aus Ihrem Mandanten löschen. Sie können sie jedoch bei Bedarf deaktivieren.
PATCH https://graph.microsoft.com/v1.0/servicePrincipals(appId='e8c77dc2-69b3-43f4-bc51-3213c9d915b4')
{
"accountEnabled": false
}