Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Servidor MCP do Azure usa o PROTOCOLO MCP (Model Context Protocol) para padronizar as integrações entre aplicativos de IA e ferramentas externas e fontes de dados, permitindo que os sistemas de IA executem operações com reconhecimento de contexto dos recursos do Azure.
Neste artigo, você aprenderá a concluir as seguintes tarefas:
- Instalar e autenticar no Servidor MCP do Azure
- Conectar-se ao Servidor MCP do Azure usando um cliente Python personalizado
- Executar prompts para testar as operações do Servidor MCP do Azure e gerenciar recursos do Azure
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa
- Python 3.9 ou superior instalado
- Node.js LTS instalado
Observação
Os recursos do Azure que você pretende acessar com o Servidor MCP do Azure já devem existir em sua assinatura do Azure. Além disso, sua conta de usuário deve ter as funções e permissões rbac necessárias atribuídas a esses recursos.
Entrar no Servidor MCP do Azure para desenvolvimento local
O Servidor MCP do Azure se autentica no Microsoft Entra ID usando a Azure Identity library for .NET. O servidor dá suporte a dois modos de autenticação:
-
Modo de agente: usa a autenticação nativa do sistema operacional (como o Gerenciador de Contas Web do Windows) com
InteractiveBrowserCredential. - Modo de cadeia de credenciais: tenta vários métodos de autenticação em sequência: variáveis de ambiente, Visual Studio Code, Visual Studio, CLI do Azure, Azure PowerShell, CLI do Desenvolvedor do Azure e autenticação interativa do navegador.
Entre usando qualquer um destes métodos:
- Abra a Paleta de Comandos (
Ctrl+Shift+PouCmd+Shift+Pno Mac). - Execute o comando Azure: Sign In e siga as instruções.
Depois de entrar, o Servidor MCP do Azure pode autenticar e executar operações nos serviços do Azure com base em suas permissões.
Criar o aplicativo do Python
Conclua as etapas a seguir para criar um aplicativo Python (aplicativo host). O aplicativo se conecta a um modelo de IA e atua como um host para um cliente MCP que se conecta a um servidor MCP do Azure (processo local que executa o protocolo MCP).
Criar o projeto
Abra uma pasta vazia dentro do editor de sua escolha.
Crie um novo arquivo nomeado
requirements.txte adicione as seguintes dependências de biblioteca:mcp azure-identity openai loggingNa mesma pasta, crie um novo arquivo nomeado
.enve adicione as seguintes variáveis de ambiente:AZURE_OPENAI_ENDPOINT=<your-azure-openai-endpoint> AZURE_OPENAI_MODEL=<your-model-deployment-name>Crie um arquivo vazio nomeado
main.pypara armazenar o código do aplicativo.
Criar o ambiente e instalar dependências
Abra um terminal em sua nova pasta e crie um ambiente virtual python para o aplicativo:
python -m venv venvAtive o ambiente virtual:
venv\Scripts\activateInstale as dependências de
requirements.txt:pip install -r requirements.txt
Adicionar o código do aplicativo
Atualize o conteúdo de main.py com o seguinte código:
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())
O código anterior realiza as seguintes tarefas:
- Configura o registro em log e carrega variáveis de ambiente de um arquivo
.env. - Configura o cliente do Azure OpenAI usando
azure-identityeopenaibibliotecas. - Inicializa um cliente MCP para interagir com o Servidor MCP do Azure (processo local) usando um transporte de E/S padrão.
- Recupera e exibe uma lista de ferramentas disponíveis (operações do Azure registradas pelo MCP) do Servidor MCP do Azure.
- Implementa um loop de conversação para processar prompts do usuário, utilizar ferramentas e gerenciar chamadas de ferramentas.
Parâmetros de configuração:
| Parâmetro | Description | Example |
|---|---|---|
AZURE_OPENAI_ENDPOINT |
Seu ponto de extremidade de serviço do Azure OpenAI | https://your-resource.openai.azure.com/ |
AZURE_OPENAI_MODEL |
Nome da implantação do modelo | gpt-4o |
| Escopo do token | Escopo do OAuth dos Serviços Cognitivos do Azure | https://cognitiveservices.azure.com/.default |
| Autenticação |
DefaultAzureCredential Usa (CLI do Azure, identidade gerenciada ou outra cadeia de credenciais) |
Consulte a documentação do Azure Identity |
| RBAC necessário | Função de usuário dos Serviços Cognitivos ou equivalente no recurso do Azure OpenAI | Atribuído por meio do portal ou da CLI do Azure |
Executar e testar o aplicativo
Conclua as seguintes etapas para testar seu aplicativo Python:
Em uma janela de terminal aberta para a raiz do projeto, execute o seguinte comando para iniciar o aplicativo:
python main.pyVerificação de êxito: o aplicativo deve exibir uma lista das ferramentas disponíveis do Servidor MCP do Azure e, em seguida, mostrar uma
Prompt:entrada.Depois que o aplicativo estiver em execução, insira o seguinte prompt de teste:
List all of the resource groups in my subscriptionA saída do prompt anterior deve ser semelhante ao seguinte texto:
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!Explore e teste as operações do MCP do Azure usando outros prompts relevantes, como:
List all of the storage accounts in my subscription Get the available tables in my storage accounts