إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
مهم
خادم MCP المدار على المنصة للجلسات الديناميكية في مرحلة المعاينة. نسخة 2025-02-02-preview API وخصائصها mcpServerSettings قابلة للتغيير.
يوضح هذا الدرس كيفية إنشاء تجمع جلسات مع تمكين خادم MCP المدار من المنصة، والاتصال به، وتنفيذ كود بايثون عن بعد.
على عكس دروس خوادم MCP المستقلة، لا تكتب أو تنشر كود خادم MCP. توفر المنصة أدوات مدمجة لتجمع جلسات بايثون:
| أداة | الوصف |
|---|---|
launchShell |
ينشئ بيئة جديدة ويعيد environmentId |
runPythonCodeInRemoteEnvironment |
ينفذ كود بايثون في بيئة موجودة |
runShellCommandInRemoteEnvironment |
ينفذ أمر shell في بيئة موجودة |
في هذا البرنامج التعليمي، سوف تتعلّم:
- إنشاء تجمع جلسات بايثون مع تفعيل خادم MCP
- استرجاع نقطة نهاية MCP ومفتاح API
- تهيئة اتصال MCP وتنفيذ كود بايثون عبر JSON-RPC
- توصيل خادم MCP ب GitHub Copilot في كود VS
Prerequisites
| Requirement | الوصف |
|---|---|
| حساب Azure | حساب Azure مع اشتراك نشط. أنشئ واحدا مجانا. |
| Azure CLI | قم بتثبيت Azure CLI. |
| حليقه | Curl (مثبت مسبقا على معظم أنظمة لينكس وmacOS). |
| jq | جي كيو معالج JSON، يستخدم لتحليل استجابات واجهة برمجة التطبيقات (API). |
| VS Code | كود Visual Studio مع امتداد GitHub Copilot (لقسم تكامل Copilot). |
الإعداد
قم بتحديث واجهة برمجة Azure وتثبيت إضافة تطبيقات الحاويات:
az upgrade az provider register --namespace Microsoft.App az extension add --name containerapp --allow-preview true --upgradeسجل الدخول وحدد اشتراكك:
az login SUBSCRIPTION_ID=$(az account show --query id --output tsv) az account set -s $SUBSCRIPTION_IDحدد المتغيرات لهذا الدرس. استبدل البدلاء بقيمك:
RESOURCE_GROUP=<RESOURCE_GROUP_NAME> SESSION_POOL_NAME=<SESSION_POOL_NAME> LOCATION=<LOCATION>أنشئ مجموعة موارد:
az group create --name $RESOURCE_GROUP --location $LOCATION
إنشاء تجمع جلسات بايثون باستخدام خادم MCP
قم بنشر مجموعة جلسات باستخدام قالب ARM مع تفعيل MCP.
أنشئ ملفا باسم
deploy.json:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "type": "String" }, "location": { "type": "String" } }, "resources": [ { "type": "Microsoft.App/sessionPools", "apiVersion": "2025-02-02-preview", "name": "[parameters('name')]", "location": "[parameters('location')]", "properties": { "poolManagementType": "Dynamic", "containerType": "PythonLTS", "scaleConfiguration": { "maxConcurrentSessions": 5 }, "sessionNetworkConfiguration": { "status": "EgressEnabled" }, "dynamicPoolConfiguration": { "lifecycleConfiguration": { "lifecycleType": "Timed", "coolDownPeriodInSeconds": 300 } }, "mcpServerSettings": { "isMCPServerEnabled": true } } } ] }ملاحظة
الخصائص الرئيسية في هذا القالب:
-
containerType: "PythonLTS": ينشئ جلسات باستخدام وقت تشغيل بايثون. -
mcpServerSettings.isMCPServerEnabled: true: تمكن نقطة نهاية MCP المدارة بواسطة المنصة. -
coolDownPeriodInSeconds: 300: يتم تدمير الجلسات بعد 5 دقائق من عدم النشاط.
-
نشر القالب:
استخدم قالب ARM لإنشاء مجموعة جلسات بايثون مع مفعل خادم MCP.
أنشئ ملف قالب نشر بعنوان
deploy.json:{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "type": "String" }, "location": { "type": "String" } }, "resources": [ { "type": "Microsoft.App/sessionPools", "apiVersion": "2025-10-02-preview", "name": "[parameters('name')]", "location": "[parameters('location')]", "properties": { "poolManagementType": "Dynamic", "containerType": "PythonLTS", # Set the "containerType" property to "PythonLTS" "scaleConfiguration": { "maxConcurrentSessions": 5 }, "sessionNetworkConfiguration": { "status": "EgressEnabled" }, "dynamicPoolConfiguration": { "lifecycleConfiguration": { "lifecycleType": "Timed", "coolDownPeriodInSeconds": 300 } }, "mcpServerSettings": { "isMCPServerEnabled": true # Add the "mcpServerSettings" section to enable the MCP server } } } ] }نشر قالب ARM.
az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file deploy.json \ --parameters name=$SESSION_POOL_NAME location=$LOCATION
احصل على نقطة نهاية خادم MCP
بعد النشر، استرجع رابط نقطة نهاية MCP لمجموعة الجلسات الخاصة بك.
MCP_ENDPOINT=$(az rest --method GET --uri "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME" --uri-parameters api-version=2025-10-02-preview --query "properties.mcpServerSettings.mcpServerEndpoint" -o tsv)
احصل على بيانات اعتماد خادم MCP
يستخدم خادم MCP المدار من قبل المنصة مصادقة مفاتيح API عبر الرأس x-ms-apikey . تختلف طريقة المصادقة هذه عن المصادقة الرمزية الحامل التي تستخدمها واجهات برمجة تطبيقات إدارة تجمع الجلسات القياسية.
API_KEY=$(az rest --method POST --uri "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME/fetchMCPServerCredentials" --uri-parameters api-version=2025-10-02-preview --query "apiKey" -o tsv)
تحذير
عامل مفتاح واجهة برمجة التطبيقات كسر. لا تلتزم به للتحكم في المصدر أو تشاركه علنا. يقوم المفتاح بالتحقق من جميع استدعاءات أدوات MCP مقابل مجموعة الجلسات الخاصة بك.
تهيئة خادم MCP
أرسل initialize طلب JSON-RPC لتأسيس اتصال MCP:
curl -sS -X POST "$MCP_ENDPOINT" \
-H "Content-Type: application/json" \
-H "x-ms-apikey: $API_KEY" \
-d '{ "jsonrpc": "2.0", "id": "1", "method": "initialize" }'
يجب أن ترى ردا يشمل:
-
protocolVersion2025-03-26 -
serverInfo.nameMicrosoft Container Apps MCP Server -
capabilities.tools{ "call": true, "list": true }
تشغيل بيئة بايثون
إنشاء بيئة بايثون جديدة:
ENVIRONMENT_RESPONSE=$(curl -sS -X POST "$MCP_ENDPOINT" \
-H "Content-Type: application/json" \
-H "x-ms-apikey: $API_KEY" \
-d '{ "jsonrpc": "2.0", "id": "2", "method": "tools/call", "params": { "name": "launchShell", "arguments": {} } }')
echo $ENVIRONMENT_RESPONSE
استخرج من environmentIdstructuredContent الحقل في الرد. تحتاج إلى هذا المعرف لجميع الأوامر التالية.
ENVIRONMENT_ID=$(echo $ENVIRONMENT_RESPONSE | jq -r '.result.structuredContent.environmentId')
echo $ENVIRONMENT_ID
ملاحظة
تولد الأداة launchShell معرف بيئة فريد. يتم تخصيص الجلسة الفعلية "بكسل". عند تنفيذ أول أمرة، يقوم تجمع الجلسات بتعيين حاوية معزولة فائقة V للتعامل معها.
تنفيذ أوامر بايثون
لتشغيل كود بايثون في البيئة البعيدة، استخدم الخطوة السابقة $ENVIRONMENT_ID .
curl -sS -X POST "$MCP_ENDPOINT" \
-H "Content-Type: application/json" \
-H "x-ms-apikey: $API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": "3",
"method": "tools/call",
"params": {
"name": "runPythonCodeInRemoteEnvironment",
"arguments": {
"environmentId": "'"$ENVIRONMENT_ID"'",
"pythonCode": "import sys; print(f\"Python {sys.version}\")"
}
}
}'
تتضمن الاستجابة نتائج stdout الأوامر في الحقل ضمن structuredContent.
جرب مثالا أكثر تعقيدا:
curl -sS -X POST "$MCP_ENDPOINT" \
-H "Content-Type: application/json" \
-H "x-ms-apikey: $API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": "4",
"method": "tools/call",
"params": {
"name": "runPythonCodeInRemoteEnvironment",
"arguments": {
"environmentId": "'"$ENVIRONMENT_ID"'",
"pythonCode": "import math\nresults = {n: math.factorial(n) for n in range(1, 11)}\nfor k, v in results.items():\n print(f\"{k}! = {v}\")"
}
}
}'
الاتصال ب GitHub Copilot في كود VS
يمكنك توصيل خادم MCP الخاص بتجمع الجلسات ب GitHub Copilot لواجهة لغوية طبيعية لبيئة تنفيذ الكود.
أنشئ
.vscode/mcp.jsonفي مشروعك:{ "servers": { "aca-python-sessions": { "type": "http", "url": "<MCP_ENDPOINT>", "headers": { "x-ms-apikey": "<API_KEY>" } } } }استبدل
<MCP_ENDPOINT>و<API_KEY>بالقيم من الخطوات السابقة.تحذير
لا تلتزم مفاتيح واجهة برمجة التطبيقات MCP بالتحكم في المصدر. استخدم متغيرات البيئة أو مدير الأسرار في الإنتاج. أضف
.vscode/mcp.jsonإلى ..gitignoreافتح VS Code، ثم افتح دردشة Copilot في وضع الوكيل .
يظهر التحقق
aca-python-sessionsفي قائمة الأدوات.اختبر مع محفزات مثل:
- "تشغيل بيئة بايثون وحساب أول 20 رقما لفيبوناتشي"
- "تشغيل سكريبت بايثون يجلب https://api.github.com ويطبع رؤوس الردود"
تنظيف الموارد
عند الانتهاء من هذا الدرس، قم بإزالة الموارد التي أنشأتها لتجنب تحمل الرسوم.
az group delete --resource-group $RESOURCE_GROUP