Skip to content

Commit 8ed289a

Browse files
updated the main.bicep and main_custom.bicep and dockerfile for mcp
1 parent 5ddd89c commit 8ed289a

File tree

4 files changed

+2017
-1665
lines changed

4 files changed

+2017
-1665
lines changed

infra/main.bicep

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1413,6 +1413,189 @@ module containerApp 'br/public:avm/res/app/container-app:0.18.1' = {
14131413
name: 'APP_ENV'
14141414
value: 'Prod'
14151415
}
1416+
{
1417+
name: 'AZURE_COGNITIVE_SERVICES'
1418+
value: 'https://cognitiveservices.azure.com/.default'
1419+
}
1420+
{
1421+
name: 'AZURE_BING_CONNECTION_NAME'
1422+
value: ''
1423+
}
1424+
{
1425+
name: 'REASONING_MODEL_NAME'
1426+
value: ''
1427+
}
1428+
{
1429+
name: 'MCP_SERVER_ENDPOINT'
1430+
value: ''
1431+
}
1432+
{
1433+
name: 'MCP_SERVER_NAME'
1434+
value: 'MACAE MCP Server'
1435+
}
1436+
{
1437+
name: 'MCP_SERVER_DESCRIPTION'
1438+
value: ''
1439+
}
1440+
{
1441+
name: 'AZURE_TENANT_ID'
1442+
value: tenant().tenantId
1443+
}
1444+
{
1445+
name: 'AZURE_CLIENT_ID'
1446+
value: userAssignedIdentity!.outputs.clientId
1447+
}
1448+
{
1449+
name: 'SUPPORTED_MODELS'
1450+
value: ''
1451+
}
1452+
{
1453+
name: 'AZURE_AI_SEARCH_CONNECTION_NAME'
1454+
value: aiSearchConnectionName
1455+
}
1456+
{
1457+
name: 'AZURE_AI_SEARCH_INDEX_NAME'
1458+
value: ''
1459+
}
1460+
{
1461+
name: 'AZURE_AI_SEARCH_ENDPOINT'
1462+
value: searchService.outputs.endpoint
1463+
}
1464+
{
1465+
name: 'AZURE_AI_SEARCH_API_KEY'
1466+
value: ''
1467+
}
1468+
{
1469+
name: 'BING_CONNECTION_NAME'
1470+
value: ''
1471+
}
1472+
{
1473+
name: 'AZURE_STORAGE_BLOB_URL'
1474+
value: avmStorageAccount.outputs.serviceEndpoints.blob
1475+
}
1476+
{
1477+
name: 'AZURE_STORAGE_CONTAINER_NAME'
1478+
value: storageContainerName
1479+
}
1480+
{
1481+
name: 'AZURE_SEARCH_ENDPOINT'
1482+
value: searchService.outputs.endpoint
1483+
}
1484+
]
1485+
}
1486+
]
1487+
}
1488+
}
1489+
1490+
// ========== MCP Container App Service ========== //
1491+
// WAF best practices for container apps: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/azure-container-apps
1492+
// PSRule for Container App: https://azure.github.io/PSRule.Rules.Azure/en/rules/resource/#container-app
1493+
var containerAppMcpResourceName = 'ca-mcp-${solutionSuffix}'
1494+
module containerAppMcp 'br/public:avm/res/app/container-app:0.18.1' = {
1495+
name: take('avm.res.app.container-app.${containerAppMcpResourceName}', 64)
1496+
params: {
1497+
name: containerAppMcpResourceName
1498+
tags: tags
1499+
location: location
1500+
enableTelemetry: enableTelemetry
1501+
environmentResourceId: containerAppEnvironment.outputs.resourceId
1502+
managedIdentities: { userAssignedResourceIds: [userAssignedIdentity.outputs.resourceId] }
1503+
ingressTargetPort: 9000
1504+
ingressExternal: true
1505+
activeRevisionsMode: 'Single'
1506+
corsPolicy: {
1507+
allowedOrigins: [
1508+
'https://${webSiteResourceName}.azurewebsites.net'
1509+
'http://${webSiteResourceName}.azurewebsites.net'
1510+
]
1511+
}
1512+
// WAF aligned configuration for Scalability
1513+
scaleSettings: {
1514+
maxReplicas: enableScalability ? 3 : 1
1515+
minReplicas: enableScalability ? 2 : 1
1516+
rules: [
1517+
{
1518+
name: 'http-scaler'
1519+
http: {
1520+
metadata: {
1521+
concurrentRequests: '100'
1522+
}
1523+
}
1524+
}
1525+
]
1526+
}
1527+
containers: [
1528+
{
1529+
name: 'mcp'
1530+
//image: '${backendContainerRegistryHostname}/${backendContainerImageName}:${backendContainerImageTag}'
1531+
image: 'macaemcpacrdk.azurecr.io/macae-mac-app:t9'
1532+
//TODO: configure probes for container app
1533+
// probes: [
1534+
// {
1535+
// httpGet: {
1536+
// httpHeaders: [
1537+
// {
1538+
// name: 'Custom-Header'
1539+
// value: 'Awesome'
1540+
// }
1541+
// ]
1542+
// path: '/health'
1543+
// port: 8080
1544+
// }
1545+
// initialDelaySeconds: 3
1546+
// periodSeconds: 3
1547+
// type: 'Liveness'
1548+
// }
1549+
// ]
1550+
resources: {
1551+
cpu: '2.0'
1552+
memory: '4.0Gi'
1553+
}
1554+
env: [
1555+
{
1556+
name: 'MCP_HOST'
1557+
value: '0.0.0.0'
1558+
}
1559+
{
1560+
name: 'MCP_PORT'
1561+
value: '9000'
1562+
}
1563+
{
1564+
name: 'MCP_DEBUG'
1565+
value: 'false'
1566+
}
1567+
{
1568+
name: 'MCP_SERVER_NAME'
1569+
value: 'MACAE MCP Server'
1570+
}
1571+
{
1572+
name: 'MCP_ENABLE_AUTH'
1573+
value: 'true'
1574+
}
1575+
{
1576+
name: 'AZURE_TENANT_ID'
1577+
value: tenant().tenantId
1578+
}
1579+
{
1580+
name: 'AZURE_CLIENT_ID'
1581+
value: userAssignedIdentity!.outputs.clientId
1582+
}
1583+
{
1584+
name: 'AZURE_JWKS_URI'
1585+
value: 'https://login.microsoftonline.com/${tenant().tenantId}/discovery/v2.0/keys'
1586+
}
1587+
{
1588+
name: 'AZURE_ISSUER'
1589+
value: 'https://sts.windows.net/${tenant().tenantId}/'
1590+
}
1591+
{
1592+
name: 'AZURE_AUDIENCE'
1593+
value: 'api://${userAssignedIdentity!.outputs.clientId}'
1594+
}
1595+
{
1596+
name: 'DATASET_PATH'
1597+
value: './datasets'
1598+
}
14161599
]
14171600
}
14181601
]

0 commit comments

Comments
 (0)