Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Azure MCP-server gebruikt het MCP (Model Context Protocol) om integraties tussen AI-apps en externe hulpprogramma's en gegevensbronnen te standaardiseren, zodat AI-systemen bewerkingen kunnen uitvoeren die contextbewust zijn voor uw Azure-resources.
In dit artikel leert u hoe u de volgende taken uitvoert:
- De Azure MCP-server installeren en verifiëren
- Verbinding maken met Azure MCP Server met behulp van een aangepaste Python-client
- Prompts uitvoeren om Bewerkingen van Azure MCP Server te testen en Azure-resources te beheren
Vereiste voorwaarden
- Een Azure-account met een actief abonnement
- Python 3.9 of hoger geïnstalleerd
- Node.js LTS geïnstalleerd
Opmerking
De Azure-resources die u wilt openen met Azure MCP Server, moeten al bestaan binnen uw Azure-abonnement. Daarnaast moet voor uw gebruikersaccount de benodigde RBAC-rollen en -machtigingen zijn toegewezen voor deze resources.
Inloggen voor lokale ontwikkeling
Azure MCP Server biedt een naadloze verificatie-ervaring met behulp van verificatie op basis van tokens via Microsoft Entra ID. Intern maakt Azure MCP Server gebruik DefaultAzureCredential van de Azure Identity-bibliotheek om gebruikers te verifiëren.
U moet zich aanmelden bij een van de hulpprogramma's die lokaal worden ondersteund door DefaultAzureCredential uw Azure-account om te kunnen werken met Azure MCP Server. Meld u aan met behulp van een terminalvenster, zoals de Visual Studio Code-terminal:
az login
Nadat u zich hebt aangemeld bij een van de voorgaande hulpprogramma's, kan Azure MCP Server uw referenties automatisch detecteren en gebruiken om bewerkingen op Azure-services te verifiëren en uit te voeren.
Opmerking
U kunt zich ook aanmelden bij Azure via Visual Studio. Azure MCP Server kan alleen bewerkingen uitvoeren waarvoor de aangemelde gebruiker machtigingen heeft om uit te voeren.
De Python-app maken
Voer de volgende stappen uit om een Python-app te maken. De app maakt verbinding met een AI-model en fungeert als host voor een MCP-client die verbinding maakt met een Azure MCP-server.
Het project maken
Open een lege map in de gewenste editor.
Maak een nieuw bestand met de naam
requirements.txten voeg de volgende bibliotheekafhankelijkheden toe:mcp azure-identity openai loggingMaak in dezelfde map een nieuw bestand met de naam
.enven voeg de volgende omgevingsvariabelen toe:AZURE_OPENAI_ENDPOINT=<your-azure-openai-endpoint> AZURE_OPENAI_MODEL=<your-model-deployment-name>Maak een leeg bestand met de naam
main.pydat de code voor uw app bevat.
De omgeving maken en afhankelijkheden installeren
Open een terminal in uw nieuwe map en maak een virtuele Python-omgeving voor de app:
python -m venv venvDe virtuele omgeving activeren:
venv\Scripts\activateInstalleer de afhankelijkheden van
requirements.txt:pip install -r requirements.txt
De app-code toevoegen
Werk de inhoud van Main.py bij met de volgende 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())
Met de voorgaande code worden de volgende taken uitgevoerd:
- Hiermee stelt u logboekregistratie in en laadt u omgevingsvariabelen uit een
.envbestand. - Hiermee configureert u de Azure OpenAI-client met behulp van
azure-identityenopenaibibliotheken. - Initialiseert een MCP-client om te communiceren met de Azure MCP-server met behulp van een standaard I/O-transport.
- Hiermee wordt een lijst met beschikbare hulpprogramma's opgehaald en weergegeven van de MCP-server.
- Implementeert een gesprekslus om gebruikersprompts te verwerken, hulpprogramma's te gebruiken en hulpprogrammaaanroepen af te handelen.
De app uitvoeren en testen
Voer de volgende stappen uit om uw .NET-host-app te testen:
Open in een terminalvenster naar de hoofdmap van uw project, voer de volgende opdracht in om de app te starten:
python main.pyZodra de app wordt uitgevoerd, voert u de volgende testprompt in:
List all of the resource groups in my subscriptionDe uitvoer voor de vorige prompt moet eruitzien als de volgende tekst:
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!Verken en test de Azure MCP-bewerkingen met behulp van andere relevante prompts, zoals:
List all of the storage accounts in my subscription Get the available tables in my storage accounts