You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/container-apps/mcp-choosing-azure-service.md
+41-15Lines changed: 41 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,12 @@
1
1
---
2
2
title: Choose an Azure service for your MCP server
3
-
description: Compare Azure Container Apps, App Service, and Azure Functions for hosting MCP servers and pick the best fit for your workload.
3
+
description: Compare Azure Container Apps, App Service, Azure Functions, and Azure Kubernetes Service (AKS) for hosting MCP servers and pick the best fit for your workload.
4
4
#customer intent: As a developer, I want to understand how Azure hosting options compare for MCP servers so that I can pick the right service for my workload.
5
5
ms.topic: product-comparison
6
6
ms.service: azure-container-apps
7
7
ms.collection: ce-skilling-ai-copilot
8
8
ms.custom: cross-service
9
-
ms.date: 02/19/2026
9
+
ms.date: 03/26/2026
10
10
author: craigshoemaker
11
11
ms.author: cshoe
12
12
ms.reviewer: cshoe
@@ -21,7 +21,7 @@ You can use several Azure services to host Model Context Protocol (MCP) servers.
21
21
22
22
## Hosting options overview
23
23
24
-
Azure provides four ways to host an MCP server. Each option targets a different mix of flexibility, simplicity, and isolation.
24
+
Azure provides five ways to host an MCP server. Each option targets a different mix of flexibility, simplicity, and isolation.
25
25
26
26
### Azure Container Apps (standalone)
27
27
@@ -39,22 +39,29 @@ Add an MCP endpoint to an existing or new web app. App Service supports code-bas
39
39
40
40
Map function triggers to MCP tools by using the [Azure Functions MCP extension](/azure/azure-functions/scenario-custom-remote-mcp-server). Azure Functions is optimized for stateless, event-driven tool execution with per-invocation pricing.
41
41
42
+
### Azure Kubernetes Service (AKS)
43
+
44
+
Deploy MCP servers as standard Kubernetes Deployments with HTTP ingress. AKS gives you full access to the Kubernetes API, so you can use Helm charts, custom networking (CNI, network policies), service mesh, GPU node pools, and [KEDA](/azure/aks/keda-about)-based autoscaling. Choose AKS when your team already manages a Kubernetes cluster or needs capabilities that go beyond what a managed container platform provides.
45
+
46
+
> [!NOTE]
47
+
> Container Apps is built on Kubernetes and provides a managed experience with less operational overhead. If you need direct Kubernetes API access, custom operators, or have an existing AKS investment, use AKS directly. For a broader comparison between these services, see [Comparing Container Apps with other Azure container options](compare-options.md).
48
+
42
49
## Compare hosting options
43
50
44
51
The following table summarizes the key differences between hosting options.
|**Language support**| Any (containerized) | Python and shell only | .NET, Python, Node.js, Java | .NET, Python, Node.js, Java |
50
-
|**MCP transport**| Streamable HTTP | JSON-RPC over HTTP | Streamable HTTP | MCP extension or self-hosted |
51
-
|**Authentication**| Built-in auth (Microsoft Entra ID) or custom | API key (`x-ms-apikey`) | App Service auth (Microsoft Entra ID) | Function keys or Microsoft Entra ID |
|**Language support**| Any (containerized) | Python and shell only | .NET, Python, Node.js, Java | .NET, Python, Node.js, Java | Any (containerized) |
57
+
|**MCP transport**| Streamable HTTP | JSON-RPC over HTTP | Streamable HTTP | MCP extension or self-hosted | Streamable HTTP |
58
+
|**Authentication**| Built-in auth (Microsoft Entra ID) or custom | API key (`x-ms-apikey`) | App Service auth (Microsoft Entra ID) | Function keys or Microsoft Entra ID | Microsoft Entra Workload Identity or custom |
59
+
|**Isolation**| Container-level | Hyper-V per session | App-level | Function-level | Pod and namespace-level |
60
+
|**Scaling**| Revision autoscale, scale-to-zero | Per-session, pool-managed | App Service Plan | Consumption or Premium plan | HPA, KEDA, Cluster Autoscaler |
61
+
|**Cold start**| Yes (mitigate with min replicas) | Subsecond (prewarmed pool) | Depends on plan | Yes (Consumption plan) | No (pods always running), or Yes with KEDA scale-to-zero |
62
+
|**Microservices**| Native (environments, Dapr) | No | Limited | Limited | Native (Kubernetes service discovery, service mesh) |
|**Pricing model**| Per vCPU-second, per GiB-second | Per session (consumption) | App Service Plan | Per execution | Per node (VM cost) + managed cluster fee |
58
65
59
66
## Choose by scenario
60
67
@@ -122,6 +129,21 @@ For interactive MCP clients, use a Functions Premium plan to avoid cold-start la
122
129
123
130
Container Apps environments support internal service discovery, Dapr sidecars, and managed identities for service-to-service calls. Deploy multiple MCP servers as separate container apps within the same environment and let them communicate securely without exposing internal endpoints to the internet. Container Apps gives you full control over the runtime and dependencies for each server, but you manage a Dockerfile and container images for each one.
124
131
132
+
### Host MCP servers on an existing AKS cluster
133
+
134
+
**Recommended: Azure Kubernetes Service (AKS)**
135
+
136
+
If your team already manages an AKS cluster, deploy MCP servers as Kubernetes Deployments with a Service and Ingress resource. AKS is a good fit when:
137
+
138
+
- You already run AI workloads on AKS and want to colocate MCP servers on the same cluster.
139
+
- You need GPU node pools for AI models running alongside your MCP servers.
140
+
- You require custom Kubernetes networking, such as Azure CNI, network policies, or a service mesh.
141
+
- You want [KEDA](/azure/aks/keda-about)-based autoscaling with fine-grained control over scaling triggers.
142
+
143
+
Use a standard Kubernetes Ingress controller (such as NGINX, Azure Application Gateway Ingress Controller, or Istio gateway) to expose your MCP server's streamable HTTP endpoint. Secure the endpoint with [Microsoft Entra Workload Identity](/azure/aks/workload-identity-overview) for service-to-service calls or custom authentication middleware.
144
+
145
+
For a hybrid scenario where you want the Container Apps managed experience on your own Kubernetes infrastructure, see [Azure Container Apps on Azure Arc](azure-arc-overview.md).
146
+
125
147
## Quick decision guide
126
148
127
149
Use these questions to narrow your choice:
@@ -130,6 +152,7 @@ Use these questions to narrow your choice:
130
152
1.**Do you already have a web app running on App Service?** Add MCP to your existing Azure App Service app.
131
153
1.**Do you need event-driven, per-invocation tool execution?** Use Azure Functions.
132
154
1.**Do you need full container control, custom languages, or a microservices architecture?** Use Azure Container Apps (standalone).
155
+
1.**Do you already run workloads on AKS and need full Kubernetes API access?** Use Azure Kubernetes Service (AKS).
133
156
1.**Not sure where to start?** Begin with Azure Container Apps (standalone), which is the most flexible default.
134
157
135
158
## Related content
@@ -140,3 +163,6 @@ Use these questions to narrow your choice:
140
163
-[Azure App Service overview](/azure/app-service/overview)
0 commit comments