Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сервер Azure MCP использует протокол MCP для стандартизации интеграции между приложениями ИИ и внешними инструментами и источниками данных, что позволяет системам ИИ выполнять операции с учетом контекста ресурсов Azure.
Из этой статьи вы узнаете, как выполнить следующие задачи:
- Установка и проверка подлинности на сервере Azure MCP
- Подключение к серверу Azure MCP с помощью пользовательского клиента Python
- Выполнение запросов на тестирование операций Azure MCP Server и управление ресурсами Azure
Предпосылки
- Учетная запись Azure с активной подпиской
- Установлен Python 3.9 или более поздней версии
- Node.js установлен в версии с долгосрочной поддержкой
Замечание
Ресурсы Azure, к которым вы планируете получить доступ с помощью Azure MCP Server, должны уже существовать в подписке Azure. Кроме того, учетная запись пользователя должна иметь необходимые роли и разрешения RBAC, назначенные для этих ресурсов.
Вход в Azure MCP Server для локальной разработки
Сервер Azure MCP аутентифицируется в Microsoft Entra ID с помощью библиотеки удостоверений Azure для .NET. Сервер поддерживает два режима проверки подлинности:
-
Режим брокера: использует собственную проверку подлинности операционной системы (например, диспетчер веб-учетных записей Windows) с
InteractiveBrowserCredential. - Режим цепочки учетных данных: пытается выполнить несколько методов проверки подлинности в последовательности: переменные среды, Visual Studio Code, Visual Studio, Azure CLI, Azure PowerShell, Azure Developer CLI и интерактивную проверку подлинности браузера.
Войдите с помощью любого из следующих методов:
- Visual Studio Code
- Visual Studio
- Azure CLI
- Azure PowerShell
- Интерфейс командной строки разработчика Azure
- Откройте палитру команд (
Ctrl+Shift+PилиCmd+Shift+Pна Компьютере Mac). - Запустите Azure: войдите и следуйте инструкциям.
После входа Azure MCP Server может выполнять операции проверки подлинности и выполнения операций в службах Azure на основе ваших разрешений.
Создание приложения Python
Выполните следующие действия, чтобы создать приложение Python (хост-приложение). Приложение подключается к модели искусственного интеллекта и выступает в качестве узла для клиента MCP, который подключается к серверу Azure MCP (локальный процесс, выполняющий протокол MCP).
Создание проекта
Откройте пустую папку в выбранном редакторе.
Создайте файл с именем
requirements.txtи добавьте следующие зависимости библиотеки:mcp azure-identity openai loggingВ той же папке создайте новый файл с именем
.envи добавьте следующие переменные среды:AZURE_OPENAI_ENDPOINT=<your-azure-openai-endpoint> AZURE_OPENAI_MODEL=<your-model-deployment-name>Создайте пустой файл с именем
main.py, чтобы сохранить код для приложения.
Создание среды и установка зависимостей
Откройте терминал в новой папке и создайте виртуальную среду Python для приложения:
python -m venv venvАктивируйте виртуальную среду:
venv\Scripts\activateУстановка зависимостей из
requirements.txt:pip install -r requirements.txt
Добавление кода приложения
Обновите содержимое main.py с помощью следующего кода:
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import AzureOpenAI
from mcp import ClientSession, StdioServerParameters, types
from mcp.client.stdio import stdio_client
import json, os, logging, asyncio
from dotenv import load_dotenv
# Setup logging and load environment variables
logger = logging.getLogger(__name__)
load_dotenv()
# Azure OpenAI configuration
AZURE_OPENAI_ENDPOINT = os.getenv("AZURE_OPENAI_ENDPOINT")
AZURE_OPENAI_MODEL = os.getenv("AZURE_OPENAI_MODEL", "gpt-4o")
# Initialize Azure credentials
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
async def run():
# Initialize Azure OpenAI client
client = AzureOpenAI(
azure_endpoint=AZURE_OPENAI_ENDPOINT,
api_version="2024-04-01-preview",
azure_ad_token_provider=token_provider
)
# MCP client configurations
server_params = StdioServerParameters(
command="npx",
args=["-y", "@azure/mcp@latest", "server", "start"],
env=None
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# List available tools
tools = await session.list_tools()
for tool in tools.tools: print(tool.name)
# Format tools for Azure OpenAI
available_tools = [{
"type": "function",
"function": {
"name": tool.name,
"description": tool.description,
"parameters": tool.inputSchema
}
} for tool in tools.tools]
# Start conversational loop
messages = []
while True:
try:
user_input = input("\nPrompt: ")
messages.append({"role": "user", "content": user_input})
# First API call with tool configuration
response = client.chat.completions.create(
model = AZURE_OPENAI_MODEL,
messages = messages,
tools = available_tools)
# Process the model's response
response_message = response.choices[0].message
messages.append(response_message)
# Handle function calls
if response_message.tool_calls:
for tool_call in response_message.tool_calls:
function_args = json.loads(tool_call.function.arguments)
result = await session.call_tool(tool_call.function.name, function_args)
# Add the tool response to the messages
messages.append({
"tool_call_id": tool_call.id,
"role": "tool",
"name": tool_call.function.name,
"content": result.content,
})
else:
logger.info("No tool calls were made by the model")
# Get the final response from the model
final_response = client.chat.completions.create(
model = AZURE_OPENAI_MODEL,
messages = messages,
tools = available_tools)
for item in final_response.choices:
print(item.message.content)
except Exception as e:
logger.error(f"Error in conversation loop: {e}")
print(f"An error occurred: {e}")
if __name__ == "__main__":
import asyncio
asyncio.run(run())
Приведенный выше код выполняет следующие задачи:
- Настраивает ведение журнала и загружает переменные среды из
.envфайла. - Настраивает клиент Azure OpenAI с помощью
azure-identityиopenaiбиблиотек. - Инициализирует клиент MCP для взаимодействия с сервером Azure MCP (локальным процессом) с помощью стандартного транспорта ввода-вывода.
- Извлекает и отображает список доступных инструментов (операций Azure, зарегистрированных в MCP) с сервера Azure MCP.
- Реализует цикл общения для обработки запросов пользователей, использования инструментов и обработки вызовов функций.
Параметры конфигурации:
| Параметр | Description | Example |
|---|---|---|
AZURE_OPENAI_ENDPOINT |
Конечная точка службы Azure OpenAI | https://your-resource.openai.azure.com/ |
AZURE_OPENAI_MODEL |
Имя развертывания модели | gpt-4o |
| Область маркера | Область OAuth в Azure Cognitive Services | https://cognitiveservices.azure.com/.default |
| Аутентификация | Используется DefaultAzureCredential (Azure CLI, управляемое удостоверение или другая цепочка учетных данных) |
См. документацию по идентификации Azure |
| Обязательный RBAC | Роль пользователя Cognitive Services или аналогичная роль для ресурса Azure OpenAI | Назначается через портал Azure или CLI |
Запуск и тестирование приложения
Выполните следующие действия, чтобы протестировать приложение Python:
В окне терминала откройте корень проекта, выполните следующую команду, чтобы запустить приложение:
python main.pyПроверка успешности. Приложение должно отобразить список доступных средств Azure MCP Server, а затем отобразить входные
Prompt:данные.После запуска приложения введите следующую тестовую строку:
List all of the resource groups in my subscriptionВыходные данные предыдущего запроса должны выглядеть следующим образом:
The following resource groups are available for your subscription: 1. **DefaultResourceGroup-EUS** (Location: `eastus`) 2. **rg-testing** (Location: `centralus`) 3. **rg-azd** (Location: `eastus2`) 4. **msdocs-sample** (Location: `southcentralus`) 14. **ai-testing** (Location: `eastus2`) Let me know if you need further details or actions related to any of these resource groups!Изучите и проверьте операции Azure MCP с помощью других соответствующих запросов, таких как:
List all of the storage accounts in my subscription Get the available tables in my storage accounts