Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Azure MCP-Server verwendet das Model Context Protocol (MCP), um Integrationen zwischen KI-Apps und externen Tools und Datenquellen zu standardisieren, sodass KI-Systeme Vorgänge ausführen können, die kontextbewusst von Ihren Azure-Ressourcen sind.
In diesem Artikel erfahren Sie, wie Sie die folgenden Aufgaben ausführen:
- Installieren und Authentifizieren beim Azure MCP-Server
- Herstellen einer Verbindung mit Azure MCP Server mithilfe eines benutzerdefinierten Python-Clients
- Ausführen von Eingabeaufforderungen zum Testen von Azure MCP Server-Vorgängen und Verwalten von Azure-Ressourcen
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement
- Python 3.9 oder höher installiert
- Node.js LTS installiert
Hinweis
Die Azure-Ressourcen, auf die Sie mit Azure MCP Server zugreifen möchten, müssen bereits in Ihrem Azure-Abonnement vorhanden sein. Darüber hinaus muss Ihr Benutzerkonto über die erforderlichen RBAC-Rollen und Berechtigungen für diese Ressourcen verfügen.
Anmelden bei Azure MCP Server für die lokale Entwicklung
Azure MCP Server authentifiziert sich bei Microsoft Entra ID mithilfe der Azure Identity-Bibliothek für .NET. Der Server unterstützt zwei Authentifizierungsmodi:
-
Brokermodus: Verwendet die systemeigene Authentifizierung Ihres Betriebssystems (z. B. Windows Web Account Manager) mit
InteractiveBrowserCredential. - Modus der Anmeldeinformationskette: Es wird versucht, mehrere Authentifizierungsmethoden in einer festgelegten Reihenfolge zu verwenden: Umgebungsvariablen, Visual Studio Code, Visual Studio, Azure CLI, Azure PowerShell, Azure Developer CLI und interaktive Browserauthentifizierung.
Melden Sie sich mit einer der folgenden Methoden an:
- Öffnen Sie die Befehlspalette (
Ctrl+Shift+PoderCmd+Shift+Pauf dem Mac). - Führen Sie Azure aus: Melden Sie sich an , und folgen Sie den Anweisungen.
Nach der Anmeldung kann Azure MCP Server Vorgänge für Azure-Dienste basierend auf Ihren Berechtigungen authentifizieren und ausführen.
Erstellen der Python-App
Führen Sie die folgenden Schritte aus, um eine Python-App (Host-App) zu erstellen. Die App stellt eine Verbindung mit einem KI-Modell her und fungiert als Host für einen MCP-Client, der eine Verbindung mit einem Azure MCP-Server herstellt (lokaler Prozess, der das MCP-Protokoll ausführt).
Erstellen des Projekts
Öffnen Sie einen leeren Ordner in Ihrem Editor der Wahl.
Erstellen Sie eine neue Datei namens
requirements.txt, und fügen Sie die folgenden Bibliotheksabhängigkeiten hinzu:mcp azure-identity openai loggingErstellen Sie im selben Ordner eine neue Datei mit dem Namen
.env, und fügen Sie die folgenden Umgebungsvariablen hinzu:AZURE_OPENAI_ENDPOINT=<your-azure-openai-endpoint> AZURE_OPENAI_MODEL=<your-model-deployment-name>Erstellen Sie eine leere Datei mit dem Namen
main.py, um den Code für Ihre App zu speichern.
Erstellen der Umgebung und Installieren von Abhängigkeiten
Öffnen Sie ein Terminal in Ihrem neuen Ordner, und erstellen Sie eine virtuelle Python-Umgebung für die App:
python -m venv venvAktivieren Sie die virtuelle Umgebung:
venv\Scripts\activateInstallieren Sie die Abhängigkeiten von
requirements.txt:pip install -r requirements.txt
Hinzufügen des App-Codes
Aktualisieren Sie die Inhalte von main.py mit dem folgenden Code:
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())
Der vorangehende Code führt die folgenden Aufgaben aus:
- Richtet die Protokollierung ein und lädt Umgebungsvariablen aus einer
.env-Datei. - Konfiguriert den Azure OpenAI-Client mithilfe
azure-identityundopenaiBibliotheken. - Initialisiert einen MCP-Client für die Interaktion mit dem Azure MCP-Server (lokaler Prozess) mithilfe eines standardmäßigen E/A-Transports.
- Ruft eine Liste der verfügbaren Tools (MCP-registrierte Azure-Vorgänge) vom Azure MCP-Server ab und zeigt sie an.
- Implementiert eine Unterhaltungsschleife, um Benutzeraufforderungen zu verarbeiten, Tools zu nutzen und Toolaufrufe zu verarbeiten.
Konfigurationsparameter:
| Parameter | Description | Example |
|---|---|---|
AZURE_OPENAI_ENDPOINT |
Ihr Azure OpenAI-Dienstendpunkt | https://your-resource.openai.azure.com/ |
AZURE_OPENAI_MODEL |
Modellbereitstellungsname | gpt-4o |
| Tokenbereich | OAuth-Bereich von Azure Cognitive Services | https://cognitiveservices.azure.com/.default |
| Authentifizierung | Verwendet DefaultAzureCredential (Azure CLI, verwaltete Identität oder andere Authentifizierungskette) |
Siehe Azure Identity-Dokumentation |
| Erforderliche Rollenbasierte Zugriffskontrolle (RBAC) | Rolle "Benutzer von Cognitive Services" oder gleichwertige Rolle auf der Azure OpenAI-Ressource | Zugewiesen über das Azure-Portal oder die CLI |
Ausführen und Testen der App
Führen Sie die folgenden Schritte aus, um Ihre Python-App zu testen:
Führen Sie in einem Terminalfenster, das im Stammverzeichnis Ihres Projekts geöffnet ist, den folgenden Befehl aus, um die App zu starten:
python main.pyErfolgsüberprüfung: Die App sollte eine Liste der verfügbaren Azure MCP Server-Tools anzeigen und dann eine
Prompt:Eingabe anzeigen.Sobald die App ausgeführt wird, geben Sie die folgende Testaufforderung ein:
List all of the resource groups in my subscriptionDie Ausgabe für die vorherige Eingabeaufforderung sollte dem folgenden Text ähneln:
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!Erkunden und testen Sie die Azure MCP-Vorgänge mithilfe anderer relevanter Eingabeaufforderungen, z. B.:
List all of the storage accounts in my subscription Get the available tables in my storage accounts