Hi Turic, Mario
Connecting Azure Copilot to a custom MCP server means enabling Copilot (via Copilot Studio, Microsoft 365 Copilot agents, or Azure AI Foundry agents) to call backend tools exposed through the Model Context Protocol (MCP). In this architecture, Copilot acts as an MCP client, while your custom MCP server runs as a secure HTTPS service in Azure and exposes tools that Copilot can dynamically discover and invoke at runtime.
Microsoft Copilot does not directly call internal APIs or databases. Instead, Copilot communicates through MCP servers using the Power Platform connector infrastructure. MCP standardizes tool discovery, invocation, and response formats so that Copilot agents can reason about which tools to call without hard‑coding API contracts. This allows one MCP server to be reused across Copilot Studio agents, Microsoft 365 Copilot agents, Azure AI Foundry agents, and even VS Code Copilot.
Microsoft supports hosting custom MCP servers on Azure App Service, Azure Functions, Azure Container Apps, or Kubernetes, as long as the server exposes an HTTPS endpoint and supports the Streamable HTTP transport. Server‑Sent Events (SSE) are deprecated and no longer supported by Copilot Studio. The MCP server must remain continuously reachable over HTTPS so Copilot can fetch tool metadata and invoke tools on demand.
Copilot services run outside customer virtual networks. Because of this, Copilot cannot directly access private endpoints, private IPs, or internal load balancers. Any MCP server that Copilot connects to must be reachable through a public HTTPS endpoint. This is a critical architectural constraint and often misunderstood when designing “private‑only” deployments.
Recommended enterprise network architecture:
The recommended enterprise pattern is to expose the MCP server publicly while keeping sensitive dependencies private. This is commonly achieved by placing Azure API Management (APIM) in front of the MCP server. APIM provides a public HTTPS endpoint for Copilot while forwarding traffic into a VNet‑integrated backend. Web Application Firewall (WAF), IP restrictions, throttling, logging, and token validation can all be enforced at the APIM layer.
Alternative public endpoint pattern without APIM:
For simpler deployments, the MCP server can be hosted directly on Azure Functions or App Service with a public endpoint. In this pattern, security is enforced using OAuth 2.0 (Microsoft Entra ID) or API keys. Network isolation is achieved by ensuring that only downstream resources (databases, storage, internal APIs) remain private, while the MCP server itself is hardened and monitored.
MCP authentication options supported by Copilot:
Copilot Studio supports two authentication models when connecting to an MCP server. The first is API key authentication, which is simple and suitable for development or internal tools. The second, recommended for production, is OAuth 2.0 using Microsoft Entra ID. OAuth enables per‑user authorization, Conditional Access policies, audit logging, and on‑behalf‑of (OBO) flows for Microsoft 365 Copilot.
MCP server functional requirements:
A valid MCP server must support tool discovery, tool invocation, and structured JSON responses. Tools must include clear natural‑language descriptions, input schemas, and output schemas so Copilot can reason about them. Resources and prompts are optional, but tools are required. The server must implement the Streamable HTTP transport and expose a stable MCP endpoint path.
Copilot Studio connects to the MCP server:
In Copilot Studio, the MCP server is added through the “Add tool → Model Context Protocol” experience. During onboarding, you provide the MCP server URL, a description of its capabilities, and authentication details. Copilot Studio automatically discovers tools from the server and makes them available to the agent without manual schema mapping or connector definitions.
Copilot cannot access private endpoints directly, so MCP servers must be publicly reachable over HTTPS. Security is achieved through OAuth 2.0, APIM, and layered defense rather than network isolation alone. MCP enables clean separation between Copilot reasoning and enterprise business logic, making it the recommended integration model for Azure‑hosted tools.
I Hope this helps. Do let me know if you have any further queries.
Thank you!