Чтобы начать использовать Microsoft MCP Server для предприятия, необходимо включить его в клиенте. В настоящее время этот процесс подготавливает сервер MCP и Visual Studio Code. После подготовки можно настроить клиент MCP для подключения к серверу MCP.
В этой статье описывается, как подготовить сервер MCP и настроить как VS Code, так и пользовательские клиенты MCP для подключения к Microsoft MCP Server for Enterprise.
Подготовка сервера MCP и VS Code (требуется только один раз для каждого клиента)
Запустите PowerShell в режиме администратора и установите Microsoft.Entra. Бета-версия модуля PowerShell (версия 1.0.13 или более поздняя):
Install-Module Microsoft.Entra.Beta -Force -AllowClobber
Выполните проверку подлинности в клиенте, где вы хотите зарегистрировать сервер MCP. Вам должна быть назначена роль администратора приложений или администратора облачных приложений , чтобы предоставить согласие на необходимые разрешения:
Connect-Entra -Scopes 'Application.ReadWrite.All', 'Directory.Read.All', 'DelegatedPermissionGrant.ReadWrite.All'
Совет
Запустите Get-EntraContext после проверки подлинности, чтобы подтвердить использование учетной записи, клиента и областей.
Зарегистрируйте Microsoft MCP Server for Enterprise в клиенте и предоставьте все разрешения на Visual Studio Code:
Grant-EntraBetaMCPServerPermission -ApplicationName VisualStudioCode
Подтверждение регистрации сервера MCP
Убедитесь, что оба приложения существуют с помощью Microsoft Graph, Microsoft Entra PowerShell или портала Microsoft Entra.
| Имя |
Глобальный уникальный идентификатор appId (идентификатор клиента) |
| Microsoft MCP Server для предприятия |
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')";
});
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// 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)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// 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')";
});
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
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();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
<?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();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Import-Module Microsoft.Graph.Applications
Get-MgServicePrincipal -Property "id,appId,displayName" -Filter "appId in('e8c77dc2-69b3-43f4-bc51-3213c9d915b4','aebc6443-996d-45c2-90f0-388ff96faa56')"
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
# 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)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Подтверждение разрешений, предоставленных клиентам MCP
Проверьте разрешения Microsoft MCP Server, предоставленные каждому клиенту MCP.
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}'";
});
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// 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)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
// 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}'";
});
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
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();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
<?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();
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
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}'"
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
# 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)
Дополнительные сведения о добавлении пакета SDK в проект и создании экземпляра authProvider см. в документации по пакету SDK.
Подключение клиента MCP к серверу MCP
- Щелкните Установить Microsoft MCP Server for Enterprise, чтобы открыть страницу установки MCP VS Code.
- Выберите Установить в VS Code и выполните проверку подлинности с помощью учетной записи администратора.
- Откройте Copilot Chat в режиме агента и задайте вопрос для конкретного клиента, например "Сколько пользователей в моем клиенте?"
- Просмотрите ответ сервера MCP, который включает в себя:
- Средства, которые были вызваны для понимания намерения.
- Выполненный вызов REST API Microsoft Graph.
- Ответ на естественном языке, который суммирует данные клиента.
- Войдите в Центр администрирования Microsoft Entra с учетной записью, которая может регистрировать приложения (достаточно ролей администратора приложений или администратора облачных приложений).
- Зарегистрируйте приложение и рассмотрите следующие параметры:
- Имя приложения.
- Поддерживаемые типы учетных записей (один клиент).
- URI платформы и перенаправления для клиента MCP.
- Запишите идентификатор приложения (клиента) и идентификатор каталога (клиента) для последующей настройки.
- Чтобы предоставить разрешения, выполните следующие действия:
- Выберите Делегированные разрешения и добавьте области, соответствующие вашему сценарию (например, добавить
MCP.User.Read.All для подсчета пользователей в клиенте).
- Предоставьте согласие администратора для делегированных разрешений, которые вы добавили.
- Протестируйте клиент MCP, чтобы убедиться, что он может подключиться к Microsoft MCP Server for Enterprise и выполнить необходимые операции.
Управление областями для пользовательских клиентов MCP с помощью Microsoft Entra PowerShell:
Grant-EntraBetaMCPServerPermission -ApplicationId "<MCP_Client_Application_Id>" -Scopes "<Scope1>", "<Scope2>", "<...>"
Revoke-EntraBetaMCPServerPermission -ApplicationId "<MCP_Client_Application_Id>" -Scopes "<Scope1>", "<Scope2>", "<...>"
Просмотр поддерживаемых областей сервера MCP
Сервер MCP поддерживает только делегированные разрешения для пользовательских интерактивных сценариев. Разрешения только для приложений или рабочие процессы только для приложений не поддерживаются. Используйте один из следующих параметров (требуется по крайней DelegatedPermissionGrant.Read.All мере делегированное разрешение), чтобы проверить доступные области MCP и сосредоточиться на областях, где isEnabled имеет значение true.
GET https://graph.microsoft.com/v1.0/servicePrincipals(appId='e8c77dc2-69b3-43f4-bc51-3213c9d915b4')/oauth2PermissionScopes
Список областей сервера MCP
Именование областей MCP следует шаблону MCP.{microsoft-graph-scope-name}. Например, область User.Read.All Microsoft Graph предоставляется как MCP.User.Read.All на сервере MCP. Чтобы понять, что позволяет каждая область, ознакомьтесь со справочником по разрешениям Microsoft Graph.
- 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
Отключение сервера MCP для предприятия
Так как MCP Server for Enterprise является службой, принадлежащей Корпорации Майкрософт, ее нельзя удалить из клиента. Однако при необходимости его можно отключить.
PATCH https://graph.microsoft.com/v1.0/servicePrincipals(appId='e8c77dc2-69b3-43f4-bc51-3213c9d915b4')
{
"accountEnabled": false
}