Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure MCP Sunucusu, yapay zeka uygulamalarıyla dış araçlar ve veri kaynakları arasındaki tümleştirmeleri standart hale getirmek için Model Bağlam Protokolü'ne (MCP) sahiptir ve yapay zeka sistemlerinin Azure kaynaklarınıza bağlam açısından duyarlı işlemler gerçekleştirmesine olanak tanır.
Bu makalede, aşağıdaki görevleri nasıl tamamlayacağınızı öğreneceksiniz:
- Azure MCP Sunucusu'nu yükleme ve kimlik doğrulaması
- Özel python istemcisi kullanarak Azure MCP Sunucusu'na bağlanma
- Azure MCP Sunucusu işlemlerini test etmek ve Azure kaynaklarını yönetmek için istemleri çalıştırma
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı
- Python 3.9 veya üzeri yüklü
- Node.js LTS yüklü
Uyarı
Azure MCP Sunucusu ile erişmeyi planladığınız Azure kaynaklarının Azure aboneliğinizde zaten mevcut olması gerekir. Ayrıca, kullanıcı hesabınızın bu kaynaklar için gerekli RBAC rollerine ve izinlerine atanmış olması gerekir.
Yerel geliştirme için Azure MCP Sunucusu'nda oturum açın
Azure MCP Sunucusu, .NET için Azure Kimlik kitaplığını kullanarak Microsoft Entra Kimliği'nde kimlik doğrulaması yapar. Sunucu iki kimlik doğrulama modunu destekler:
-
Aracı modu: ile
InteractiveBrowserCredentialişletim sisteminizin yerel kimlik doğrulamasını (Windows Web Hesabı Yöneticisi gibi) kullanır. - Kimlik bilgisi zinciri modu: Ortam değişkenleri, Visual Studio Code, Visual Studio, Azure CLI, Azure PowerShell, Azure Geliştirici CLI ve etkileşimli tarayıcı kimlik doğrulaması gibi birden çok kimlik doğrulama yöntemini sırayla dener.
Şu yöntemlerden birini kullanarak oturum açın:
- Komut Paleti'ni (
Ctrl+Shift+PveyaCmd+Shift+PMac'te) açın. - Azure:Oturum Aç'ı çalıştırın ve istemleri izleyin.
Oturum açtıktan sonra, Azure MCP Sunucusu izinlerinize göre Azure hizmetlerinde kimlik doğrulaması yapabilir ve işlemleri çalıştırabilir.
Python uygulamasını oluşturma
Python uygulaması (konak uygulaması) oluşturmak için aşağıdaki adımları tamamlayın. Uygulama bir yapay zeka modeline bağlanır ve Azure MCP Sunucusuna bağlanan bir MCP istemcisi için konak görevi görür (MCP protokolunu çalıştıran yerel işlem).
Projeyi oluşturma
Düzenleyicinizin içinde istediğiniz boş bir klasörü açın.
adlı
requirements.txtyeni bir dosya oluşturun ve aşağıdaki kitaplık bağımlılıklarını ekleyin:mcp azure-identity openai loggingAynı klasörde adlı
.envyeni bir dosya oluşturun ve aşağıdaki ortam değişkenlerini ekleyin:AZURE_OPENAI_ENDPOINT=<your-azure-openai-endpoint> AZURE_OPENAI_MODEL=<your-model-deployment-name>Uygulamanızın kodunu tutmak için adlı
main.pyboş bir dosya oluşturun.
Ortamı oluşturma ve bağımlılıkları yükleme
Yeni klasörünüzde bir terminal açın ve uygulama için bir Python sanal ortamı oluşturun:
python -m venv venvSanal ortamı etkinleştirin:
venv\Scripts\activaterequirements.txtiçindeki bağımlılıkları yükleyin:pip install -r requirements.txt
Uygulama kodunu ekleme
içeriğini main.py aşağıdaki kodla güncelleştirin:
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())
Yukarıdaki kod aşağıdaki görevleri gerçekleştirir:
- Loglamayı kurar ve
.envdosyasından ortam değişkenlerini yükler. - Azure OpenAI istemcisi,
azure-identityveopenaikitaplıkları kullanılarak yapılandırılır. - Standart G/Ç aktarımını kullanarak Azure MCP Sunucusu (yerel işlem) ile etkileşime geçmek için bir MCP istemcisi başlatır.
- Azure MCP Sunucusu'ndan kullanılabilir araçların (MCP tarafından kaydedilen Azure işlemleri) listesini alır ve görüntüler.
- Kullanıcı istemlerini işlemek, araçları kullanmak ve araç çağrılarını işlemek için konuşma döngüsü uygular.
Yapılandırma parametreleri:
| Parametre | Description | Example |
|---|---|---|
AZURE_OPENAI_ENDPOINT |
Azure OpenAI hizmet uç noktanız | https://your-resource.openai.azure.com/ |
AZURE_OPENAI_MODEL |
Model dağıtım adı | gpt-4o |
| Belirteç kapsamı | Azure Bilişsel Hizmetler OAuth kapsamı | https://cognitiveservices.azure.com/.default |
| Kimlik Doğrulaması | Kullanır DefaultAzureCredential (Azure CLI, yönetilen kimlik veya diğer kimlik doğrulama zinciri) |
Azure Identity belgelerine bakın |
| Gerekli RBAC | Azure OpenAI kaynağında Bilişsel Hizmetler Kullanıcı rolü veya eşdeğeri | Azure portalı veya CLI aracılığıyla atandı |
Uygulamayı çalıştırma ve test edin
Python uygulamanızı test etmek için aşağıdaki adımları tamamlayın:
Projenizin köküne açık bir terminal penceresinde aşağıdaki komutu çalıştırarak uygulamayı başlatın:
python main.pyBaşarılı doğrulama: Uygulama kullanılabilir Azure MCP Server araçlarının listesini görüntülemeli ve ardından bir
Prompt:giriş göstermelidir.Uygulama çalıştırıldıktan sonra aşağıdaki test istemini girin:
List all of the resource groups in my subscriptionÖnceki istemin çıktısı aşağıdaki metne benzemelidir:
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!Aşağıdakiler gibi diğer ilgili istemleri kullanarak Azure MCP işlemlerini keşfedin ve test edin:
List all of the storage accounts in my subscription Get the available tables in my storage accounts